Einzelnen Beitrag anzeigen

Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Fenster Handle ermitteln ohne Application.Title

  Alt 23. Jun 2008, 13:24
Um das ganze nochmal näher zu erläutern:
Delphi-Quellcode:

const WM_RESPONSE = WM_USER + 6; //WM_USER + beliebig

type
TfrmMain = class(TForm)
  procedure frmMainCreate(Sender: TObject);
protected
  procedure WndProc(var Message: TMessage); override;
  procedure ResponseMessage(var Message: TMessage); message WM_RESPONSE;
private
  fOtherHandle: HWnd;
end;

implementation

var MySpecialMessage: Cardinal;

procedure TfrmMain.frmMainCreate(Sender: TObject);
begin
  HandleNeeded; //wir brauchen ein Fenster-Handle
  MySpecialMessage := RegisterWindowMessage('Eindeutige String-Konstante');
  SendMessage(HWND_BROADCAST, MySpecialMessage, Integer(Handle), WM_RESPONSE);
  if fOtherHandle <> 0 then
  begin
    //es gibt eine andere Instanz, in dieser hat das Hauptfenster das Handle fOtherHandle
  end;
end;

procedure TfrmMain.WndProc(var Message: TMessage);
begin
  if Message.Msg = MySpecialMessage then
    SendMessage(Message.WParam, Message.LParam, Handle, 0)
  else
    inherited;
end;

procedure TfrmMain.ResponseMessage(var Message: TMessage);
begin
  fOtherHandle := Message.WParam;
end;
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat