powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Закрытие внешнего приложения
10 сообщений из 10, страница 1 из 1
Закрытие внешнего приложения
    #34539729
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 и с++ ,(просто там функци немного по другому вызываются с описанием возвращаюмых значений?)
...
Рейтинг: 0 / 0
Закрытие внешнего приложения
    #34539843
Погодин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так работает:

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
...
Рейтинг: 0 / 0
Закрытие внешнего приложения
    #34539864
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.
DECLARE LONG FindWindow in Win32Api STRING lpClassName, STRING WindowName
DECLARE LONG SendMessage in Win32Api LONG lhWnd,LONG Msg,LONG wParam,LONG lParam
WM_CLOSE= 16 
lhWnd=FindWindow( 0 ,'Калькулятор')
? "Searched window number: ",lhWnd
SendMessage(lhWnd,WM_CLOSE, 0 , 0 )
Clear Dlls
...
Рейтинг: 0 / 0
Закрытие внешнего приложения
    #34539878
NewBorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! большое!!!

значение wm_close = 16 вот что мне надо было!!!
нигде не увидел!!!!

ещё раз спасибо!

(просьба про ссылочку на какой нибкдь онлайн справочник по winApi+VFP по прежнему актуален :))
...
Рейтинг: 0 / 0
Закрытие внешнего приложения
    #34539900
NewBornСпасибо! большое!!!

значение wm_close = 16 вот что мне надо было!!!
нигде не увидел!!!!

ещё раз спасибо!

(просьба про ссылочку на какой нибкдь онлайн справочник по winApi+VFP по прежнему актуален :))
1. Все значения есть в *.h файлах (заголовочные файлы для С/С++; 0x00 - применяется для обозначения 16-ричного числа)
Код: plaintext
1.
2.
3.
4.
5.
...
#define WM_DESTROY  0x0002
...
#define WM_CLOSE 0x0010
....
2. http://msdn2.microsoft.com/en-us/default.aspx
...
Рейтинг: 0 / 0
Закрытие внешнего приложения
    #34539904
po2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
po2
Гость
...
Рейтинг: 0 / 0
Закрытие внешнего приложения
    #34540335
NewBorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это опять я. есть форма на неё лежит класс в котором создаётся процесс. Скажем у меня запускает calc.exe. Затем надо приложение закрыть. закрывать поолучилось благодаря советам выше, Но это если знаем заголовок сообщения, а если заголовок не известен ?
в результате createProcess получаем четырёх значное число которое не является хендлом окна процесса (а как я понял является хендлом непосредственно процесса что ли, уфф), вообщем вопрос тот же, как закрыть калькулятор если мы не знаем загаловок окна, но однако запускаем приложение через createprocess.... (я сам то в основном занимаюсь больше с базами, там отчетики, формочки, гридики, селектики а тут вот заполз маленько не в мою степь, но интересно очень...)
...
Рейтинг: 0 / 0
Закрытие внешнего приложения
    #34540686
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример для запуска, ожидания завершения, или убиение процесса.
Только учти, дочерний процесс убивается без всякого оповещения, т.е., если там происходит в этот момент изменение каких-либо данных, то все остановится на полпути.
...
Рейтинг: 0 / 0
Закрытие внешнего приложения
    #34541928
NewBorn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Супер! Спасибо! то что надо (пока)). именно на основе опубликованного Вами класса 23 января я и начал свои эксперементы однако в той версии не было метода с Terminate process, а правильно оформить его у меня не получалось, теперь всё получилось спасибо !
...
Рейтинг: 0 / 0
Закрытие внешнего приложения
    #34543806
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я этот класс как раз доделал для запуска всяких роботов в автоматическом режиме.

Обрати внимание что у метода Execute() есть второй параметр - tnWaitToKill время ожидания до убивания дочернего процесса в секундах. Сообщение об ошибке возвращается через метод GetLastError() если Execute() = .f.
примерно так:
Код: plaintext
1.
2.
3.
if !loEx.Execute('notepad.exe',  10 )
? loEx.GetLastError() && я в лог пишу
endif
* Когда дойдет до сюда блокнот уже закрыт
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Закрытие внешнего приложения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]