WinAPI Library (Snippets) (1163 Beispielcodes)

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
D.J.Peters
Beiträge: 87
Registriert: 28.11.2010 13:07
Computerausstattung: P4 2x3.2GKz.1GB WIXP 32Bit NVIDEA GT240 1GB DDR3, AMD XP 1.8GHz Linux 32Bit NVIDEA GT240 TIi3200
Wohnort: Germany
Kontaktdaten:

Re: WinAPI Library (Snippets) (702)

Beitrag von D.J.Peters »

@RSBasic

WoW da war aber Jemand sehr fleisig, tolle Sammlung.

10 points goes to "RSBasic"

DJ
PS. meine vielen Fehler der Rechtschreibung auf dem Forum könnt Ihr gerne ignorieren.
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: WinAPI Library (Snippets) (702)

Beitrag von Bisonte »

Ich hätte da auch noch was ...

PB Interne Window Nummer durch OS-Handle ermitteln:

Code: Alles auswählen

EnableExplicit

Procedure GetWindowPBID(WindowID)
  Protected Result = -1
  If IsWindow_(WindowID)
    Result = GetProp_(WindowID,"PB_WINDOWID") - 1
  EndIf
  ProcedureReturn Result ; wenn -1 dann kein PB erstelltes Window oder nicht vorhanden
EndProcedure

Define WindowID

WindowID = OpenWindow(17,0,0,300,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)

If WindowID
  
  MessageRequester("","Die PB-WindowNummer lautet : "+Str(GetWindowPBID(WindowID)))
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  
EndIf
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (702)

Beitrag von RSBasic »

@D.J.Peters
Danke, freut mich. ;)

@Bisonte
Danke für deinen Code. :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: WinAPI Library (Snippets) (702)

Beitrag von ts-soft »

@Bisonte

Ich schlage folgende Erweiterung vor:

Code: Alles auswählen

Procedure GetWindowPBID(WindowID)
  Protected Result = -1
  If IsWindow_(WindowID)
    Result = GetProp_(WindowID,"PB_WINDOWID") - 1
  ElseIf IsWindow_(WindowID(WindowID))
    Result = WindowID
  EndIf
  ProcedureReturn Result ; wenn -1 dann kein PB erstelltes Window oder nicht vorhanden
EndProcedure
Grund: Bei Verwendung von #PB_Any kommen viele durcheinander, so wird auch in diesem Falle der richtig Wert
ermittelt.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (702)

Beitrag von RSBasic »

Ich hab zwei weitere Bezeichnungen für GetProp_() gefunden:
-PB_ToolBar_ID
-PB_StatusBar_ID

