Salü zusammen.
Hab nur ich ein Problem mit fogendem Programm, oder gibt es da ein prinzipielles Problem?
1. Programm starten und minimieren.
2. Programm nochmals starten. Wie erwartet wird die erste Instanz aktiviert.
Nur, jetzt läßt sich das Ding nicht mehr minimieren.
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 =
class(TForm)
private
public
end;
var
Form1: TForm1;
Handle: THandle;
implementation
{$R *.DFM}
initialization
begin
Handle:= CreateMutex(
nil, true, '
Form1');
if GetLastError=ERROR_ALREADY_EXISTS
then Halt;
end;
finalization
begin
if Handle<>0
then CloseHandle(
Handle);
Handle:= FindWindowEx(0, 0, '
TForm1',
nil);
If Handle<>0
then begin
if IsIconic(
Handle)=true
then showmessage('
IsIconic');
// funktioniert NICHT
if IsZoomed(
Handle)=true
then showmessage('
IsZoomed');
// funktioniert, wird allerdings auch bei minimiertem Fenster angezeigt
if IsWindowVisible(
Handle)=false
then SendMessage(
Handle, WM_SYSCOMMAND, SC_RESTORE,
Handle)
else SendMessage(
Handle, WM_SYSCOMMAND, SC_DEFAULT,
Handle);
// ShowWindow(Handle, SW_SHOWMAXIMIZED); // gleiches Ergebnis minimieren nicht mehr möglich, wenns minimiert war.
SetForegroundWindow(
Handle);
end;
end;
end.