Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];

Вниз

получение хэндла окна из TShellExecuteInfo   Найти похожие ветки 

 
Альберт   (2006-11-27 19:30) [0]

var shll:TShellExecuteInfo;
//-------------------------------
FillChar(shll, Sizeof(shll), 0);
   with shll do
  begin
    cbSize:= Sizeof(shll);
    fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
    Wnd := 30000;
    lpVerb:= "open";
    lpParameters := PChar("about:blank");
    lpFile:= Pchar("mshta.exe");
    nShow := SW_SHOW;
    lpDirectory := "C:\WINDOWS\system32";
  end;

ShellExecuteEX(@shll);

почему не присваивается новое значение в shll.wnd?


 
Альберт   (2006-11-27 19:31) [1]

забыл поздароваться )) Добрый вечер!!!


 
clickmaker ©   (2006-11-27 19:36) [2]


> почему не присваивается новое значение в shll.wnd?
> Wnd := 30000;

а почему именно 30000?


 
Альберт   (2006-11-27 19:37) [3]

да это уже просто эксперимент был. с нулем тоже не пашет..


 
clickmaker ©   (2006-11-27 19:42) [4]


> [3] Альберт   (27.11.06 19:37)
> да это уже просто эксперимент был

а какова цель-то эксперимента?


 
Альберт   (2006-11-27 19:44) [5]

любое значение присваемое изначально shll.wnd остается неизменным после вызова ShellExecuteEX. поэтому хоть 30000 или 0 - по барабану..


 
clickmaker ©   (2006-11-27 19:45) [6]

а почему оно должно меняться? что собственно получить-то хочешь?


 
Альберт   (2006-11-27 19:47) [7]

хэндл окна запущенного приложения


 
Альберт   (2006-11-27 19:50) [8]

приложение  запущенное через ShellExecuteEX должно возвращать хэндл его окна..


 
clickmaker ©   (2006-11-27 19:54) [9]


> приложение  запущенное через ShellExecuteEX должно возвращать
> хэндл его окна

кто сказал?


 
Альберт   (2006-11-27 19:55) [10]

может быть я неправильно понял значение свойства WND?

что я вообще хочу. я каким-то образом запускаю из своей программы другое приложение и очень хочу получить его HWND..


 
clickmaker ©   (2006-11-27 19:59) [11]


> [10] Альберт   (27.11.06 19:55)
> может быть я неправильно

Ага. Неправильно.
Справка есть?
hwnd
Window handle to any message boxes that the system might produce while executing this function.
Это окно, которое будет как бы владельцем месседж бокса, который может вызвать эта функция. Константа в данном контексте.
А вот в hProcess вернется хэндл процесса. Но не окна


 
Альберт   (2006-11-27 20:02) [12]

мда... а каким образом вообще получить это окно? через перебор всех окон и сравнением Process?


 
Leonid Troyanovsky ©   (2006-11-27 20:04) [13]


> Альберт   (27.11.06 19:55) [10]

> что я вообще хочу. я каким-то образом запускаю из своей
> программы другое приложение и очень хочу получить его HWND.


А почему ты считаешь, что у него:
- есть хоть один поток, владеющий окном;
- что это единственное окно.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2006-11-27 20:04) [14]


> Альберт   (27.11.06 20:02) [12]

> мда... а каким образом вообще получить это окно? через перебор
> всех окон и сравнением Process?


Пардон, с каким Process?

--
Regards, LVT.


 
Альберт   (2006-11-27 20:09) [15]


> А почему ты считаешь, что у него:
> - есть хоть один поток, владеющий окном;
> - что это единственное окно.


да я понял, что не в ту степь ушел..


> Пардон, с каким Process?


shll.hProcess

может имеет смысл пользоваться GetWindowThreadProcessId?


 
Leonid Troyanovsky ©   (2006-11-27 21:25) [16]


> Альберт   (27.11.06 20:09) [15]

> может имеет смысл пользоваться GetWindowThreadProcessId?

Без этой функции, безусловно, не обойтись.
Кроме того, видимо, сочетать ее придется с CreateProcess,
возвращающего кроме хендлов и идентификаторы
процесса и его первичного потока.
Ну, а начинать EnumWindows, скорее всего,
придется после WaitForInputIdle.

Кстати, закрывать хендл процесса (или, возможно,
первичного потока) надо не раньше обнаружения
искомого окна/он.

Однако, все это, все равно, не исключает некотрых
случаев, когда во время перечисления некоторые
окна искомого процесса успеют закрыться.

--
Regards, LVT.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.038 c
15-1174646776
pasha_golub
2007-03-23 13:46
2007.04.22
Уголок гурмана


9-1145552442
JF
2006-04-20 21:00
2007.04.22
Материал в OGL


8-1155109605
Alpine
2006-08-09 11:46
2007.04.22
Как повернуть рисунок (ROTATE) в TImage ?


1-1172750179
S@shka
2007-03-01 14:56
2007.04.22
Диспетчер задач / Память процесса


11-1156039661
Psychedelic
2006-08-20 06:07
2007.04.22
Прозрачность в Bitmap





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский