求助,本人想写一个根据关键字关闭程序的代码,测试失败,已解决
本帖最后由 rhci 于 2015-2-9 15:26 编辑代码如下:#include <Misc.au3>
#include <Process.au3>
HotKeySet("!{ESC}", "ext")
While 1
$INI = @ScriptDir & "\rh.ini"
$tt1 = IniRead($INI, "t1", "cmd.exe", "")
$tt2 = IniRead($INI, "t2", "iexplore.exe", "")
$tt3 = IniRead($INI, "t3", "qq.exe", "")
$tt4 = IniRead($INI, "t4", "pplive.exe", "")
If FileExists($INI) Then
Else
IniWrite($INI, "t1", "命令提示符", "cmd.exe")
IniWrite($INI, "t2", "武媚娘传奇", "iexplore.exe")
IniWrite($INI, "t3", "腾讯QQ, "qq.exe")
IniWrite($INI, "t4", "PPLIVE", "pplive.exe")
EndIf
ProcessClose ( "&$tt1&")
ProcessClose ( "&$tt2&" )
ProcessClose ( "&$tt3&" )
ProcessClose ( "&$tt4&" )
Sleep(1000) ;1000 等于1秒
WEnd
Func ext()
Exit
EndFunc ;==>ext
现在的问题是代码测试运行,不报错,但是不关闭程序.
求助,怎么修改才好。
如果我想完善,怎么才能达到读取ini文件中指定的关键字,比如
命令提示符=cmd.exe
武媚娘传奇=iexplore.exe
腾讯QQ=qq.exe
PPLIVE=pplive.exe
可手动定义进程
每60秒循环一次
发现关键字 就直接结束进程
。。那个高手能告诉我下,应该怎么做,最好能把代码贴出来,我刚开始学没多久,望理解。 $tt1 = IniRead($INI, "t1", "cmd.exe", "")
换成
$tt1 = IniRead($INI, "t1", "命令提示符", "") 按你的修改后
rh.ini文件内容如下:
命令提示符=cmd.exe
武媚娘传奇=iexplore.exe
腾讯QQ=qq.exe
PPLIVE=pplive.exe
可执行,但是不查杀进程 怎么修改才能让ProcessClose这个函数查杀进程是
命令提示符=cmd.exe 中的cmd.exe这个呢? 学习了,感谢分享!! ProcessClose ($tt1) 找到办法了,更智能一些,之前的写的代码 等于白写,最新的代码如下#NoTrayIcon
#region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_Icon=F:\lamox\vstart\rh\ico\group.ico
#PRE_Outfile=限制进程x32.exe
#PRE_Outfile_x64=限制进程x64.exe
#PRE_Compile_Both=y
#PRE_Res_Comment=AU3程序写入,发现关键字自动关闭程序
#PRE_Res_Description=关闭本程序快捷键为WIN+ESc
#PRE_Res_Fileversion=0.11
#PRE_Res_LegalCopyright=RX-rh开发,如有需要可联系我获取源码
#PRE_Res_requestedExecutionLevel=None
#PRE_Run_Tidy=y
#endregion ;**** 参数创建于 ACNWrapper_GUI ****
#include <Misc.au3>
#include <Process.au3>
HotKeySet("!{ESC}", "ext")
While 1
$INI = @ScriptDir & "\rh.ini"
IniRead($INI, "关键字", "武媚娘", "close")
If FileExists($INI) Then
rx()
Else
IniWrite($INI, "关键字", "武媚娘", "close")
IniWrite($INI, "关键字", "锁定", "pclock")
rx()
EndIf
rx()
Sleep(5000) ;1000 等于1秒
WEnd
Func rx()
$INI = IniReadSection(@ScriptDir & "\rh.ini", "关键字")
If $INI = 1 Then
MsgBox(4096, "", "错误, 读取INI文件失败,程序退出")
Exit
Else
For $i = 1 To $INI
If WinExists($INI[$i]) Then
If $INI[$i] = "close" Then
WinKill($INI[$i])
EndIf
If $INI[$i] = "pclock" Then
MsgBox(4, "", "因违反操作,本机将于10秒后锁定!", 5)
Sleep(5000)
Run(@ComSpec & " /c " & 'rundll32.exe user32.dll,LockWorkStation', "", @SW_HIDE)
EndIf
EndIf
Next
EndIf
EndFunc ;==>rx
Func ext()
Exit
EndFunc ;==>ext
到这里,程序所需功能基本搞定,但是 有朋友说可以把 循环做成函数 用定时器调用
然后就不说了,我晕死 我是菜鸟啊 能搞定的话就不说那么多了,谁能给指导下
怎么把循环换成函数,怎么用定时器触发,最好是代码贴出来
最后 他告诉我 循环 费 CPU 不知道 是不是真的 回复 6# zhouhaijin
我试试去, 回复 6# zhouhaijin
我试试去,
这是按你的提示做的修改#include <Misc.au3>
#include <Process.au3>
HotKeySet("!{ESC}", "ext")
While 1
$INI = @ScriptDir & "\rh.ini"
$tt1 = IniRead($INI, "t1", "命令提示符", "")
$tt2 = IniRead($INI, "t2", "武媚娘传奇", "")
$tt3 = IniRead($INI, "t3", "腾讯QQ", "")
$tt4 = IniRead($INI, "t4", "PPLIVE", "")
If FileExists($INI) Then
Else
IniWrite($INI, "t1", "命令提示符", "cmd.exe")
IniWrite($INI, "t2", "武媚娘传奇", "iexplore.exe")
IniWrite($INI, "t3", "腾讯QQ, ","qq.exe")
IniWrite($INI, "t4", "PPLIVE", "pplive.exe")
EndIf
ProcessClose ($tt1)
ProcessClose ($tt2)
ProcessClose ($tt3)
ProcessClose ($tt4)
Sleep(1000) ;1000 等于1秒
WEnd
Func ext()
Exit
EndFunc ;==>ext问题来了,直接打开不了IE 和我的想法 不同啊 IniWrite($INI, "t2", "武媚娘传奇", "iexplore.exe");因为你也关IE进程 回复 7# rhci
不是真的,只是你的循环里调用了两次rx()上面那个判断已经调用一次,如果你不需要连续两次调用就不用加下面IF外的那个
你加了sleep跟定时器一样不需要外加 #NoTrayIcon
#region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_Icon=F:\lamox\vstart\rh\ico\box.ico
#PRE_Outfile=pc32.exe
#PRE_Outfile_x64=pc64.exe
#PRE_Compression=4
#PRE_Compile_Both=y
#PRE_Res_Comment=AU3程序写入,发现关键字自动关闭程序
#PRE_Res_Description=关闭本程序快捷键为WIN+ESc
#PRE_Res_Fileversion=0.11.0.0
#PRE_Res_LegalCopyright=RX-rh开发,如有需要可联系我获取源码
#PRE_Res_requestedExecutionLevel=None
#PRE_Run_Tidy=y
#endregion ;**** 参数创建于 ACNWrapper_GUI ****
#include <Misc.au3>
#include <Process.au3>
HotKeySet("!{ESC}", "ext");退出快捷键为ALT+esc键
While 1
$INI = @ScriptDir & "\rhc.ini"
IniRead($INI, "关键字", "视频", "close")
If FileExists($INI) Then
rx()
Else
Local $hDownload = InetGet("http://rhci.vicp.cc/killset/rhc.ini", @ScriptDir & "\rhc.ini", 1, 1)
Do
Sleep(250)
Until InetGetInfo($hDownload, 2) ; 检查下载是否完成.
InetClose($hDownload) ; 关闭句柄,释放资源.
rx()
EndIf
Sleep(2000) ;1000 等于1秒
WEnd
Func rx()
$INI = IniReadSection(@ScriptDir & "\rhc.ini", "关键字")
If $INI = 1 Then
IniWrite(@ScriptDir & "\rhc.ini", "关键字", "视频", "close")
IniWrite(@ScriptDir & "\rhc.ini", "关键字", "锁定", "pclock")
IniWrite(@ScriptDir & "\rhc.ini", "关键字", "重启", "reboot")
IniWrite(@ScriptDir & "\rhc.ini", "关键字", "关机", "powred")
MsgBox(64, "提示", " 首次生成配置文件,请按格式写入文件,并保存")
Sleep(250)
ShellExecute("rhc.ini", "", @ScriptDir, "edit"); 打开配置文件并编辑
Exit
Else
For $i = 1 To $INI
If WinExists($INI[$i]) Then
If $INI[$i] = "close" Then
WinKill($INI[$i])
EndIf
If $INI[$i] = "pclock" Then
MsgBox(4, "", "因违反操作,本机将于10秒后锁定!", 5)
Sleep(5000)
Run(@ComSpec & " /c " & 'rundll32.exe user32.dll,LockWorkStation', "", @SW_HIDE)
EndIf
If $INI[$i] = "reboot" Then
MsgBox(4, "提醒", "本机将于30秒后重启!", 30)
Shutdown(6)
EndIf
If $INI[$i] = "powred" Then
MsgBox(4, "提醒", "本机将于30秒后关机!", 30)
Shutdown(5)
EndIf
EndIf
Next
EndIf
EndFunc ;==>rx
Func ext()
Exit
EndFunc ;==>ext
只能说这些,仁者见仁,智者见智,源码就这,至于你拿去做啥,我就管不到了 还有 本帖终结
页:
[1]