PB_ToolBar_ID:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateToolBar(128,WindowID(0))
    ToolBarStandardButton(0,#PB_ToolBarIcon_New)
    
    MessageRequester("","ToolBar-Nummer: "+Str(GetProp_(WindowID(0),"PB_ToolBar_ID")),#MB_ICONINFORMATION)
    
  EndIf
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
PB_StatusBar_ID:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateStatusBar(128,WindowID(0))
    AddStatusBarField(#PB_Ignore)
    
    MessageRequester("","StatusBar-Nummer: "+Str(GetProp_(WindowID(0),"PB_StatusBar_ID")-1),#MB_ICONINFORMATION)
    
  EndIf
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: WinAPI Library (Snippets) (702)

Beitrag von Bisonte »

@ts-soft: klingt einleuchtend ;)
@RSBasic: Die Dinger hab ich vor ein paar Minuten auch entdeckt und wollt sie grade posten ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: WinAPI Library (Snippets) (702)

Beitrag von Bisonte »

Ok... dann hier die "Deluxe" Variante :mrgreen:

Code: Alles auswählen

#PB_ID_Window    = 1
#PB_ID_Gadget    = 2
#PB_ID_ToolBar   = 3
#PB_ID_StatusBar = 4

Procedure GetPBID(ID, Type = #PB_ID_Window)
  
  Protected Result = -1, Properties.s = "PB_WINDOWID,PB_ID,PB_ToolBar_ID,PB_StatusBar_ID"
  
  If Type=>#PB_ID_Window And Type<=#PB_ID_StatusBar
    If IsWindow_(ID)
      Debug StringField(Properties,Type,",")
      Result = GetProp_(ID,StringField(Properties,Type,","))
      If Type = #PB_ID_Window Or Type = #PB_ID_StatusBar
        Result - 1
      EndIf
    Else
      Select Type
        Case #PB_ID_Window
          If IsWindow(ID) : Result = ID : EndIf
        Case #PB_ID_Gadget
          If IsGadget(ID) : Result = ID : EndIf
        Case #PB_ID_StatusBar
          If IsStatusBar(ID) : Result = ID : EndIf
        Case #PB_ID_ToolBar 
          If IsToolBar(ID) : : Result = ID : EndIf
      EndSelect
    EndIf
  EndIf

  ProcedureReturn Result ; wenn -1 dann kein PB erstelltes Window oder nicht vorhanden
  
EndProcedure

EnableExplicit

Define EventID

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateToolBar(128,WindowID(0))
    ToolBarStandardButton(0,#PB_ToolBarIcon_New)
  EndIf
  If CreateStatusBar(112,WindowID(0))
    AddStatusBarField(#PB_Ignore)
  EndIf
  ButtonGadget(1,100,100,100,20,"Huhu")
  
  Debug GetPBID(WindowID(0), #PB_ID_Window)
  Debug GetPBID(WindowID(0), #PB_ID_ToolBar)
  Debug GetPBID(WindowID(0), #PB_ID_StatusBar)
  Debug GetPBID(GadgetID(1), #PB_ID_Gadget)
  Debug GetPBID(0, #PB_ID_Gadget) ; Kein erstelltes Gadget
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (747)

Beitrag von RSBasic »

WinAPI Library 1.2.9 wurde veröffentlicht (45 neue Beispielcodes)

Neue Programmfunktion: Als erstes möchte ich sagen, dass im Programm was hinzugefügt wurde und zwar wenn man (nach dieser Aktualisierung natürlich) auf "Aktualisieren" klickt. Es wird nun zuerst überprüft, ob ein neues Update vorhanden ist, ohne dass das Programm selbst beendet werden muss. Erst wenn ein neues Update vorhanden ist, dann wird das Programm beendet.

Hinzugefügt:


Arbeitsspeicher: Benutzer: ButtonGadget: CheckBoxGadget: Desktop: Dialoge: ExplorerListGadget: Gadgets: HyperLinkGadget: Konsole: ListIconGadget: Menü: OpenWindow: OptionGadget: Prozesse: Sonstige: StatusBar: StringGadget: ToolBar:
Online: http://www.rsbasic.de/winapi-library
Offline: Updaten ;)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: WinAPI Library (Snippets) (747)

Beitrag von Nino »

RSBasic hat geschrieben:WinAPI Library 1.2.9 wurde veröffentlicht (45 neue Beispielcodes)
Klasse! Vielen Dank! :allright:
RSBasic hat geschrieben:ButtonGadget:
Das funktioniert bei mir nicht (PB 4.60 unter Windows XP 32 Bit): Ich sehe gar keinen Button, mit oder ohne XP-Skin-Unterstützung. Wenn ich in der Definition des Buttons

Code: Alles auswählen

, #BS_COMMANDLINK
lösche, dann sehe ich ihn, aber nach Anklicken kommt es zu keiner Farbänderung.

Grüße, Nino
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (747)

Beitrag von RSBasic »

Nino hat geschrieben:
RSBasic hat geschrieben:ButtonGadget:
Das funktioniert bei mir nicht (PB 4.60 unter Windows XP 32 Bit): Ich sehe gar keinen Button, mit oder ohne XP-Skin-Unterstützung. Wenn ich in der Definition des Buttons

Code: Alles auswählen

, #BS_COMMANDLINK
lösche, dann sehe ich ihn, aber nach Anklicken kommt es zu keiner Farbänderung.
Ich vergaß, dazu zu schreiben, dass dieser Code nur ab Vista funktioniert:
MSDN - BS_COMMANDLINK hat geschrieben:Windows Vista and Version 6.00. Creates a command link button that behaves like a BS_PUSHBUTTON style button, but the command link button has a green arrow on the left pointing to the button text. A caption for the button text can be set by sending the BCM_SETNOTE message to the button.
\\Edit:
Ich habs angepasst, damit man jetzt sieht, dass dieser Code nur ab Vista funktioniert.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten