Автор Тема: Реакция на наличие определенного текста в пути процесса  (Прочитано 787 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн lixar21 [?]

  • Новичок
  • *
  • Сообщений: 62
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Версия AutoIt: 3.3.14.2

Описание:
Доброго времени суток.
У меня есть вопрос про реакцию скрипт autoit - на наличие определенного текста ":\Wind" в пути процесса запущенного окна.

Скрипт висит в трее.
Если скрипт замечает, что открыто окно у которого путь процесса, например "C:\Windows\System32\notepad.exe"  то скрипт тут же выдает сообщение msgbox и продолжает свою работу.
То есть скрипт реагирует не на title или какой-то другой параметр, и не на название процесса - а на наличия определенного текста - в полному пути этого процесса.

Как это сделать в autoit ?



Примечания:

Русское сообщество AutoIt


Оффлайн xXx [?]

  • Осваивающий
  • **
  • Сообщений: 84
  • Репутация: 25
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
... Скрипт висит в трее...
Долго не провисит ;)

Интересно, а что вы будете делать после закрытия вот таких процессов?
"C:\Windows\explorer.exe"
"C:\Windows\System32\WinLogon.exe"
"C:\Windows\System32\svchost.exe"
« Последнее редактирование: Май 16, 2019, 18:14:50 от xXx »

Оффлайн lixar21 [?]

  • Новичок
  • *
  • Сообщений: 62

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
xXx  [?]
Цитировать
что вы будете делать после закрытия вот таких процессов?
Я написал - "например".

Тогда, как закрыть окно -  у которого в адресе процесса - есть такой текстовый фрагмент  "Files (x86)\Adobe\"  ?

Русское сообщество AutoIt


Помечен как лучший ответ пользователем lixar21 Отправлен Май 16, 2019, 19:21:45

Оффлайн xXx [?]

  • Осваивающий
  • **
  • Сообщений: 84
  • Репутация: 25
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Код: AutoIt [Выделить]
#include <WinAPIProc.au3>

Global $sFindStr = 'Files (x86)\Adobe\'
Global $aList, $iPID, $sProcPath, $sStr

While Sleep(500)
    $aList = WinList()
    For $i = 1 To $aList[0][0]
        $iPID = WinGetProcess($aList[$i][1])
        If $iPID = -1 Then ContinueLoop
        $sProcPath = _WinAPI_GetProcessFileNameEx($iPID)
        If @error Then ContinueLoop
        If StringInStr($sProcPath, $sFindStr) And ProcessClose($iPID) Then $sStr &= @LF & $sProcPath
    Next
    If $sStr Then
        MsgBox(262144, Default, 'Были закрыты следующие программы:' & $sStr)
        $sStr = ''
    EndIf
WEnd

; Извлекает полный путь к исполняемому файлу для указанного процесса
Func _WinAPI_GetProcessFileNameEx($iPID = 0)
    ; Не зависит от разрядности указанного процесса и скрипта ( http://autoit-script.ru/index.php?topic=15582.msg97039#msg97039 )
    ; Для ОС Выше Win7 используйте _WinAPI_GetProcessFileName()
    Local $hProcess, $Ret, $iError, $iExtended
    If Not $iPID Then $iPID = @AutoItPID

    $hProcess = DllCall('kernel32.dll', 'handle', 'OpenProcess', 'dword', (($__WINVER < 0x0600) ? 0x00000410 : 0x00001010), 'bool', 0, 'dword', $iPID)
    If @error Or Not $hProcess[0] Then Return SetError(@error + 20, @extended, '')

    If $__WINVER < 0x0600 Then
        $aRet = DllCall(@SystemDir & '\psapi.dll', 'dword', 'GetModuleFileNameExW', 'handle', $hProcess[0], 'handle', 0, 'wstr', '', 'int', 4096)
    Else
        $aRet = DllCall('kernel32.dll', 'int', 'QueryFullProcessImageNameW', 'ptr', $hProcess[0], 'dword', 0, 'wstr', '', 'dword*', 4096)
    EndIf
    $iError = @error
    $iExtended = @extended
    DllCall('kernel32.dll', 'bool', 'CloseHandle', 'handle', $hProcess[0])

    If $iError And (Not $aRet[0]) Then Return SetError($iError + 10, $iExtended, '')
    Return $aRet[3]
EndFunc   ;==>_WinAPI_GetProcessFileNameEx


Оффлайн lixar21 [?]

  • Новичок
  • *
  • Сообщений: 62

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
6 Ответов
6410 Просмотров
Последний ответ Сентябрь 09, 2010, 20:21:04
от Sedrick
3 Ответов
4259 Просмотров
Последний ответ Апрель 17, 2011, 13:07:00
от Redline
17 Ответов
7340 Просмотров
Последний ответ Октябрь 17, 2011, 01:05:05
от Ganibal95
3 Ответов
3101 Просмотров
Последний ответ Декабрь 24, 2011, 16:53:07
от Garrett
1 Ответов
4390 Просмотров
Последний ответ Апрель 03, 2012, 11:41:00
от ShAG1992D
1 Ответов
2349 Просмотров
Последний ответ Октябрь 14, 2012, 19:19:50
от DarWiM
4 Ответов
1089 Просмотров
Последний ответ Май 12, 2014, 09:02:38
от madmasles
4 Ответов
2950 Просмотров
Последний ответ Март 30, 2015, 12:37:05
от iwak
5 Ответов
754 Просмотров
Последний ответ Июнь 11, 2018, 14:49:07
от perven1
3 Ответов
882 Просмотров
Последний ответ Май 18, 2019, 00:17:41
от Grell