Fenster eines Gadgets ermitteln (crossplatform)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Fenster eines Gadgets ermitteln (crossplatform)

Beitrag von Bisonte »

Hallo...

Wie kann man (am besten mit PB Nativen Mitteln), herausbekommen, auf welchem
Fenster sich ein Gadget befindet ?

Unter Windows bekomme ich das mit GetParent_ hin, aber bei den anderen Systemen
stehe ich leider im Dunkeln.

Könnte mir jemand meine Wissenslücke füllen ?

Edith sagt : Sinn und Zweck ist es, einige WindowsAPI Funktionen für andere OS umzubauen...
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
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: Fenster eines Gadgets ermitteln (crossplatform)

Beitrag von ts-soft »

Code: Alles auswählen

CompilerIf #PB_Compiler_OS = #PB_OS_Windows
  Import ""
CompilerElse
  ImportC ""
CompilerEndIf
  PB_Object_GetThreadMemory(MemoryID)
  PB_Gadget_Globals.i
EndImport

Procedure GetGadgetParent()
  Protected *Globals = PB_Object_GetThreadMemory(PB_Gadget_Globals)
  ProcedureReturn PeekI(*Globals)
EndProcedure
Gruß

Thomas
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
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Fenster eines Gadgets ermitteln (crossplatform)

Beitrag von Bisonte »

Vielen Dank.

Aber zwei Fragen hab ich noch....

1. Gibt es dann die WindowID oder die PB Interne Id ?

2. Woher weisst Du das ?
Also damit meine ich, woher kennst du die Import Geschichten : wie die Funktionen heissen,
was für Parameter und wofür sie gut sind ?
Das hab ich schon öfter gesehen, und war immer wieder verblüfft...
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
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: Fenster eines Gadgets ermitteln (crossplatform)

Beitrag von ts-soft »

zu 1: Gibt das OS Handel zurück.
zu 2: Steht alles im SDK sowie in den mitgelieferten Libs
(weiteres z.B. http://www.realsource.de/index.php/down ... or-pb-libs )
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
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Fenster eines Gadgets ermitteln (crossplatform)

Beitrag von Bisonte »

Wieder Danke.

Ok, die Fragerei hört nicht auf ;)

Das PBLIBTool zeigt mir die Namen diverser Funktionen an... aber mit dem sil.exe
bekomm ich, ausser mit dem beiliegendem Bild zu sehendem Suchstring, keine Ausgabe.

Wobei ich mich auch noch frage... SDK. Ist damit der Ordner im PB-Installationsverzeichnis
gemeint, oder ein extra herunterzuladenes Teil ?
Weil im PB-SDK Ordner finde ich so im groben nichts, womit man auf Parameter einzelner,
nicht öffentlichen PB-Libfunktionen schliessen könnte. (oder schubs mich mal drauf ;) )
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
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: Fenster eines Gadgets ermitteln (crossplatform)

Beitrag von ts-soft »

SDK - Ordner ist richtig, da sind eine Menge Informationen enthalten, wenn man es mal richtig
durchackert und die notwendigen C-Grundkenntnisse hat. Die Parameter zu ermitteln ist mehr
eine Mischung aus Logik und Try- & Error. Die meisten Dinge hat edel der hallodri entdeckt :wink:
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
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Fenster eines Gadgets ermitteln (crossplatform)

Beitrag von Bisonte »

Was ich gerade entdeckt habe:

Die Funktion GetGadgetParent() gibt nicht die WindowID des Fensters zurück,
auf dem es sich befindet, sondern die aktuelle GadgetListe.
Also wenn ich mit UseGadgetList() auf einem anderen Fenster Gadgets erstelle,
und nicht wieder mit UseGadgetList() zurückschwenke, wird immer noch das 2.
Fenster mit WindowID ausgegeben.

Sollte man diese Funktion des Verständnisses wegen besser umbenennen in
GetWindowGadgetList() ?

Also beim Erstellen eines Gadgets ist das vollkommen ausreichend. Es muss
nur die ID mit dem Gadget gespeichert werden.

Der Name ist halt nur verwirrend.
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​​
Antworten