Что нового

Как заморозить процесс, введённый в Input

BiG_BoY

Новичок
Сообщения
51
Репутация
1
Всем привет.
Вот вроде написал скрипт для заморозки процесса, который мы введём в поле для ввода информации.
Вот сам скрипт, когда пытаюсь его запустить выдают ошибку, что я зделал не так?
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $process=$Input, $fSuspended
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Заморозка процесса", 290, 57, 192, 124)
$Input = GUICtrlCreateInput("pb.exe", 8, 16, 105, 21)
GUICtrlSetBkColor(-1, 0xDCDFE4)
$Button1 = GUICtrlCreateButton("Заморозить\разморозить", 128, 16, 147, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
			
		Case $Button1
            _ProcSuspendResume($process)
			
			
    EndSwitch
WEnd
 Func _ProcSuspendResume($process)
    $processid = ProcessExists($process)
    If $processid Then
        If $fSuspended Then
            $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $processid)
            $i_sucess = DllCall("ntdll.dll","int","NtResumeProcess","int",$ai_Handle[0])
            DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $ai_Handle)
            If IsArray($i_sucess) Then
                $fSuspended = 0
                Return 1
            Else
                SetError(1)
                Return 0
            Endif
        Else
            $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $processid)
            $i_sucess = DllCall("ntdll.dll","int","NtSuspendProcess","int",$ai_Handle[0])
            DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $ai_Handle)
            If IsArray($i_sucess) Then
                $fSuspended = 1
                Return 1
            Else
                SetError(1)
                Return 0
            Endif
        EndIf
    Else
        SetError(2)
        Return 0
    Endif
EndFunc

Global $fSuspended = 0
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Re: [Ошибки] Ошибка при запуске скрипта

BiG_BoY [?]
что я зделал не так?
не выложил ошибку, для начала


Добавлено:
Сообщение автоматически объединено:

Код:
Global $process=$Input, $fSuspended

у тебя не определена переменная $Input, а ты ее уже присваиваешь.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Ошибки] Ошибка при запуске скрипта

BiG_BoY
Попробуйте так:
Код:
#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>

Global $fSuspended = 0, $sToCombo
$aProcessList = ProcessList()
For $i = 1 To $aProcessList[0][0]
	If StringRight($aProcessList[$i][0], 3) == 'exe' Then
		$sToCombo &= $aProcessList[$i][0] & '|'
	EndIf
Next

$hGui = GUICreate('Заморозка процесса', 290, 57)
$nCombo = GUICtrlCreateCombo('', 8, 16, 140, 21, BitOR($GUI_SS_DEFAULT_COMBO, $CBS_SIMPLE))
GUICtrlSetBkColor(-1, 0xDCDFE4)
GUICtrlSetData(-1, $sToCombo)
$nButton1 = GUICtrlCreateButton('Заморозить процесс', 156, 16, 126, 21)
GUICtrlSetState(-1, $GUI_FOCUS)
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nButton1
			$sProcess = GUICtrlRead($nCombo)
			If $sProcess Then
				_ProcSuspendResume($sProcess)
				If $fSuspended Then
					GUICtrlSetData($nButton1, 'Разморозить процесс')
				Else
					GUICtrlSetData($nButton1, 'Заморозить процесс')
				EndIf
			EndIf
	EndSwitch
WEnd

Func _ProcSuspendResume($process)
	$processid = ProcessExists($process)
	If $processid Then
		If $fSuspended Then
			$ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $processid)
			$i_sucess = DllCall("ntdll.dll", "int", "NtResumeProcess", "int", $ai_Handle[0])
			DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $ai_Handle)
			If IsArray($i_sucess) Then
				$fSuspended = 0
				Return 1
			Else
				SetError(1)
				Return 0
			EndIf
		Else
			$ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $processid)
			$i_sucess = DllCall("ntdll.dll", "int", "NtSuspendProcess", "int", $ai_Handle[0])
			DllCall('kernel32.dll', 'ptr', 'CloseHandle', 'ptr', $ai_Handle)
			If IsArray($i_sucess) Then
				$fSuspended = 1
				Return 1
			Else
				SetError(1)
				Return 0
			EndIf
		EndIf
	Else
		SetError(2)
		Return 0
	EndIf
EndFunc   ;==>_ProcSuspendResume
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Re: [Ошибки] Ошибка при запуске скрипта

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Как правильно называть темы

"[Ошибки] Ошибка при запуске скрипта" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, Администратор форума.
 
Автор
B

BiG_BoY

Новичок
Сообщения
51
Репутация
1
Переименовал тему.
Вот ошибка:
 
Верх