Re[4]: как узнать
От: CR-LF Россия  
Дата: 18.03.06 06:02
Оценка:
>>> неверный способ обнаружения уже запущенной копии
> 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.