Тема: AHK: Скрытие процесса в диспетчере задач Windows
Помогите скрыть процессы в диспетчера задач при помощи AutoHotkey.
Есть готовая программа на AutoIt для скрытия процессов в диспетчере задач. Имена процессов записаны в .ini файле. можно ли данный скрипт переделать под AutoHotkey. Скрипт взял в интернете, проверил работает. к примеру, если в файле C:\Temp\Savetext.ini прописать explorer.exe, то при открытии вкладки "процессы" в диспетчере задач в списке процессов его невидно.
Вот скрипт на AutoIt:
Код (AutoHotKey):
#Include <File.au3>
#NoTrayIcon
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
;
Dim $masiv[100]
Dim $masiv1[100]
;dim $masiv[]
WinWait("Диспетчер задач Windows")
Opt("WinWaitDelay", 0)
$hFile = FileOpen("C:\Temp\Savetext.ini",0)
$v = 0
$line = _FileCountLines("C:\Temp\Savetext.ini")
For $p=0 To $line
$masiv[$p] = FileReadLine($hFile)
Next
FileClose($hFile)
;==============================================
$hFile1 = FileOpen("C:\Temp\Savetext1.ini",0)
$v1 = 0
$line1 = _FileCountLines("C:\Temp\Savetext1.ini")
For $p=0 To $line1
$masiv1[$p] = FileReadLine($hFile1)
Next
FileClose($hFile1)
;==============================================
While 1
show(_Win2Process("Form911"))
For $l=0 To $line
;show(_Win2Process($w))
;
WinWait("Диспетчер задач Windows")
show($masiv[$l])
Next
For $l1=0 To $line1
WinWait("Диспетчер задач Windows")
show(_Win2Process($masiv1[$l1]))
Next
WEnd
Func show($sProcess)
$iIndex = ControlListView("Диспетчер задач Windows", "", "SysListView321", "FindItem", $sProcess)
If $iIndex = -1 Then
Sleep(5)
Else
$hTaskMgr = WinGetHandle("Диспетчер задач Windows")
$hListView = ControlGetHandle($hTaskMgr, "", "SysListView321")
DllCall("User32.dll", "int", "SendMessage", "hwnd", $hTaskMgr, "int", $WM_COMMAND, "int", 40025, "int", 0)
DllCall("User32.dll", "int", "SendMessage", "hwnd", $hListView, "int", $LVM_DELETEITEM, "int", $iIndex, "int", 0)
EndIf
EndFunc
; название процесса по его заголовку
func _Win2Process($wintitle)
if isstring($wintitle) = 0 then return -1
$wproc = WinGetProcess($wintitle)
return _ProcessName($wproc)
endfunc
func _ProcessName($pid)
if isstring($pid) then $pid = processexists($pid)
if not isnumber($pid) then return -1
$proc = ProcessList()
for $p = 1 to $proc[0][0]
if $proc[$p][1] = $pid then return $proc[$p][0]
Next
return -1
EndFunc
Func show1($sProcess)
$iIndex = ControlListView("Диспетчер задач Windows", "", "SysListView321", "FindItem", $sProcess)
If $iIndex = -1 Then
Sleep(5)
Else
$hTaskMgr = WinGetHandle("Диспетчер задач Windows")
$hListView = ControlGetHandle($hTaskMgr, "", "SysListView321")
DllCall("User32.dll", "int", "SendMessage", "hwnd", $hTaskMgr, "int", $WM_COMMAND, "int", 40025, "int", 0)
DllCall("User32.dll", "int", "SendMessage", "hwnd", $hListView, "int", $LVM_DELETEITEM, "int", $iIndex, "int", 0)
EndIf
EndFunc