![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проблема с ShellExecuteEx
alshtam © (2007-08-29 09:03:00)проблема в следующем я открываю Chm файл и хотелось бы получить хендл окна в котором открылось приложение но в переменной hProcess класса SHELLEXECUTEINFO явно лежит не хендл
вот мой текст
var
SHExecInfo:SHELLEXECUTEINFO;
styl:longint;
begin
SHExecInfo:=SHELLEXECUTEINFO(GetMemory(sizeof(SHELLEXECUTEINFO))^);
SHExecInfo.cbSize := sizeof(SHELLEXECUTEINFO);
SHExecInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
SHExecInfo.nShow := SW_SHOWNORMAL;
SHExecInfo.lpFile := 'test.chm';
ShellExecuteEx(@SHExecInfo);
end;
подскажите пожалуста что неправильно я сделал?
alshtam (2007-08-29 09:33:00) [1]большое спасибо, щас попробую!
@!!ex (2007-08-29 09:31:00) [2]> [4] alshtam © (29.08.07 09:21)
Список окон, созданных процессом, получается с помощью функции EnumWindows.
Для каждого из этих окон с помощью функции GetWindowThreadProcessID определяется процесс.
Выбираешь только те окна, которые принадлежат данному процессу.
MBo (2007-08-29 09:31:00) [3]Придется перебрать окна (например, EnumWindows), и проверить, какому потоку/процессу они принадлежат
alshtam (2007-08-29 09:21:00) [4]да конечно, но у процесса соцданого таким путем только одно окно!
@!!ex (2007-08-29 09:18:00) [5]> [2] alshtam © (29.08.07 09:10)
только стоит учитывать, что у одного процесса может быть вагон окон...
alshtam (2007-08-29 09:10:00) [6]хендл просесса..
как по нему пожно узнать хендл окна, должно быть как моможно?
MBo (2007-08-29 09:07:00) [7]>явно лежит не хендл
хендл, только не окна, а процесса