Вверх ↑
Этот топик читают: Гость
Ответов: 387
Рейтинг: 34
#1: 2009-10-26 13:39:31 ЛС | профиль | цитата
в компоненте WinExec не хватает функции Handle на запущенную прогу.

или подскажите как компактно реализовать поиск Handle для
последнего запущенного приложения если таких запущенных приложений много...
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#2: 2009-10-26 13:49:51 ЛС | профиль | цитата
Karl, HAndle
карма: 10
1
Голосовали:Karl
Ответов: 387
Рейтинг: 34
#3: 2009-10-26 14:16:03 ЛС | профиль | цитата
Assasin спасибо, я счастлив тому, что ты понял то о чем я написал, а заодно и за вразумительный ответ
карма: 0

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#4: 2009-10-26 14:19:32 ЛС | профиль | цитата
Вообще-то WinExec работает с файлами, а не с Handl-ами.
Я так понимаю, что необходимо передать некие параметры последнему загруженному приложению
Но WinExec передает параметры только при запуске приложения
------------ Дoбавленo в 14.22:
Karl писал(а):
или подскажите как компактно реализовать поиск Handle для
последнего запущенного приложения если таких запущенных приложений много...

ИМХО. Если только мониторить процессы и смотреть что подгрузилось
карма: 22

0
Ответов: 387
Рейтинг: 34
#5: 2009-10-26 14:34:49 ЛС | профиль | цитата
мне нужно в запущенном с помощью WinExec приложении нажать клавиши компонентом KeyEvent,
а ему нужен Handle на приложение, я предполагал что WinExec может знать(узнать) этот Handle.
------------ Дoбавленo в 14.40:
nesco писал(а):
ИМХО. Если только мониторить процессы и смотреть что подгрузилось


так и делаю слежу за ID процессов... но думал можно сделать менее громоздко

Karl писал(а):
подскажите как компактно реализовать поиск Handle

карма: 0

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#6: 2009-10-26 15:10:06 ЛС | профиль | цитата
Karl писал(а):
но думал можно сделать менее громоздко

Можно попробовать найти Handle по имени главного окна. Вот тебе пример от Ленонида, который перехватывает блокнот. Попробуй поэкспериментировать

code_15379.txt
карма: 22

0
файлы: 1code_15379.txt [1.7KB] [423]
Ответов: 387
Рейтинг: 34
#7: 2009-10-26 15:57:27 ЛС | профиль | цитата
nesco, спасибо.

сложность в том что окна имеют одно название.

мой алгоритм выглядит так:
1. с помощью перечисления окон, создаю список хендлов окон с названием Х
2. запускаю приложение имеющие название окна Х
3. с помощью перечисления окон, выявляю хендл отсутствующий в списке 1, и этот хенд есть искомый.
и все работает.

но куда проще:
запускаю приложение, хендл запущенного процесса свисает с компонента WinExec
и с права компонента WinExec точка, событие происходит после завершения работы запущенного приложения.

но если реализовать подобное неудобно то вопрос снят.
карма: 0

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#8: 2009-10-26 16:50:42 ЛС | профиль | цитата
Karl писал(а):
но если реализовать подобное неудобно то вопрос снят

Вообще-то -- проблематично
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#9: 2009-10-26 20:17:25 ЛС | профиль | цитата
Karl писал(а):
но если реализовать подобное неудобно то вопрос снят.

WinExec запускает приложение, а не окно и как следствие получает ProcessID. Handle - это идентификатор окна, которых у процесса может быть несколько. Как следствие однозначного сопоставления ID процесса Handle формы не существует.
карма: 27
0
9
Сообщение
...
Прикрепленные файлы
(файлы не залиты)