>>> неверный способ обнаружения уже запущенной копии
> CL>С чего ты взял ?
> CL>Я кажется вообще не показывал каким образом я это делаю.
> Ты это паказал... показал основновную свою функцию.
Когда ?!
Где ?!
У меня вот как делается
const
MemFileSize = 127;
MemFileName = 'q_day';
var
MemHnd:HWND;
hndl: THandle;
{$R *.res}
begin
MemHnd := CreateFileMapping(HWND($FFFFFFFF),nil,PAGE_READWRITE,0,
MemFileSize,MemFileName);
if GetLastError <> ERROR_ALREADY_EXISTS then begin
Application.Initialize;
Application.CreateForm(TQForm, QForm);
Application.Run;
end
else begin
hndl := FindWindow('TQForm', 'Q-day');
if hndl <> 0 then begin
SendMessage(hndl,WM_RESTOREFROMTRAY,0,0);
SetForegroundWindow(hndl);
end;
end;
CloseHandle(MemHnd);
end.
> Вот посмотри на примере. Может перенесёшь. Или Будет полезно.
Че-то я мало что понял из этого ;(
Зачем там StartTimer, зачем WinExec, зачем ProcessMessages и наконец зачем
repeat ... until ?
Что если FindWindow с первого раза не нашла TPasswordForm, то потом она его
может найти ?
> var
> ReturnParam :boolean;
> begin
> ReturnParam:=false;
> StartTimer.Enabled:=false;
> WinExec('DBCS.exe GHH-JGHG-HJGH',0);
> repeat
> Application.ProcessMessages();
> if (FindWindow('TPasswordForm','Ограничение доступа ...)') <> 0)
> then
> begin
> ReturnParam:=true;
> end;
> until (ReturnParam = true);
> Close();
> end;
Posted via RSDN NNTP Server 2.0