Seite 1 von 2
Anwendung von außen über SendMessage() steuern?
Verfasst: 17.01.2009 23:56
von LordK
Hallo Zusammen,
kennte jemand ein gutes Beispiel oder ein Tutorial, wie man sein Programm von außen über die SendMessage Funktion steuern kann, wie es z.B. bei Winamp der Fall ist?
Also das einfach eine bestimmte Funktion im Programm aufgerufen wird, wenn man sendmessage() mit gewissend Parameter darauf aufruft?
Danke & Gruß
LordK
Verfasst: 18.01.2009 00:10
von ts-soft
Simples Beispiel:
Der Empfänger:
Code: Alles auswählen
#MyMessageToShowMsg = #WM_USER + 100
OpenWindow(0, #PB_Ignore, #PB_Ignore, 100, 100, "Empfänger", #PB_Window_SystemMenu)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow : Break
Case #MyMessageToShowMsg
Debug EventlParam()
Debug EventwParam()
MessageRequester("", "Message Erhalten")
EndSelect
ForEver
den zuerst starten, dann diesen Sender:
Code: Alles auswählen
#MyMessageToShowMsg = #WM_USER + 100
Define hWnd = FindWindow_(0, @"Empfänger")
If hWnd
PostMessage_(hWnd, #MyMessageToShowMsg, 10, 20)
EndIf
Ich hoffe damit findeste einen Anfang
Gruß
Thomas
Verfasst: 18.01.2009 00:15
von LordK
Wow,
hätte nicht gedacht, dass so so einfach ist
Vielen Dank

Verfasst: 18.01.2009 00:24
von ts-soft
Bei der #WM_USER aufpassen, das diese nicht evtl. schon von einem
Control (aus Lib oder DLL) verwendet wird.
Strings lassen sich so nicht übermitteln, dafür gibts #WM_COPYDATA
(auf MSDN oder in anderer API-Hilfe suchen)
Gruß
Thomas
Verfasst: 18.01.2009 00:35
von LordK
ts-soft hat geschrieben:Simples Beispiel:
Code: Alles auswählen
If hWnd
PostMessage_(hWnd, #MyMessageToShowMsg, 10, 20)
EndIf
Kann man diese 10 und 20, die als wparam und lparam übergeben werden auch noch irgendwie verarbeiten?
Ansonsten dachte ich ich könnte es analog Winamp machen und mit #WM_COMMAND und dann custom wparams vergeben.
Gruß
LordK
Verfasst: 18.01.2009 00:41
von ts-soft
#WM_COMMAND würde ich nicht nehmen, das kann Probleme mit
vorhandenen Messages geben.
Ansonsten verstehe ich Deine Frage nicht, meinste sowas?
Code: Alles auswählen
Enumeration
#minimierdich
#maximierdich
#beendedich
#setzebuttonhight
EndEnumeration
If hWnd
PostMessage_(hWnd, #MyMessageToShowMsg, #setzebuttonhight, 20)
EndIf
oder sowas:
Code: Alles auswählen
Import ""
PB_Gadget_SendGadgetCommand(hWnd, EventType)
EndImport
#MyMessageToShowMsg = #WM_USER + 100
OpenWindow(0, #PB_Ignore, #PB_Ignore, 100, 100, "Empfänger", #PB_Window_SystemMenu)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow : Break
Case #MyMessageToShowMsg
PB_Gadget_SendGadgetCommand(EventlParam(), EventwParam())
EndSelect
ForEver
Verfasst: 18.01.2009 00:49
von LordK
Ahh. Sorry...
Ich hatte den Code eben nur mal überflogen aber noch nicht getestet, daher ist mir das
irgendwie entgangen.
Damit hätten sich dann meine Fragen fürs erste beantwort.
Vielen Dank für dein super Unterstützung

Verfasst: 18.01.2009 00:52
von ts-soft
> Vielen Dank für dein super Unterstützung
gern geschehen
PS: Hab eben noch ein Beispiel im vorherigen Post abgeschickt, vielleicht
bringt dich das ja noch auf Ideen

Verfasst: 18.01.2009 01:20
von Little John
Thomas,
aus welcher Datei wird denn etwas importiert, wenn man als Dateiname nur "" angibt, wie in Deinem Beispiel?
Neugierig, Little John
Verfasst: 18.01.2009 01:25
von ts-soft
Little John hat geschrieben:Thomas,
aus welcher Datei wird denn etwas importiert, wenn man als Dateiname nur "" angibt, wie in Deinem Beispiel?
Neugierig, Little John
In diesem Falle aus Gadget.lib
Das geht natürlich nur mit Libs, die sowieso importiert werden, also wenn
hier kein Gadget erstellt wird im Source, dann gibts nen Fehler, aber dann
wäre der Import sowieso sinnlos
