Einzelnen Beitrag anzeigen

TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Fenster Handle ermitteln ohne Application.Title

  Alt 24. Jun 2008, 10:27
Ich habe das ganze jetzt mal mit Windows Messages versucht, scheint auch alles zu klappen.

Projekt Datei:
Delphi-Quellcode:
program tab;

uses
  Forms,
  Windows,
  uMain in 'uMain.pas{frmMain},
  uGlobal in 'uGlobal.pas',
  ...;

{$R *.res}

var
  //dwMessage : DWORD; in uGlobal.pas Deklariert.
  dwMutex : DWORD;
  hWindow : THandle;

begin
  //Ermitteln in welchem Modus das Programm läuft
  glPrgMode := fGetProgMode; //glProgMode ist ein Integer-Wert

  // Eigene Message erzeugen
  dwMessage := RegisterWindowMessage('{110E0C4D-A63F-4B36-829D-3847E28636AF}');

  //Mutex erzeugen
  dwmutex := CreateMutex(nil, True, '{B2662A89-1938-4799-9F8D-11FBD5179EA9}');
  try
    //prüfen ob die Anwendung bereits läuft...
    if GetLastError <> ERROR_ALREADY_EXISTS then begin
      Application.Initialize;
      Application.MainFormOnTaskbar := True;
      Application.Title := '';
      Application.CreateForm(TfrmMain, frmMain);
      Application.CreateForm(TfrmSplashScreen, frmSplashScreen);
      Application.OnMessage := frmMain.OnAppMsg;
      Application.Run;
    end
    else begin
      //Windows Botschaft an alle Fenster schicken...
      PostMessage(HWND_BROADCAST, dwMessage, glPrgMode, 0);
    end;{else}
  finally
    //Mutex freigeben
    if dwMutex <> 0 then ReleaseMutex(dwMutex);
  end;

end.
Und hier die Application.OnMessage Prozedur:
Delphi-Quellcode:
procedure TfrmMain.OnAppMsg(var Msg: TMsg; var Handled: Boolean);
begin
  Handled := False;

  if Msg.message = dwMessage then begin
    if Msg.wParam = glPrgMode then begin
      //ShowWindow(Application.MainFormHandle, SW_NORMAL);
      Application.Restore;
      SetForegroundWindow(Application.MainFormHandle);
    end;
    Handled := True;
  end;

end;
Jedoch habe ich an der Stelle noch das Problem, das ich mein Fenster bzw.
meine Anwendung nicht vernüftig wiederhergestellt bekomme.
  Mit Zitat antworten Zitat