![]() |
fremde Combobox mit CBN_SELCHANGE ändern
ich hatte versucht, eine fremde Combobox mit Sendmessage und CBN_SELCHANGE zu ändern.
Das funktioniert nur halb, der Eintrag wird geändert, aber das Programm reagiert nicht so, als wenn ein User die Auswahl treffen würde. Das Programm bekommt also nichts mit, von der Änderung. Was fehlt da noch? vielen Dank ! |
AW: fremde Combobox mit CBN_SELCHANGE ändern
Hey,
ich hab das selbe Problem. :cry: Deshalb: *PUSH*
Delphi-Quellcode:
Hier funktionierts anscheinend:
ItemIndex := SendMessage(wndCB, CB_FINDSTRING, -1, Integer(@AItemStr[1])); // Funzt
SendMessage(wndCB, CB_SETCURSEL, ItemIndex, 0); // Funzt // myList->GetParent()->SendMessage(WM_COMMAND, MAKEWPARAM(myList->GetDlgCtrlID(), CBN_SELCHANGE), LPARAM( myLyst->GetSafeHwnd() )); SendMessage(GetParent(wndCB), WM_COMMAND, MakeWParam(GetDlgCtrlID(wndCB), CBN_SELCHANGE), wndCB); // Wo liegt der Fehler? ![]() ![]() |
AW: fremde Combobox mit CBN_SELCHANGE ändern
Ich habs!
Delphi-Quellcode:
Jetzt müsste man nur noch rausbekommen wozu die 1000 da steht. Aber für meinen einmaligen Fall jetzt auch egal.
SendMessage(GetParent(wndCB),
WM_COMMAND, MakeWParam(1000, CBN_SELCHANGE), wndCB); Danke für die Aufmerksamkeit. :stupid: |
AW: fremde Combobox mit CBN_SELCHANGE ändern
Dann sag doch mal an was das entfernte Programm ist? Und vor allem ob es sich um eine echte Win32-Combobox handelt (kannste mit WinSpy gucken).
CBN_SELCHANGE ist übrigens eine Benachrichtigung, keine Fensternachricht im eigentlichen Sinn. Wie ich sehe haste das schonmal mitbekommen - denn die meisten Benachrichtigungen kommen via ![]() Die tausend kannste dir selber herausfinden wenn du die Doku liest ;) |
AW: fremde Combobox mit CBN_SELCHANGE ändern
Zitat:
Zitat:
Deshalb -> selber abgeleitet, Messages abgefangen + analysiert und raus kam die wparamlo magic number. |
AW: fremde Combobox mit CBN_SELCHANGE ändern
Zitat:
|
AW: fremde Combobox mit CBN_SELCHANGE ändern
ja, ok.
Ich habs jetzt nochmal spaßeshalber getestet und siehe da: es geht nicht mehr mit der 1000. Es schien zufall gewesen zu sein, dass es eine programmsitzung lang funktioniert hat. ich hab nochmal kurz drüber geschaut, da fliegen beim Itemchange noch einige CN_COMMAND-Msgs mit WParamHi=1en+9en und lparam=wndCB. wplo kA ... |
AW: fremde Combobox mit CBN_SELCHANGE ändern
Zitat:
Fenster arbeiten basierend auf Nachrichten und ein Fenster welches den Fokus hat, bekommt Nachrichten zu sehen die es nicht zu sehen bekommt wenn es nicht den Fokus hat. |
AW: fremde Combobox mit CBN_SELCHANGE ändern
Zitat:
Vorhin hab ich es mal in einem Timer senden lassen und währenddessen die CB fokussiert. Nichts. Aber ich hab jetzt einen Workaround der immer klappt:
Delphi-Quellcode:
So reichts mir jetzt eigentlich.
CBContent := getWinText(wndCB);
if CBContent = cStr1 then tmp := SendMessage(wndCB, CB_FINDSTRING, -1, Integer(@cStr2[1])) else if CBContent = cStr2 then tmp := SendMessage(wndCB, CB_FINDSTRING, -1, Integer(@cStr1[1])) else Exit; SendMessage(wndCB, CB_SETCURSEL, tmp, 0); PostMessage(wndCB, WM_KEYDOWN, VK_RETURN, MakeLong(0, MapVirtualKey(VK_RETURN, 0)) ); PostMessage(wndCB, WM_KEYUP, VK_RETURN, Cardinal(MakeLong(0, MapVirtualKey(VK_RETURN, 0))) or $C0000000); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz