![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Параметр [D5, D6, Win95/98, WinME]
CA © (2002-06-30 12:57:00)Люди подскажите пожалуйста,
моя программа запускается с помощью параметров, и остается в памяти, при первом запуске всё нормально работает, но мне нужно чтобы когда юзер вторай раз запускает её но с др. параметрами моя программа выполнела действия связанные с этими параметрами, т.е. чтобы это действие выполняла уже запущенная прога а не вновь загружаемая ....
Са (2002-07-02 04:46:00) [1]Ну Спасибо Мужики !!!
Юрий Зотов (2002-06-30 18:22:00) [2]Забыл о главном.
Автору вопроса - см. здесь:
http://www.delphikingdom.com/helloworld/samples_win.htm
Юрий Зотов (2002-06-30 18:19:00) [3]> Код 100% корректно работает.
Это вряд ли.
:о)
Запустите свою программу дважды - либо ОЧЕНЬ быстрыми щелчками мыши, либо из другой программы (например, дважды подряд вызвав WinExec). Полагаю, будете удивлены.
А удивительного ничего нет. Потому что, если запуск второго экземпляра происходит ДО ТОГО, как в первом создано окно, то проверка не сработает. И второй экземпляр спокойно запустится.
Кажется, на эту тему на сайте была статья.
stupid (2002-06-30 13:58:00) [4]Помести в обработчик события OnCreate формы следующий код:
procedure TForm1.FormCreate(Sender: TObject);
var
h : hWnd;
buff : ARRAY[0.. 127] OF Char;
begin
h := GetWindow(Handle, gw_HWndFirst);
while h <> 0 do
begin
if (h <> Application.Handle) AND (GetWindow(h, gw_Owner) = 0) then
begin GetWindowText (h, buff, sizeof (buff ));
if StrPas (buff) = Application.Title then
begin
SetForegroundWindow(h);
ShowWindow(h,SW_SHOWNORMAL);
Halt;
end;
end;
h := GetWindow(h, gw_hWndNext);
end;
end;
А дальше уже сам думай, как всё, чё ты хош реализовать!
Код 100% корректно работает.
Cobalt (2002-06-30 13:12:00) [5]поищи в факе на тему "запрет второго запуска моей проги"