остановить процесс
#1
Отправлено 12 мая 2006 - 10:44
думаю,что с таким вопросом встречается почти каждый,но на форуме не нашла чёто на тему
вопрос собственно в следующем - как вырубить приложение по окончанию выполнения скрипта? приложение может выдать диалог или ещё что-то перед закрытием, а реагировать на это дело дополнительно не хочется
чем прибить собственно процесс, какие есть команды?
посоветуйте плиз
#2
Отправлено 12 мая 2006 - 11:26
Ну если Вам прямо таки хочется убить приложение, то можно воспользоваться функцией TerminateProcess из библиотеки Kernel32.dll.чем прибить собственно процесс, какие есть команды?
#3
Отправлено 12 мая 2006 - 12:28
а какие-то ф-ции для этого в SQABasic есть?
#4
Отправлено 12 мая 2006 - 22:31
SQABasic тут не помощник. Вам Petr уже посоветовал как добиться того, чего вы хотите.ну как бы процесс мне просто нужно остановить,попросту,чтоб приложение закрылось без всяких месах,просто закрылось
а какие-то ф-ции для этого в SQABasic есть?
#5
Отправлено 15 мая 2006 - 06:56
Ну если Вам прямо таки хочется убить приложение, то можно воспользоваться функцией TerminateProcess из библиотеки Kernel32.dll.
извините,если вопрос покажется глупым ,я токо начинаю с роботом работать
каким макаром подключить длл в скрипте и спользовать функцию оттуда ? инклудом у меня не сложилось, как правильно подключить и использовать,поделитесь плиз
#6
Отправлено 15 мая 2006 - 07:32
#7
Отправлено 15 мая 2006 - 08:10
объявляю ф-цию в своём скрипте
Declare Function TerminateProcess Lib "Kernel32.dll"
токо вот как достать параметры функции в длл :\
#8
Отправлено 15 мая 2006 - 08:52
#9
Отправлено 15 мая 2006 - 11:05
#10
Отправлено 16 мая 2006 - 02:52
Declare Function GetComputerNameA Lib "kernel32" (ByVal lpBuffer As String, _ nSize As Long) As Long Declare Function OpenProcess Lib "kernel32" (ByVal dwAccess As Long, _ ByVal fInherit As Integer, _ ByVal hObject As Long) As Long Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, _ ByVal uExitCode As Long ) As Long Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Sub Unload Dim Result, i, j, iPos, Retcode As Integer Dim ModulesArray(15), LoadedModules(), LocalHostName As String Dim DestArray(1,1) As Variant Dim handle, status, PID As Long Const PROCESS_TERMINATE = &H1& j=0 ModulesArray(1)="customer.exe" ModulesArray(2)="billing.exe" ModulesArray(3)="cred_man.exe" ModulesArray(4)="mass_ops.exe" ModulesArray(5)="payment.exe" ModulesArray(6)="reports.exe" ModulesArray(7)="resource.exe" ModulesArray(8)="roamers.exe" ModulesArray(9)="sim_man.exe" ModulesArray(10)="tariff.exe" ModulesArray(11)="wo_man.exe" ModulesArray(12)="warehouse.exe" ModulesArray(13)="crate_m.exe" ModulesArray(14)="blocking.exe" ModulesArray(15)="db_cons.exe" SQASuspendLogOutput For i=1 To 15 Result = ModuleVP (Exists, "Name="+ModulesArray(i), "VP=Module Existence") If Result=1 Then j=j+1 ReDim Preserve LoadedModules(j) LoadedModules(j)=ModulesArray(i) End If Next SQAResumeLogOutput LocalHostName=Space$(255) status=GetComputerNameA(LocalHostName,255&) iPos=InStr(LocalHostName,Chr$(0)) LocalHostName=Left$(localHostName,iPos-1) If j<>0 Then For i=1 To UBound(LoadedModules) Retcode=SQLExecQuery(ACP_Connect, _ "SELECT SUBSTR(process, 1, INSTR(process,':')-1) FROM sys.v_$session " + _ "WHERE UPPER(program)='"+UCase(ACP_DRIVE)+"\BALLS\EXE\"+UCase(LoadedModules(i)) + _ "' AND terminal='"+LocalHostName+"'") Retcode=SQLRetrieve(ACP_Connect, DestArray) PID=Val(DestArray(1,1)) handle=OpenProcess(PROCESS_TERMINATE, True, PID&) status=TerminateProcess(handle, 0&) CloseHandle(handle) Next End If End Sub
#11
Отправлено 18 октября 2006 - 15:02
Поделюсь и я своим способом гасить процесс...
StartApplication "C:\WINDOWS\System32\taskkill.exe /F /IM notepad.exe"ось XPsp2
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных