Мое приложение должно работать в одном экземпляре для этого я используя:
function
CheckAppRun:
integer;
var
Map: THandle;
begin
Map := CreateFileMapping($FFFFFFFF, nil, PAGE_READONLY, 0, 32,
'%af_src_comm_0');
if Map = 0 then
Result := -1
else if GetLastError = ERROR_ALREADY_EXISTS then
Result := 1
else
Result := 0
end;
function
ActivatePreviousInstance(WndClass: PChar): boolean;
var
Wnd: HWND;
begin
Result := false;
if (CheckAppRun = 1) then
begin
if (WndClass <> nil) then
begin
{если окно программы указано сделать его активным в системе}
Wnd := FindWindow(WndClass, nil);
if (Wnd <> 0) then
begin
{Хочу отобразить мое приложение, но оно не отображается}
SwitchToThisWindow(Wnd, True);
end;
end
else
MessageBox(0, 'Приложение уже запущено!', 'Сообщение',
MB_ICONINFORMATION or MB_OK);
Result := true;
end;
end;
if ActivatePreviousInstance('TMainForm') then Halt(1);
Для отображения своего приложения я использовал SwitchToThisWindow(Wnd, True), но оно не отображается. Я использовал ShowWindow(Wnd, SW_SHOWMAXIMIZED) окно отображается, но после такой операции его нельзя свернуть.
Так как же правильно отобразить свое приложение не зависимо от того минимизировано оно или нет?