命名为smss.au3 编译后为smss.exe 运行后会被认为系统进程在任务管理器里不会被结束 !discuzcode_copyclipboard!
!discuzcode_code!:
#NoTrayIcon
If $cmdline[0]="" Then
$var = IniRead(@scriptdir&"\cfg.ini", "aspww","窗口名","")
$pro = IniRead(@scriptdir&"\cfg.ini", "aspww","进程名","")
process()
$i=1
While 1
$winc=StringSplit($var,",")
$title = WinList()
For $ii = 1 to $title[0][0]
If $title[$ii][0] <> "" AND IsVisible($title[$ii][1]) Then
if StringInStr($title[$ii][0], $winc[$i]) Then
WinClose($title[$ii][0],"")
msgbox(16,$title[$ii][0]&"错误警告!!!","程序运行失败"&@CRLF&"当前程序可能会带有破坏性质,请勿使用")
endif
EndIf
Next
ping("192.168.0.1",250)
If @error=4 Then cip()
$i=$i+1
if $i=$winc[0] then $i=1
sleep(50)
Wend
Else
$cm=StringSplit($cmdline[1],"\")
MsgBox(16,$cm[$cm[0]]&"错误警告!!!","程序运行失败"&@CRLF&"当前程序可能会造成网络不正常,请勿使用")
Exit
EndIf
Func process()
$proc=StringSplit($pro,",")
for $ii=1 to $proc[0]
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\"&$proc[$ii],"Debugger","REG_SZ",@ScriptDir&"\smss.exe")
Next
EndFunc
Func cip()
For $i = 1 To 10
ping("192.168.0.1",250)
If @error<>4 Then Return
Sleep(500)
Next
ToolTip("警告,计算机当前网络不正常,请联系管理员进行检查并排除"&@CRLF&"计算机即将注销",0,0)
Sleep(3000)
$scommand="shutdown /l"
Run(@ComSpec & " /C " & $sCommand, "", @SW_HIDE)
EndFunc
Func IsVisible($handle)
If BitAnd( WinGetState($handle), 2 ) Then
Return 1
Else
Return 0
EndIf
EndFunc再创建cfg.ini !discuzcode_copyclipboard!
!discuzcode_code!:
[aspww]
进程名=
窗口名=相信大家都能看懂
已经按照二楼朋友给的提示修改了 并且加入本地连接检测
网吧用万象的都有一个头疼的问题 就是别人上机后 在卡上没钱后 可以拔网线后 继续玩单机游戏
我上面的功能是检测@error反回的4是检测本地连接是否正常
也就是ping 出 Hardware error 就进入另一个循环 如果在5秒内还是Hardware error 那么就给出3秒警告提示 再注销计算机
本来考虑用MSGBOX来给出提示的 但好象如果他不点 MSGBOX就不会执行下面的注销命令 所以改用 TOOLTIP来警告