1

Тема: AHK: Убить процесс

Ищу скрипт способный убить процесс.
Работаю с OpenOffice и после завершения работы программы часто остается процесс soffice.bin в диспетчере задач, после которого программа больше не работает. Приходится вручную открывать диспетчер и убивать процесс. Нельзя ли это автоматизировать с помощью AutoHotkey?

2

Re: AHK: Убить процесс

Перевод документации AutoHotkey пишет:

Process
Выполняет над процессом одну из следующих операций: проверяет существование, изменяет приоритет, закрывает, ожидает закрытия.

Process, Cmd, PID-or-Name [, Param3]

3 (изменено: Gera-sim, 2011-12-07 13:49:27)

Re: AHK: Убить процесс

Спасибо за быстрый ответ!
Написал скрипт, но он не работает, в 3 строке что-то не нравится, а что не пойму:

Process, wait, soffice.bin, 5.5
NewPID = %ErrorLevel% ; Сразу сохранить значение, т.к. ErrorLevel часто изменяется.
if NewPID = 0
{
    MsgBox Указанный процесс soffice.bin не появился в течение 5.5 секунд.
    return
}
; Иначе
MsgBox Появился подходящий процесс (его идентификатор %NewPID%).
Process, Close, %NewPID%, Low
Process, WaitClose, %NewPID%, 5
if ErrorLevel ; Если PID ещё существует.
    MsgBox Процесс soffice.bin  не завершился в течение 5 секунд.

4

Re: AHK: Убить процесс

Gera-sim, ознакомься с первой темой на странице, отредактируй свой пост.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: Gera-sim, 2012-10-05 21:44:22)

Re: AHK: Убить процесс

Все! Понял в чем ошибка!
Всем кто пользуется бесплатным программным обеспечением посвящается!


Здесь файл в формате *.exe

6

Re: AHK: Убить процесс

И смысл ехешник выкладывать?

7 (изменено: Gera-sim, 2012-09-29 20:24:50)

Re: AHK: Убить процесс

а вот код для его запуска в OOO Basic

REM  *****  BASIC  *****
REM Option Explicit
' по умолчанию файл располагается в дирректории "C:\Documents and Settings\%пользователь%\Application Data\OpenOffice.org\3\user\Close_soffice.exe"
' кроме этого создается диалоговое окно CloseSofficeDialog в библиотеке VseSamoeNujnoe (она может быть изменена на Standart) 
' c кнопкой OkButton и окном выбора файлов Control в свойствах которого прописывается текст "%AppData%\OpenOffice.org\3\user\Close_soffice.exe"
' при щелчке на кнопке запускается Sub Change_Text
' если дирректория папки %TMP% по умолчанию не изменена, то можно обойтись и без диалогового окна
'  !!!Не забудьте добавить выполнение макроса Close_Soffice_Run при загрузке OOO
Dim oCloseSofficeDialog as Object
Dim oFile as String
Dim tFileDir as String
 Dim oFileDir as Object
 Sub Close_Soffice_Run

oPathSubst = createUnoService("com.sun.star.util.PathSubstitution")
' находим дирректорию %TEMP%
tFileDir = oPathSubst.getSubstituteVariableValue("$(temp)")
'msgbox tFileDir
FindDirectory
  End Sub
 Sub FindDirectory

' находим вхождение символа /, а затем дирректорию Documents and Settings
ResultString = InStr(21, tFileDir, "/")
' объединяем строки
oFile = Left(tFileDir, ResultString) + "Application%20Data/OpenOffice.org/3/user/Close_soffice.exe"

'msgbox oFile
 CloseSoffice
  End Sub
Sub CloseSoffice


  Dim oUrl as String
  oUrl = convertToUrl (oFile)

  'Проверим, что файл существует. Если это не так, запустим диалог
  If fileExists (oFile) Then
  shell(oUrl + " /r",  0, Param) 
  Else
  CloseSofficeRun
  End If

End Sub


Sub CloseSofficeRun
 oCloseSofficeDialog 
On Error Goto ErrorHandler

oCloseSofficeDialog.endExecute()
  basicLibraries.loadLibrary("Tools")
  'loadDailog требует  имя библиотеки и диалога
  oCloseSofficeDialog  = loadDialog("VseSamoeNujnoe", "CloseSofficeDialog")
' диалог получает дирректорию папки из Windows

 oCloseSofficeDialog.execute()

 exit sub
ErrorHandler:
  basicLibraries.loadLibrary("Tools")
  'loadDailog требует  имя библиотеки и диалога
  oCloseSofficeDialog  = loadDialog("VseSamoeNujnoe", "CloseSofficeDialog")
' диалог получает дирректорию папки из Windows

 oCloseSofficeDialog.execute()

End Sub
Sub Change_Text

 oFileDir = oCloseSofficeDialog.getControl("Control")
' msgbox oFileDir
 oFile = oFileDir.Text
'  msgbox oFile
 oFileDir.Model.Text = oFile
 tFileDir = oFile
'msgbox tFileDir
oCloseSofficeDialog.execute()
 
 CloseSoffice
 End Sub

для отладки оставлены msgbox' ы