Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
Суть:Из программы через shellexecute вызываецца внешняя программа (AdobeDistiller) вызываецца так: передаецца хендл приложения моего, операция -nil, файлнейм- файл *.Ps ,который собственно вызывает внешнее приложение по ассоциаиции с расширением, Параметры-nil, режим окна-скрытый. После определения ( не суть важно как), что работа завершена (а она завершаецца и прилоение остаецца, а самое интерсеное так как я в цикле вызываю неск фалйов ps, то уже на втором файле режим SW_HIDE, не срабатывает приложение стнаовица видимым). и для закрытия я пробовал PostMessage(hwndDistiller, WM_CLOSE, 0,0); DestroyWindow(hwndDistiller); не помогает. Что я упускаю или не понимаю? :( PS/ Почему не вызываю приложение через имая файла: EXE-приложения? параметры : файл *.PS ? при это она множит экземпляри прикладной ппрограммы и та через некторое время начинает ругацца, а если у меян 5, 10 файлов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 12:04 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 12:47 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
Проверь чему равен hwndDistiller. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 12:53 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
to Adony:Попробовал, реакция таже. to Хендл Дисциллера равен 42 (согласно описанию значение не ошибочное >32) Причем при всех вызовах 42 (то есть поднимаецца приложение и потом вызываеца запущенный экземпляр, как я понял) ------ Может можно как то отследить что поисходит (например, какойнить отлуп, типа нет прав) при вызове СендМессадж? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 13:38 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
а как хэндл ищем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 13:41 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
Читаем : function ShellExecute...:HINST возвращаемые значения: Ф-ция возвращает Хендл открытого приложения или сервера DDE... Хотя мне вот тут сказали что Хинстанс это не хендл окна , блин.. А как это можно связать? то что возвращает ШеллЭкз и хендл окна которое он запускает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 13:47 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
FindWindow?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 14:32 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
HINSTANCE бесполезен для поиска hwnd IMHO.... да и вообще бесполезен лучше наверно использовать ShellExecuteEx, которая может возвращать process handle, потом WaitForInputIdle чтобы подождать завершения инициализации приложения, потом искать окно (EnumWindows) пока не найдешь свой process handle (GetWindowThreadProcessId) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 14:34 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
HINSTANCE бесполезен для поиска hwnd IMHO.... да и вообще бесполезен Что я нашел у микрософт:) Код: plaintext 1. 2. А ШелЭкзеЕкс не имеет ограничений по версиям? Я не понмю ,может конечно , это была другая функция но я отказаляс от использованяи функции с суффиксоом Экс (Я так понимаю Экстендед), из-за того что она не поддерживлась 2000 ------------------- А можно чуть подробнее, а то я не силен в WinAPI 1. лучше наверно использовать ShellExecuteEx, которая может возвращать process handle , Я так понимаю мне возвращаеться хенл процесса, не окна (Процесс в данном случае одно и то же что и процессы в таскменеджере?, ЕСли да может не стоит искать окан а убивать сам процесс?) 2 потом искать окно (EnumWindows) пока не найдешь свой process handle (GetWindowThreadProcessId) Энумерейт перебирает окна , так? а где я подставлю для сравнения свой процесс хендл и вытаскиваю виндов хендл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 15:18 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
Просто найди окно через FindWindow и пошли ему WM_CLOSE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 18:04 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
2 srf2000: а как ожидать пок априложение отработает? Что то не могу я найти описание этой функции :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 18:07 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
Handle и pid процессора это разные вещи стрелять напрямую процесс нельзя, потому как программа ничего не успеваеткорректно завершить и помирает, это неприлично и юзать можно только для зависших прог. Аналогично кстате и с потоками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 03:12 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
никто не предлагал стрелять процесс :) предлагалось: лучше наверно использовать ShellExecuteEx, которая может возвращать process handle, потом WaitForInputIdle чтобы подождать завершения инициализации приложения, потом искать окно (EnumWindows) пока не найдешь свой process handle (GetWindowThreadProcessId) естественно process handle и process ID разные вещи... но из process ID можно получить process handle (через OpenProcess). потом сравнить его с полученным из ShellExecuteEx потом послать окну wm_close ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 06:36 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
"Я так понимаю мне возвращаеться хенл процесса, не окна (Процесс в данном случае одно и то же что и процессы в таскменеджере?, ЕСли да может не стоит искать окан а убивать сам процесс?)" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 06:44 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
WildMan заблуждается. процесс конечно грохать не стоит :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 06:51 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
Малость разобрался %) Теперь вопрос про функцию WaitForInputIdle Что и как? Не смог почему то найти ее описания. Так как приложение (внешнее) отрабатывается от 2 до 8 секунд, если я сразу после того как вычислил хендл окна посылаю сообщенние WM_CLOSE, оно естественно ругаецца что мол в работе..... дайте синтаксис плз или ссылку, где я могу почитать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 13:38 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
примерно так (на С): SHELLEXECUTEINFO ExecInfo; ExecInfo.cbSize=sizeof(ExecInfo); ExecInfo.fMask=SEE_MASK_NOCLOSEPROCESS; ... if(!ShellExecuteEx(&ExecInfo)) ShowMessage("Error!"); else { WaitForInputIdle(ExecInfo.hProcess, INFINITE); CloseHandle(ExecInfo.hProcess); ShowMessage("Program Finished loading"); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 14:14 |
|
||
|
Как закрыть приложение вызванное из совей программы
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, кто мне помог! Кому этот вопрос был интересен (из числа таких же балбесов как я %))) Я в итоге нашел примеры на Делфи: Запуск приложений из Delphi. http://delphi.hostmos.ru/statpv.php?section=delphi&stat=10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 14:46 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32273030&tid=2116774]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 419ms |

| 0 / 0 |
