|
本帖最后由 131738 于 2011-3-25 14:47 编辑
修改大作《纯AU3拦截进程创建,并阻止或允许其运行》之 19 楼精简版代码修改为无界面的自动应答形式如下:ToolTip("开始监视", 0, 0,"进程监视",1);提示监视已启动
;其它原代码.....
....
....
....
Func _ButtonProc($hWnd, $iMsg, $iCreator, $iPid)
If ($iMsg <> 0x3F79) Then
Return _WinAPI_CallWindowProc($hOBC, $hWnd, $iMsg, $iCreator, $iPid)
EndIf
Local $hProcess, $pPeb, $pUserParam, $iImage, $iParam, $sImage, $sParam, $pBuffer
$pBuffer = _RTHeapAlloc(24)
$hProcess = _RTOpenProcess($iPid)
_NtQueryInformationProcess($hProcess, 0, $pBuffer, 24)
$pPeb = _RTReadBytes($pBuffer + 4, "ptr", 4)
$pUserParam = _RTReadProcessMemory($hProcess, $pPeb + 16, 0, 4, "ptr*")
$iImage = _RTReadProcessMemory($hProcess, $pUserParam + 60, 0, 4, "ptr*")
$iParam = _RTReadProcessMemory($hProcess, $pUserParam + 68, 0, 4, "ptr*")
$sImage = _RTReadProcessMemory($hProcess, $pUserParam + $iImage, 0, 520, "wstr")
$sParam = _RTReadProcessMemory($hProcess, $pUserParam + $iParam, 0, 520, "wstr")
;自动应答:
If $sImage = @ProgramFilesDir & "\Internet Explorer\iexplore.exe" Then
ProcessClose($iPid)
ElseIf $sImage = @SystemDir & "\notepad.exe" Then
ProcessClose($iPid)
Else
_NotifyProcessCreation(0, 0, 0, $iPid)
EndIf
_RTCloseHandle($hProcess)
_RTHeapFree($pBuffer)
EndFunc ;==>_ButtonProc
其它部分完全保持源码,编译为 ProcessMonitor.exe
1. 启动 ProcessMonitor.exe
2. 启动 XXX.exe 应用工具安装程序,安装结束能成功拦截弹出的网页!
3. 不关闭 ProcessMonitor.exe
4. 接着启动 XXX.exe 应用工具的卸载程序,卸载结束也能成功拦截弹出的网页!
问题:编写 XXX.exe 的自动安装脚本:Run("G:\Auto_Code\ProcessMonitor.exe")
ProcessWait("ProcessMonitor.exe")
;开始自动安装代码
Run(@ScriptDir & "\XXX.exe")
.....
......
...
...
ToolTip("将延时 5 秒以监视目标程序退出后的弹窗进程!", @DesktopWidth/2, @DesktopHeight/2, "已完成 [ XXX ] 的自动安装.", 1, 2)
Sleep ( 5000 )
Send("!{F2}");关闭进程监视
运行这个脚本,或编译的 XXX_zd.exe , 拦截失败!!!
自动脚本运行后,能启动 ProcessMonitor.exe ,这个我在 ProcessMonitor.au3 中加了启动提示的!
分析 ProcessMonitor.au3 代码,由于本人根本不懂编程及进程原理,依据本人现有水平,百思不得其解!!!特向 P 版求教!!! 谢谢!!!
感谢短消息中提供的相关源码,但用于自动脚本中仍然失败! |
|