Site Announcements

Liebe Gäste des Forums, wir freuen uns, dass ihr zu uns gelangt seid.
Windev ist eine sehr umfangreiche und starke Entwicklerumgebung für Anwendungen unter Windows, Linux und Internetapplikationen inkl. Mobile.
Hier sind Antworten und Anregungen dazu zu finden!
Möchtest du aktiv mitschreiben? Dann melde dich durch Klick auf den Text "Registrieren" hier rechts oberhalb an.

Nachricht von einem anderen Windows Programm empfangen?

Wichtiges und Neues

Nachricht von einem anderen Windows Programm empfangen?

Beitragvon satmax » 10. November 2016, 17:54

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).
satmax
Member
 
Beiträge: 165
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Has thanked: 0 time
Have thanks: 1 time

Re: Nachricht von einem anderen Windows Programm empfangen?

Beitragvon Herbert » 10. November 2016, 22:15

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/library/windows/desktop/ms644944(v=vs.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...
Herbert
Site Admin
 
Beiträge: 357
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Has thanked: 5 times
Have thanks: 3 times

Re: Nachricht von einem anderen Windows Programm empfangen?

Beitragvon satmax » 11. November 2016, 07:14

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

Code: Alles auswählen
Event("mytrace","*.*",0) // WM_USER WM_COPYDATA


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...
satmax
Member
 
Beiträge: 165
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Has thanked: 0 time
Have thanks: 1 time

Re: Nachricht von einem anderen Windows Programm empfangen?

Beitragvon satmax » 11. November 2016, 07:59

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.
satmax
Member
 
Beiträge: 165
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Has thanked: 0 time
Have thanks: 1 time


Zurück zu Informationen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron