![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать активным окно некоего приложения [D6, 95/98]
Dr. Genius © (2006-06-12 15:44:00)Как сделать активным окно некоего приложения (даже если оно находится в свернутом виде), зная его Caption?
Rial (2006-06-19 11:00:00) [1]
> Dr. Genius (19.06.06 10:39) [5]
>
> функция никак себя не проявляет, если в качестве класса
> я пишу 'TApplication'.
А как она должна по-твоему себя проявлять ?
В качестве класса все - таки советую писать класс существующегоокна.
Между прочим, есть там написать TStringList или TRegistry,
то функция тоже себя никак не проявляет.
TApplication - это не совсем окно,
хотя и создает одно таковое при использовании.
Если у тебя Form1:TForm1, то писать надо
FindWindow('TForm1','Form');
А раз уж все равно окно ищешь, то можно было, ИМХО, и без мьютекса обойтись.
Dr. Genius (2006-06-19 10:39:00) [2]функция никак себя не проявляет, если в качестве класса я пишу 'TApplication'.
Rial (2006-06-19 00:55:00) [3]1-й параметр - имя класса окна.
Скорее всего, у тебя это 'TForm1'.
Причин первой проблемы не знаю, глюков и ShowWindow никогда не замечал.
Что значит перестает работать ?
Исчезает, не отвечает, или что еще ?
Dr. Genius (2006-06-18 22:44:00) [4]Help me...
Dr. Genius (2006-06-15 10:10:00) [5]
var
hWnd: THandle;
begin
if (OpenMutex (MUTEX_ALL_ACCESS, False, 'MyMutex') <> 0) then
begin
hWnd := FindWindow (nil, 'Form1');
ShowWindow (hWnd, SW_SHOWNORMAL);
SetForegroundWindow (hWnd);
Exit;
end;
CreateMutex (nil, False, 'MyMutex');
Ставлю этот код в dpr-файле приложения (перед Application.Initialize). Программа, с помощью мутекса, при запуске определяет, не было ли запущено приложение ранее, и если находит уже запущенную копию, то активизирует ее.
Но если активизируется уже ранее запущенное и при этом в данный момент свернутое окно, то в нем перестает работать системная кнопка «Свернуть». Можно ли это как-то исправить?
И еще. Что надо писать в качестве первого параметра функции FindWindow (там, где в коде у меня написано nil)? Я пробовал строку ‘TApplication’, но тогда функция перестает работать.
Rial (2006-06-12 17:51:00) [6]Wnd:=FindWindow(..);
ShowWindow (Wnd,SW_SHOW);
SetForegroundWindow(Wnd);