Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programm über SendMessage kontrollieren (https://www.delphipraxis.net/85753-programm-ueber-sendmessage-kontrollieren.html)

Hybrid666 4. Feb 2007 12:43


Programm über SendMessage kontrollieren
 
Hi,

winamp hat eine funktion, das ich es mit jedem programm per command
Delphi-Quellcode:
SendMessage(getwinamphwnd,WM_COMMAND,40048,0);
steuern kann. ich wollte mal wissen wie ich so etwas in mein project einbauen kann, da ich es gerne auf gleiche weiße steuern können möchte...

MfG Hybrid666

dominikkv 4. Feb 2007 12:49

Re: Programm über SendMessage kontrollieren
 
hi
du hast doch den eigendlichen befehl schon geschrieben...
was du brauchst ist einfach nur die HWND von winamp... schau mal nach FindWindow
SpyEx und WinSpy können dir auch helfen

Hybrid666 4. Feb 2007 12:59

Re: Programm über SendMessage kontrollieren
 
nein nein, war scheiße erklär von mir...ich will ein project schreiben, das auf sendmessage reagiert, wie winamp, z.B. wenn ich was mit sendmessage an mein programm sende, so soll dies einach timer1 aktivieren, so war das gemeint...also das eine prozedur aus meinem programm gestartet wird wenn ein anderes programm eine sendmessage dahin schickt....

sirius 4. Feb 2007 13:09

Re: Programm über SendMessage kontrollieren
 
Na dann erzähl mal genauer was du willst. du hast im Prinzip zwei Möglichkeiten (wenn du VCL benutzt)

1. vorhadene Messages deiner Fenster/formulare nutzen
2. eigene Messages "definieren" und im Programm asuwerten

Hybrid666 5. Feb 2007 17:25

Re: Programm über SendMessage kontrollieren
 
also:

ich habe programm A und Programm B.

Programm A Sendet nun an Programm B

Delphi-Quellcode:
SendMessage(PROGRAMMBHWND,WM_COMMAND,1000,0);
und Programm B führt daraufhin die prozedure react_1000 aus...

wie realisiere ich das?

sirius 5. Feb 2007 17:38

Re: Programm über SendMessage kontrollieren
 
Da definierst du dir einfach erstmal eine eigene Message
Delphi-Quellcode:
const WM_myMSG=WM_USER+1
Ab WM_USER ist dein Bereich, da kannst du dich austoben und eigene Messages definieren, da reagiert dann auch kein anderes Control drauf.

Bekommen und auswerten tust du diese Message so:
Delphi-Quellcode:
//Programm A

type TForm1=class(TForm)
       //...
       private
         procedure irgendetwas(var Msg:TMessage);message WM_myMSG;
end;

//...

procedure TForm1.irgendetwas(var Msg:TMessage);
begin
  //hier hast du jetzt lparam und wparam
  if msg.LParam= //...
  if msg.Wparam

  msg.result:=712; //hier kannst du irgendetwas zurückgeben
end;
Eine Message an TForm1 verschicken geht mit:
Delphi-Quellcode:
  //Programm B (hier muss das Handle von Tform1 aus Programm A bekannt sein)

  r:=sendmessage(Handle,WM_user+1,0,0); //kannst natürlich hier auch für wm_user+1 eine Konstante festlegen
  //in r steht jetzt das msg.result
Achtung: Bei sendmessage wartet Programm B bis A fertig ist mit dem abarbeiten der Funktion. Wenn das nicht gewünscht ist nimm Postmessage (dann kriegst du aber kein result)

shmia 5. Feb 2007 18:42

Re: Programm über SendMessage kontrollieren
 
Zitat:

Zitat von Hybrid666
...ich will ein project schreiben, das auf sendmessage reagiert

Microsoft vor vielen Jahren DDE (Dynamik Data Exchange) erfunden um die Fernsteuerung von Programmen in stabile Bahnen zu führen.
DDE ist inzwischen veraltet und durch Active-X / Automatisierung abgelöst.
Also stehen nun 3 Techniken für die Fernsteuerung zur Verfügung:
1.) über userdefinierte Windows Messages
2.) DDE
3.) ActiveX
Willst du wirklich die schlechteste Technik benützen?

Hybrid666 9. Feb 2007 15:21

Re: Programm über SendMessage kontrollieren
 
wenn du mir die ActiveX variante erklären könntest dann würde ich auch eine andere nehmen ;)

MfG

P.S.: Ein tut tuts auch :P

shmia 9. Feb 2007 18:37

Re: Programm über SendMessage kontrollieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Hybrid666
wenn du mir die ActiveX variante erklären könntest...

ActiveX ist nicht ganz einfach; am Besten ein Buch kaufen.
Aber ich hab dir mal eine ganz einfache Anwendung in den Anhang gepackt.
Kurz-Anleitung
Projekt kompilieren und starten.
Dann die Scriptdatei testscript.vbs doppelklicken.

Scorpion 11. Mär 2007 19:35

Re: Programm über SendMessage kontrollieren
 
Hi...

@sirius:

Wie kann ich denn Text senden, also nen String z.B. ?

Vielen Dank


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr.
Seite 1 von 3  1 23      

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