AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FindWindow

Ein Thema von derseitzer · begonnen am 3. Feb 2017 · letzter Beitrag vom 8. Feb 2017
 
t.roller
(Gast)

n/a Beiträge
 
#7

AW: FindWindow

  Alt 4. Feb 2017, 06:35
Statt jedes einzelne Objekt zu suchen, ist es ausreichend, nur das Empfänger-Window zu suchen und dem die Messages zu senden.
Delphi-Quellcode:
SENDER:

var
  Form1: TForm1;
  aWnd : HWND;

const
    WM_MY_MESSAGE = WM_USER + 10; //1034

implementation

{$R *.dfm}

procedure TForm1.bnMINIMIZEClick(Sender: TObject);
begin if aWnd<>0 then Postmessage(aWnd,WM_SYSCOMMAND, SC_MINIMIZE,0); end;

procedure TForm1.bnRESTOREClick(Sender: TObject); // SC_RESTORE
begin
aWnd := FindWindow(NIL, 'WindowProc');
  if aWnd<>0 then
  BEGIN
      Postmessage(aWnd,WM_SYSCOMMAND, SC_RESTORE,0);
      SetForegroundwindow(aWnd);
      SendMessage(aWnd, WM_SYSCOMMAND, SC_RESTORE, aWnd);
  END;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
SendMessage(aWnd, WM_MY_MESSAGE, 123, 1);
SendMessage(aWnd, WM_MY_MESSAGE, 123, 2);
SendMessage(aWnd, WM_MY_MESSAGE, 123, 3);
SendMessage(aWnd, WM_MY_MESSAGE, 123, 4);
SendMessage(aWnd, WM_MY_MESSAGE, 123, 5);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin aWnd := FindWindow(NIL, 'WindowProc'); end; //sucht Empfänger

procedure TForm1.bnCLOSEClick(Sender: TObject);
begin
if aWnd<>0 then Postmessage(aWnd,WM_SYSCOMMAND,SC_CLOSE,0); //Close Empfänger
Application.Terminate; //Close Sender
end;

end.
//---------------------------------------------------------
EMPFÄNGER:

  protected
    procedure WndProc(var Message: TMessage); override;
  end;

var
  Form1: TForm1;

const
    WM_MY_MESSAGE = WM_USER + 10; //1034

implementation

{$R *.dfm}

procedure TForm1.WndProc(var Message: TMessage);
begin
  inherited;
  case Message.Msg of
    WM_MY_MESSAGE: BEGIN
      case Message.LParam of
      1: PostMessage(Button1.Handle, BM_CLICK, 0, 0);
      2: PostMessage(Button2.Handle, BM_CLICK, 0, 0);
      3: PostMessage(Button3.Handle, BM_CLICK, 0, 0);
      4: PostMessage(Button4.Handle, BM_CLICK, 0, 0);
      5: PostMessage(Button5.Handle, BM_CLICK, 0, 0);
      end;
    END;
  end;
end;

procedure TForm1.bnCLEARClick(Sender: TObject);
begin Memo1.clear; end;

procedure TForm1.Button1Click(Sender: TObject);
begin Memo1.Lines.Add('B1'); end;

procedure TForm1.Button2Click(Sender: TObject);
begin Memo1.Lines.Add('B2'); end;

procedure TForm1.Button3Click(Sender: TObject);
begin Memo1.Lines.Add('B3'); end;

procedure TForm1.Button4Click(Sender: TObject);
begin Memo1.Lines.Add('B4'); end;

procedure TForm1.Button5Click(Sender: TObject);
begin Memo1.Lines.Add('B5'); end;
Angehängte Dateien
Dateityp: zip WndProcTest.zip (1,69 MB, 15x aufgerufen)

Geändert von t.roller ( 4. Feb 2017 um 07:52 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:16 Uhr.
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