|
|
|
Закрытие внешнего приложения
|
|||
|---|---|---|---|
|
#18+
Имеется программа внешняя которая выполняет опрации по закачиванию файлов с фтп из разных мест, места задаются в командной строке, необходимо последовательно запускать программу причем каждый последущий запуск тока после успешного завершения предыдущей задачи. с помощью CreateProcess запускаю программу (могу отслеживать время выполнения и т.д. )(тренируюсь на калькуляторе (calc.exe)) но вот закрыть её не могу. я явно что то не понимаю в функциях апи, пробовал соыет тов. Погодина DECLARE LONG SendMessage IN win32api LONG whWnd,LONG Msg,LONG wParam,LONG lParam WM_DESTROY=2 SendMessage(hwndapp,WM_DESTROY,0,0) CLEAR DLLS не поможет WM_DESTROY, пробуй WM_CLOSE. не закрывается пробовал такую авторDECLARE LONG FindWindow IN Win32API STRING lpClassName,STRING WindowName lhWnd = FindWindow(NULL,'Калькулятор') ?"Калькулятор F",lhWnd DECLARE INTEGER CloseHandle IN kernel32.DLL ; INTEGER hObject CLOSEhandle(lhWnd) не закрывается, что надо сделать что бы закрыть этот блин калькулятор ? и вообще есть ли где справка по winApi и vfp типа как есть winApi и delphi и с++ ,(просто там функци немного по другому вызываются с описанием возвращаюмых значений?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 14:42 |
|
||
|
Закрытие внешнего приложения
|
|||
|---|---|---|---|
|
#18+
Вот так работает: DECLARE LONG FindWindow IN win32api STRING @lpClassName,STRING @lpWindowName DECLARE LONG SendMessage IN win32api LONG whWnd,LONG Msg,LONG wParam,LONG lParam lpClassName=.null. lpWindowName='Калькулятор' hwind=FindWindow(@lpClassName,@lpWindowName) IF hwind=0 MESSAGEBOX('Окно не найдено !') ELSE WM_CLOSE=16 SendMessage(hwind,WM_CLOSE,0,0) ENDIF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 15:07 |
|
||
|
Закрытие внешнего приложения
|
|||
|---|---|---|---|
|
#18+
NewBornИмеется программа внешняя которая выполняет опрации по закачиванию файлов с фтп из разных мест, места задаются в командной строке, необходимо последовательно запускать программу причем каждый последущий запуск тока после успешного завершения предыдущей задачи. с помощью CreateProcess запускаю программу (могу отслеживать время выполнения и т.д. )(тренируюсь на калькуляторе (calc.exe)) но вот закрыть её не могу. я явно что то не понимаю в функциях апи, пробовал соыет тов. Погодина DECLARE LONG SendMessage IN win32api LONG whWnd,LONG Msg,LONG wParam,LONG lParam WM_DESTROY=2 SendMessage(hwndapp,WM_DESTROY,0,0) CLEAR DLLS не поможет WM_DESTROY, пробуй WM_CLOSE. не закрывается пробовал такую авторDECLARE LONG FindWindow IN Win32API STRING lpClassName,STRING WindowName lhWnd = FindWindow(NULL,'Калькулятор') ?"Калькулятор F",lhWnd DECLARE INTEGER CloseHandle IN kernel32.DLL ; INTEGER hObject CLOSEhandle(lhWnd) не закрывается, что надо сделать что бы закрыть этот блин калькулятор ? и вообще есть ли где справка по winApi и vfp типа как есть winApi и delphi и с++ ,(просто там функци немного по другому вызываются с описанием возвращаюмых значений?) А вот так почему-то работает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 15:12 |
|
||
|
Закрытие внешнего приложения
|
|||
|---|---|---|---|
|
#18+
Спасибо! большое!!! значение wm_close = 16 вот что мне надо было!!! нигде не увидел!!!! ещё раз спасибо! (просьба про ссылочку на какой нибкдь онлайн справочник по winApi+VFP по прежнему актуален :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 15:21 |
|
||
|
Закрытие внешнего приложения
|
|||
|---|---|---|---|
|
#18+
NewBornСпасибо! большое!!! значение wm_close = 16 вот что мне надо было!!! нигде не увидел!!!! ещё раз спасибо! (просьба про ссылочку на какой нибкдь онлайн справочник по winApi+VFP по прежнему актуален :)) 1. Все значения есть в *.h файлах (заголовочные файлы для С/С++; 0x00 - применяется для обозначения 16-ричного числа) Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 15:29 |
|
||
|
Закрытие внешнего приложения
|
|||
|---|---|---|---|
|
#18+
Это опять я. есть форма на неё лежит класс в котором создаётся процесс. Скажем у меня запускает calc.exe. Затем надо приложение закрыть. закрывать поолучилось благодаря советам выше, Но это если знаем заголовок сообщения, а если заголовок не известен ? в результате createProcess получаем четырёх значное число которое не является хендлом окна процесса (а как я понял является хендлом непосредственно процесса что ли, уфф), вообщем вопрос тот же, как закрыть калькулятор если мы не знаем загаловок окна, но однако запускаем приложение через createprocess.... (я сам то в основном занимаюсь больше с базами, там отчетики, формочки, гридики, селектики а тут вот заполз маленько не в мою степь, но интересно очень...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 17:47 |
|
||
|
Закрытие внешнего приложения
|
|||
|---|---|---|---|
|
#18+
Вот пример для запуска, ожидания завершения, или убиение процесса. Только учти, дочерний процесс убивается без всякого оповещения, т.е., если там происходит в этот момент изменение каких-либо данных, то все остановится на полпути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2007, 19:49 |
|
||
|
Закрытие внешнего приложения
|
|||
|---|---|---|---|
|
#18+
Супер! Спасибо! то что надо (пока)). именно на основе опубликованного Вами класса 23 января я и начал свои эксперементы однако в той версии не было метода с Terminate process, а правильно оформить его у меня не получалось, теперь всё получилось спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2007, 12:35 |
|
||
|
Закрытие внешнего приложения
|
|||
|---|---|---|---|
|
#18+
Я этот класс как раз доделал для запуска всяких роботов в автоматическом режиме. Обрати внимание что у метода Execute() есть второй параметр - tnWaitToKill время ожидания до убивания дочернего процесса в секундах. Сообщение об ошибке возвращается через метод GetLastError() если Execute() = .f. примерно так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2007, 21:09 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1589295]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
171ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 531ms |

| 0 / 0 |
