Stringgadget und Listicon Inhalt/e ermitteln

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Stringgadget und Listicon Inhalt/e ermitteln

Beitrag von X0r »

Hallo!
Ich will für eines meiner Programme einen Pluginloader schreiben und wollte wissen, wie ich den Inhalt eines stringgadgets und die Inhalte eines listicon gadgets über die WinAPI ermitteln kann.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

String Gadget: #WM_GETTEXT
ListIcon Gadget: #LVM_GETITEM / #LVM_GETITEMTEXT
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

SendMessage_(sg,#wm_settext,0,text$)
Funktioniert super.

Debug SendMessage_(sg,#wm_gettext,0,0)
Debugger: "0"

Mache ich was falsch?
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

Beitrag von ts-soft »

>> Mache ich was falsch?
Ja, ich nehme mal an, das ein Buffer und dessen Länge gebraucht wird, um
den Text speichern zu können, hab aber nicht nachgeschaut, kannste ja auch
mal selber suchen.
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
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Ok, habs durch logisches denken(!) herausgefunden:

Global memory=AllocateMemory(1000)
SendMessage_(GadgetID(sg),#wm_gettext,SendMessage_(GadgetID(sg),#wm_gettext,SendMessage_(GadgetID(sg),#wm_gettextlength,0,0),memory) memory)
Debug PeekS(memory)
FreeMemory(memory)

Danke für den Tipp.


Eine Frage: Ist es eigentlich möglich, von einer DLL aus das handle "zu ermitteln", ohne dass ich das handle der DLL übergeben muss?
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

hae ... Warum holst du dir 2 mal den Text ?

Code: Alles auswählen

  len     = SendMessage_(GadgetID(sg),#WM_GETTEXTLENGTH,0,0)
  memory  = AllocateMemory(len)
  len2    = SendMessage_(GadgetID(sg),#WM_GETTEXT,len, memory) 
  
  If len <> len2
    Debug "Text nicht vollstaendig" 
  EndIf 
Was fuern "handle" ?
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

hae ... Warum holst du dir 2 mal den Text ?

Code:

len = SendMessage_(GadgetID(sg),#WM_GETTEXTLENGTH,0,0)
memory = AllocateMemory(len)
len2 = SendMessage_(GadgetID(sg),#WM_GETTEXT,len, memory)

If len <> len2
Debug "Text nicht vollstaendig"
EndIf
Edit:

Ich habe mich oben vertippt, meinte:
SendMessage_(GadgetID(sg),#wm_gettext,SendMessage_(GadgetID(sg),#wm_gettextlength,0,0),memory)


>Was fuern "handle" ?
das vom stringgadget?! Oder ist handle hier der falsche Begriff?
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

Beitrag von ts-soft »

Forge hat geschrieben:
>Was fuern "handle" ?
das vom stringgadget?! Oder ist handle hier der falsche Begriff?
EnumChildWindow, FindWindow, GetClassName usw., such Dir aus, was Du
brauchst um das Handle des Stringgadgets zu finden, übergeben ist
einfacher!
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
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Wie macht man das eigentlich generell bei Plugin-Unterstützung?
Übergibt man der Funktion der DLL das handle oder darf der Plugin-Programmierer das selbst finden?
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

Beitrag von ts-soft »

Forge hat geschrieben:Wie macht man das eigentlich generell bei Plugin-Unterstützung?
Generelle Lösungen kenne ich nicht, immer das was sich anbietet!
Forge hat geschrieben: Übergibt man der Funktion der DLL das handle oder darf der Plugin-Programmierer das selbst finden?
Mach wie Du es am einfachsten findest, aber übergeben würde ich es schon,
ohne suchen. Empfehlenswert wäre: SetEnvirontvariable, so hat die DLL
gleich alles Parat, ohne das extra was übergeben wurde.
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
Antworten