|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Получить Handle будущего процесса. |
|
[решено] Получить Handle будущего процесса.
|
Новый участник Сообщения: 37 |
Профиль | Отправить PM | Цитировать Привет. Такая задача.
Нужно получить Handle окна, процесса, который ещё не запущен. Я понимаю, что у нас нет машины времени, но должна же быть какая-то уловка. В чём конкретно проблема. Проблема в том, что неизвестно какое будет запущено приложение с помощью RUN, которое, как известно, возвращает PID. PID - это уже что-то. Но мне нужен Handle . И соответственно, абсолютно неизвестен ни класс, ни заголовок, ни текст. Как можно получить в такой ситуации Handle? |
|
Отправлено: 12:01, 31-07-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Атос:
Цитата Атос:
Ну, предположим даже, что Вы получили хэндл Вашим способом. Что дальше? Что Вы с ним собираетесь делать? |
||
Отправлено: 12:53, 31-07-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 37
|
Профиль | Отправить PM | Цитировать Я хочу сразу активировать это окно на передний план.
Как мне получить хэндл? |
Отправлено: 13:48, 31-07-2017 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Атос, опишите всю задачу.
|
Отправлено: 14:11, 31-07-2017 | #4 |
Новый участник Сообщения: 37
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 14:40, 31-07-2017 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Атос, так по умолчанию окно и так становится окном переднего плана и получает фокус. У Вас разве не так?
А так — смотрите FAQ: FAQ - AutoIt Wiki: How can I get a window handle when all I have is a PID? |
Отправлено: 15:38, 31-07-2017 | #6 |
Новый участник Сообщения: 37
|
Профиль | Отправить PM | Цитировать Становится. А вдруг, мне хэндл позже понадобится.
|
Отправлено: 15:57, 31-07-2017 | #7 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Атос:
$iPID = Run('notepad.exe') $hWindow = _WinWaitByPID($iPID, 3) ConsoleWrite($hWindow & @CRLF) ConsoleWrite(WinGetTitle($hWindow) & @CRLF) Func _WinWaitByPID($iPID, $iTimeout = 0, $bOnlyVisible = True) Local $iTimer = TimerInit() Local $aWinList While 1 $aWinList = WinList() For $i = 1 To UBound($aWinList) - 1 If $aWinList[$i][0] <> '' And WinGetProcess($aWinList[$i][1]) = $iPID Then If Not $bOnlyVisible Or ($bOnlyVisible And BitAND(WinGetState($aWinList[$i][1]), 2) = 2) Then Return $aWinList[$i][1] EndIf EndIf Next If $iTimeout And (TimerDiff($iTimer) >= ($iTimeout * 1000)) Then Return -1 EndIf Sleep(10) WEnd Return 0 EndFunc |
|
------- Последний раз редактировалось Creat0R, 31-07-2017 в 20:57. Отправлено: 20:21, 31-07-2017 | #8 |
Новый участник Сообщения: 37
|
Профиль | Отправить PM | Цитировать Creat0R, вот это мастерская функция. Спс.
|
Отправлено: 09:06, 01-08-2017 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - [блог] Получение handle Name | Kazun | Скриптовые языки администрирования Windows | 8 | 11-04-2017 17:52 | |
C/C++ - Поток закрывает свой handle | SmallGod | Программирование и базы данных | 1 | 06-02-2011 15:10 | |
Узнать controlID по Handle | san45 | AutoIt | 3 | 13-05-2009 22:23 | |
Не удалось получить доступ или установить принадлежность процесса? | GifuN | Microsoft Windows NT/2000/2003 | 0 | 14-01-2008 14:03 | |
ThreadId -> Handle | Andreich | Программирование и базы данных | 4 | 06-08-2004 14:31 |
|