Forum: Win32/Win64 API (native code)
Delphi
by Christian Seehase,
29. Jun 2006
Moin Mirco,
Result ist eine Variable, die der Compiler implizit zur Verfügung stellt, wenn Du eine Funktion deklarierst.
Sie hat den Typ des Rückgabewertes der Funktion.
Um den Typ zu ändern, müsstest Du also die Deklaration der Funktion ändern, und keine Variable mit diesem Namen deklarieren:
function EnumProc(StHandle: HWND; lines: TStrings): Longbool; stdcall;
// oder
Forum: Win32/Win64 API (native code)
Delphi
by Christian Seehase,
29. Jun 2006
Moin Mirco,
da es sich um ein Control handelt, dass zu einem anderen Prozess gehört, solltest Du mal
SendMessage(StHandle,WM_GETTEXT,101,lParam(@desc);
nehmen statt GetWindowText.
Vielleicht hilft das schon.
Forum: Win32/Win64 API (native code)
Delphi
by Christian Seehase,
29. Jun 2006
Moin Markus,
BOOL ist ein 32 Bit grosser Rückgabewert, genauso wie Longbool, wohingegen boolean nur ein Byte gross ist.
Ersatzweise kann man auch BOOL nehmen (in der Windows.pas ist BOOL als Longbool deklariert).
Je nachdem, welche Windows-Headerdatei man heranzieht, ist BOOL als int (windef.h) oder long (wtypes.h) deklariert.
Beide Typen entsprechen dem integer in Delphi.
Forum: Win32/Win64 API (native code)
Delphi
by Christian Seehase,
29. Jun 2006
Moin Mirco,
Du hast in der EnumProc eine wichtige Zeile vergessen:
Result := true;
Ich denke mal, dass Dir der Compiler auch ein Warning ausgegeben hat, dass der Rückgabewert unbestimmt ist.
Aller Voraussicht nach ist der Wert von Result gleich false, so dass nach dem ersten gefundenen Control abgebrochen wird.
BTW:
Forum: Win32/Win64 API (native code)
Delphi
by Christian Seehase,
29. Jun 2006
Moin Mirco,
wenn ich das richtig verstanden habe, so benötigtst Du doch eine bestimmte ComboBox.
Wenn nun die ID nicht eindeutig ist, so könntest Du mittels EnumChildWindows durch alle Bestandteile des Formulares durchgehen, und die Klasse prüfen. Stimmt die Klasse überein, noch die Position des Controls prüfen. Stimmt die mit dem gesuchten überein, den Text auslesen. Evtl. genügt natürlich...
Forum: Win32/Win64 API (native code)
Delphi
by Christian Seehase,
29. Jun 2006
Moin Mirco,
dann könntest Du noch versuchen die ComboBox, zusätzlich, über GetWindowPlacement zu identifizieren.
Die Position wird sich ja wohl nicht ändern.