![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Закрыть Internet Explorer [D7, Win2k]
Валерий © (2006-06-01 19:05:00)Облазил форумы - ничего не нашел.
Как можно программно закрыть окно IE?
Я запускаю его с помощью WinExec, сохраняю handle в Handle2, потом пытаюсь закрыть - и ничего не происходит.
пробовал и SendMessage(Handle2, WM_CLOSE, 0, 0);, PostMessage(Handle2, WM_CLOSE, 0, 0); и TerminateProcess(Handle2, 0) - вообще ничего. даже ошибку не пишет!
Что я не так делаю?
Подкажите пожалуйста.
Eraser (2006-06-03 23:50:00) [1]
> Lab74 © (03.06.06 23:43) [7]
очевидно, потому что вызов DestroyWindow происходит не в оконной процедуре, а цикле выборки сообщений потока окна, хотя утверждать не берусь.
Кстити в Win9x окно закрывается и при SendMessage.
Lab74 (2006-06-03 23:43:00) [2]
> Eraser © (03.06.06 23:22) [6]
> PostMessage(ХЭНДЛ_ОКНА_ЭКСПЛЕРЕРА, WM_CLOSE, 0, 0)
случайно не знаешь, почему в данном случае PostMessage работает, а SendMessage - нет?
Eraser (2006-06-03 23:22:00) [3]
> Валерий (01.06.06 19:05)
PostMessage(ХЭНДЛ_ОКНА_ЭКСПЛЕРЕРА, WM_CLOSE, 0, 0)
прекрасно всё закрывается.
Lab74 (2006-06-03 22:48:00) [4]SendMessage(Handle2, WM_SYSCOMMAND, SC_CLOSE, 0)
Чапаев (2006-06-02 19:07:00) [5]
> Валерий (01.06.06 19:05)
Да, с закрытием IE, помнится, были какие-то проблемы... WM_QUIT попробуй.
brrrrrrr (2006-06-02 18:29:00) [6]Неа, не то... Пример:
var SHI: SHELLEXECUTEINFO;
...
SHI.cbSize := SizeOf(SHI);
SHI.fMask := SEE_MASK_NOCLOSEPROCESS;
SHI.wnd := Self.Handle;
SHI.lpVerb := 'open';
SHI.lpFile := PChar(GetEnvironmentVariable('windir') + '\system32\msiexec.exe');
SHI.lpParameters := PChar('/i ' + GetEnvironmentVariable('TEMP') + '\wuau22rus.msi');
SHI.lpDirectory := PChar(GetEnvironmentVariable('TEMP'));
SHI.nShow := SW_SHOWDEFAULT;
ShellExecuteEx(@SHI);
WaitForSingleObject( SHI.hProcess, INFINITE);
Валерий (2006-06-01 19:21:00) [7]Вообще-то именно так я и получал handle...
А что это не то?
ShellExecute пробовал... Только как оттуда получить handle для закрытия?
А вот с ShellExecuteEx - чего-то никак не разберусь - как использовать? Можете какой-нибудь пример дать?
brrrrrrr (2006-06-01 19:14:00) [8]А хнэдл откуда берется? Надеюсь не WinExec вам его возвращает? :)
Почитайте про ShellExecute, ShellExecuteEx