Seite 1 von 1
Nachricht von einem anderen Windows Programm empfangen?
Verfasst: 10. November 2016, 17:54
von satmax
Wie kann ich eine Windows Nachricht (postmessage()) von einem anderen Windows Programm, kein Windev Programm empfangen?
Unter Xbase++ hatte ich da eine callback function (aus ot4xb).
Re: Nachricht von einem anderen Windows Programm empfangen?
Verfasst: 10. November 2016, 22:15
von Herbert
Huh, du stellst Fragen
Also, Postmessage schickt irgendwann etwas. Du bedienst die MessageQueue. Also musst diese Message Queue abfragen gehen...
Waitmessage . GetMessage oder Peekmessage (Achtung TranslateMessage folgt da meistens) sind die Reaktionen darauf (MSDN, also API).
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Nach Suche in den Windev-Foren stellt sich heraus, dass Windev selber diese Funktionen nicht "kennt", also mit API angesprochen werden müssen. Nicht einfach...
Re: Nachricht von einem anderen Windows Programm empfangen?
Verfasst: 11. November 2016, 07:14
von satmax
Also das Abfragen schein doch einfach zu sein (wie bisher fast alles unter WD):
Code: Alles auswählen
Event("mytrace","*.*",WM_COPYDATA) // WM_USER WM_COPYDATA
MyTrace() wird praktisch als "callback" Funktion aufgerufen. Mit
erhält man alle Meldungen.
Jetzt geht es aber weiter, Ich muss meinem WD Fenster als "ClassName" eine GUID vergeben, unter Xbase:
Code: Alles auswählen
local oCls := WNDCLASS():New() // WNDCLASS gwst structure object
local hReceiverClass // Class Handle of the receiver window
oCls:lpfnWndProc := _callback_ReceiverWndProc() // xppcbk ReceiverWndProc.cbk -> .obj
oCls:hInstance := AppInstance() // Instance handle of the EXE
oCls:lpszClassName := WND_CLASSNAME_WATCHDOG // autogenerated with UUIDGen.exe
hReceiverClass := LoWord(DllExecuteCall( _tfpRegisterClass_ , oCls:_lock_() ))
oCls:_unlock_() // release structure memory and copy content to a character buffer
oCls:lpszClassName := NIL // free dynamic heap memory for the DYNSZ member
hWndReceiver := DllExecuteCall( _tfpCreateWindowEx_ ,;
0 ,; // No exStyle
hReceiverClass,;// Window Class handle
0,; // No Title 0
0xC40000,; // dwStyle WS_OVERLAPED
0,0,0,0,; // x,y,cx,cy
0,; // hWndParent
0,; // hMenu
AppInstance(),;
0) // empty LPParam
Das könnte jetzt etwas schwierig werden...
Re: Nachricht von einem anderen Windows Programm empfangen?
Verfasst: 11. November 2016, 07:59
von satmax
Im Prinzip fehlt mir die Struktur
Code: Alles auswählen
typedef struct tagWNDCLASS {
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
} WNDCLASS, *PWNDCLASS;
unter Windev.