Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Sendmessage an andere Anwendung... (https://www.delphipraxis.net/131605-sendmessage-andere-anwendung.html)

erich.wanker 27. Mär 2009 10:29


Sendmessage an andere Anwendung...
 
Hallo Leute,

ich hab ein kleines Problem mit "sendmessage" und dem Handle der Fremdanwendung..

Wenn ein andere Programm eine TrayIcon Anwendung ist -
oder minimiert in der Taskbar liegt - finde ich das Fensterhandle nicht mehr.

Wenn das Programm wsmazimized oder wsnormal ist - funktioniert alles..

Kann mir jemand helfen, den Fensterhandle für TrayIconApplication und für eine minimierte Anwendung zu finden ?
Ich weiß: Fenstername, TForm-name und Exe-Name der Anwendung...

vielen Dank

Erich Wanker



Beispiel Sendmessage:
Delphi-Quellcode:
procedure TForm2.SpeedButton1Click;
var

  aCopyData      : TCopyDataStruct;
  p              : PChar;

begin
  p := PChar('Hello World');        

  with aCopyData do begin
    dwData := 1;          
    cbData := StrLen(p) + 1;              
    lpData := p;
  end;

  SendMessage(FindWindow(PChar('TForm1'), nil), WM_COPYDATA, Longint(Handle),Longint(@aCopyData));

end;

Beispiel "Fremdanwendung":
Delphi-Quellcode:
procedure TForm1.WMCopyData(var Msg: TWMCopyData);
var x                    :Integer;
    gl_st_CopyDataStruct :String;
begin



    StrLCopy(gl_st_CopyDataStruct, Msg.CopyDataStruct.lpData, Msg.CopyDataStruct.cbData);
    x                   := (Integer(Msg.CopyDataStruct.dwData));

    application.BringToFront;
    application.ShowMainForm:=true;
    Form1.WindowState:= wsmaximized;
    ForceForegroundWindow(application.Handle);
   
    showmessage(gl_st_CopyDataStruct);
end;

erich.wanker 27. Mär 2009 11:01

Re: Sendmessage an andere Anwendung...
 
..JETZT hab ich´s endlich ;-)

Delphi-Quellcode:
type
  TForm2 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
    procedure CreateParams(var Params:TCreateParams); override;
  end;
....


Delphi-Quellcode:
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.WinClassName := 'mein_Fenster_Handle';
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz