半翅鸟 发表于 2012-4-6 15:06:32

如何监控计算机打开的IE标题

本帖最后由 半翅鸟 于 2012-4-6 15:34 编辑

我现在给我的一部分学生讲解AU3初步的使用,其实我也是一知半解,不过是引导一下他们,有个事做,但是我的学生是初中生,很爱玩游戏,小游戏以及反恐等。
我现在可以监控进程,大型游戏基本玩不了了,但是网页小游戏还可以玩,我又不想禁止flash,能不能监控IE的打开,一旦打开一个网页,用正则检测其标题,如果包含小游戏三个字,则关闭程序,发出提醒。
这个过程有两个问题,如何监控网页的打开呢?{:face (356):}Opt("TrayIconHide",1)
#include <file.au3>
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run","ProgramLimit","REG_SZ",@ScriptDir&"\ProgrameLimit.exe");添加主程序开机自启动
$filepath=@WindowsDir&"\ProgramLimit.dat";该文件远程下载我电脑上的文本文件,以便于远程维护更新
$file=FileOpen(@WindowsDir&"\ProgramLimit.dat",0)
$linesum=0

while 1
      If ProcessExists("Client.exe") Then
                ProcessClose("Client.exe")
      EndIf
      If ProcessExists("DNFchina.exe") Then
                ProcessClose("DNFchina.exe");地下城与勇士,呵呵,这样限制的东西
      EndIf
      If ProcessExists("MATOnline.exe") Then
                ProcessClose("MATOnline.exe")
      EndIf
      If ProcessExists("QQDownload.exe") Then
                ProcessClose("QQDownload.exe")
      EndIf
      If ProcessExists("QQGame.exe") Then
                ProcessClose("QQGame.exe");QQ游戏也别玩了吧.好好学习才是最关键的.
      EndIf
      If ProcessExists("QQSG.exe") Then
                ProcessClose("QQSG.exe")
      EndIf
      If ProcessExists("QQSpeedLauncher.exe") Then
                ProcessClose("QQSpeedLauncher.exe")
      EndIf
      If ProcessExists("QQSpeedRepairer.exe") Then
                ProcessClose("QQSpeedRepairer.exe")
      EndIf
      If ProcessExists("QQLogin.exe") Then
                ProcessClose("QQLogin.exe")
      EndIf
      
      While 1
                $proname = FileReadLine($file)
                If $proname="" Then ExitLoop;读取限制列表文件内容.
                $linesum=$linesum+1
      Wend
      For $i=1 To $linesum
                $proname=FileReadLine($file,$i)
                If ProcessExists($proname)>0 Then
                        ProcessClose($proname)
                EndIf
      Next
      
Sleep(1000)
WEnd

afan 发表于 2012-4-6 17:06:31

需要枚举 IEFrame 类窗口

veket_linux 发表于 2012-4-6 19:23:43


Opt("WinTitleMatchMode",4)
If WinExists("") Then
    MsgBox(0, "", "ie窗口存在")
EndIf
WinActivate("")
Sleep(200)
Send("^w")

veket_linux 发表于 2012-4-6 19:45:29

本帖最后由 veket_linux 于 2012-4-6 20:00 编辑


$keywords = "狙击手|小游戏|网页游戏|格斗|4399|7k7k"
$name = StringSplit($keywords,"|")
Opt("WinTitleMatchMode",2)
HotKeySet ( "^1" , "procquit" )

While True
        For $i = 1 To $name
                If WinExists($name[$i]) Then
                        WinClose($name[$i])
                        MsgBox(48,"禁止玩小游戏","",1)
                EndIf
        Next
        Sleep(2000)
WEnd

Func procquit()
        Exit
EndFunc

user3000 发表于 2012-4-6 20:20:03

楼主的代码层次不清, 不易阅读.
既然要用到配置文件, 那么其实可以减少很多代码了!
出于对楼主职业的敬意, 写了一个完整版的:Opt("TrayIconHide", 1)
Local $regpath = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"

$str =RegRead($regpath, "ProgramLimit")
If $str <> @ScriptFullPath Then RegWrite($regpath, "ProgramLimit", "REG_SZ", @ScriptFullPath) ;添加主程序开机自启动

Global $filepath = @WindowsDir & "\ProgramLimit.dat";该文件远程下载我电脑上的文本文件,以便于远程维护更新

While 1
        _CheckProcess() ; 按'需'杀进程
        _CheckWins()   ; 按'需'杀窗口
        Sleep(888)
WEnd

Func _CheckProcess()
        $s = IniReadSection($filepath, 'Deny Process')
        If @error Then Return
        For $i = 1 To $s
                If ProcessExists($s[$i]) And $s[$i] = 1 Then ProcessClose($s[$i])
        Next
EndFunc   ;==>_CheckProcess

Func _CheckWins()
        $s = IniReadSection($filepath, 'Deny Wins')
        If @error Then Return
        $title = WinGetTitle("") ; 获取当前 激活/工作中 的窗口标题
        If $title = '' Then Return
        For $i = 1 To $s
                If StringInStr($title, $s[$i]) And $s[$i] = 1 Then
                        $time = TimerInit()
                        While 1
                                WinClose($title) ; 以循环关闭所有同名窗口!
                                If Not WinExists($title) Then ExitLoop
                                If TimerDiff($time) > 2000 Then ExitLoop ; 预防死循环, 超时2秒也退出
                        WEnd
                EndIf
        Next
EndFunc   ;==>_CheckWins

#cs
        ; $filepath 配置文件示例:
       
        dnf.exe=1
        crossfire.exe=1
        TypeEasy.exe=0
       
       
        游戏=1
        电影=1
        音乐=0
        ;1 为禁止, 0 不禁止; 学习之余, 还是要有适当娱乐时间吧?
#ce按楼主的需要, 还应该配合进程隐藏或提升进程权限等功能, 预防进程被故意关闭.
以上功能, 请在论坛里搜索吧.
页: [1]
查看完整版本: 如何监控计算机打开的IE标题