|
  
|
1#
发表于 2007-5-2 01:06 PM
| 只看该作者
窗口手术师 v1.0 Au3源码
窗口手术师是一款小巧的控制窗口的好工具。它不但可以轻松复制窗口的文字、标题,还能获取窗口内控件的文本。除了简单的查看功能,它还可以对窗口进行完全的修改——修改标题、改变透明度、改变窗口状态(隐藏、显示等等)、将窗口置顶、修改窗口内控件的文字……总之,在窗口手术师的刀下,你可以随心所欲地控制窗口。
与窗口手术师类似的软件还有CopyText、Pickup Window,但功能却不如窗口手术师强大,也远不如窗口手术师易用。
By 一点笔记-
- #include <GUIConstants.au3>
- #Include <GuiCombo.au3>
- #include <Constants.au3>
- #include <Array.au3>
- #NoTrayIcon
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 变量声明
- Dim $Mode = 2, $Ver = "v1.0"
- Dim $aboutwin,$email,$Label_03,$Edit1,$send,$aboutwinClose,$oconted
- Global Const $WM_NOTIFY = 0x004E
- Global Const $WM_HSCROLL = 0x114
- Global Const $NM_FIRST = 0
- Global Const $NM_CLICK = ($NM_FIRST - 2)
- Global Const $NM_DBLCLK = ($NM_FIRST - 3)
- Global Const $NM_RCLICK = ($NM_FIRST - 5)
- Global Const $TB_LINEUP = 0; //ラインアップ
- Global Const $TB_LINEDOWN = 1; //ラインダウン
- Global Const $TB_PAGEUP = 2; //ページアップ
- Global Const $TB_PAGEDOWN = 3; //ページダウン
- Global Const $TB_THUMBPOSITION = 4; //マウスでスライダーを移動した
- Global Const $TB_THUMBTRACK = 5; //マウスでスライダーをドラグしている
- Global Const $TB_TOP = 6; //[Home]キーによる最大値への移動
- Global Const $TB_BOTTOM = 7; //[End]キーによる最小値への移動
- Global Const $TB_ENDTRACK = 8; //スライダーの移動が完了した
- Global $list[22]
- $list[0] = "「开始」菜单"
- $list[1] = "Default IME"
- $list[2] = "M"
- $list[3] = "SysFader"
- $list[4] = "MCI command handling window"
- $list[5] = "DirectorExtension"
- $list[6] = "CiceroUIWndFrame"
- $list[7] = "TF_FloatingLangBar_WndTitle"
- $list[8] = "NetDDE Agent"
- $list[9] = "TrayIcon"
- $list[10] = "CAsyncSocketEx Helper Window"
- $list[11] = "Socket Notification Sink"
- $list[12] = "Logitech GetMessage Hook"
- $list[13] = "LogiTrayMgrWnd"
- $list[14] = "Logitech E/M Executive"
- $list[15] = "Connections Tray"
- $list[16] = "电表"
- $list[17] = "Program Manager"
- $list[18] = "?汐杵湩圠湩潤wж"
- $list[19] = "Acrobat IEHelper"
- $list[20] = "MS_WebcheckMonitor"
- $list[21] = "窗口手术师 " & $Ver
- $blist = StringSplit(IniRead("config.ini","config","black",""),"|")
- If Not @error Then
- ReDim $list[22+$blist[0]]
- For $i = 1 to $blist[0]
- $list[21+$i] = $blist[$i]
- Next
- EndIf
- If IniRead("config.ini","config","isshowmore","false") = "true" Then
- $height = 356
- $text = " 简化↑"
- Else
- $height = 81
- $text = " 详细↓"
- EndIf
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 脚本开始
- Opt("GUIOnEventMode", 1)
- Opt("TrayOnEventMode",1)
- Opt("WinTitleMatchMode",4)
- Opt("TrayMenuMode",1)
- Opt('GUIResizeMode', 802)
- AutoItSetOption ( "RunErrorsFatal",0)
- TraySetState()
- TraySetToolTip ( "窗口手术师 " & $Ver )
- Opt("TrayIconHide",1)
- TraySetOnEvent ($TRAY_EVENT_PRIMARYDOWN, "showwin" )
- $Parent = GUICreate("") ;用于隐藏任务栏图标
- $main = GUICreate("窗口手术师 " & $Ver, 217,$height,@DesktopWidth - 244,24, -1, BitOR($WS_EX_TOPMOST,$WS_EX_WINDOWEDGE),$Parent)
- GUISetOnEvent($GUI_EVENT_MINIMIZE, "totray")
- GUISetOnEvent($GUI_EVENT_CLOSE, "exitprograme")
- GUICtrlCreateLabel("窗口标题:", 6, 6, 64, 17)
- $win_titles = GUICtrlCreateCombo("", 6, 24, 205, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL,$WS_HSCROLL,$WS_VSCROLL))
- $p_follow = GUICtrlCreateCheckbox("跟随鼠标", 139, 4, 74, 17)
- $p_exit = GUICtrlCreateButton("退出", 165, 53, 46, 22, $BS_FLAT)
- $win_more = GUICtrlCreateButton($text, 5, 53, 46, 22, $BS_FLAT)
- $p_tools = GUICtrlCreateButton("工具", 114, 53, 46, 22, $BS_FLAT)
- GUICtrlCreateGroup("窗口信息", 5, 84, 207, 169)
- GUICtrlCreateLabel("标题[", 12, 106, 31, 17)
- $win_title = GUICtrlCreateInput("", 13, 124, 191, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
- $win_change_title = GUICtrlCreateLabel("修改", 43, 106, 28, 17)
- GUICtrlSetColor(-1, 0x0000FF)
- GUICtrlSetCursor ($win_change_title, 0)
- $win_copy_title = GUICtrlCreateLabel("复制", 77, 106, 28, 17)
- GUICtrlSetColor(-1, 0x0000FF)
- GUICtrlSetCursor ($win_copy_title, 0)
- GUICtrlCreateLabel("]:", 102, 106, 10, 17)
- GUICtrlCreateLabel(",", 70, 106, 7, 17)
- $win_change_chan = GUICtrlCreateLabel("取消", 178, 106, 28, 17)
- GUICtrlSetState (-1,$GUI_HIDE)
- GUICtrlSetColor(-1, 0x0000FF)
- GUICtrlSetCursor ($win_change_chan, 0)
- $win_change_ok = GUICtrlCreateLabel("保存", 148, 106, 24, 17)
- GUICtrlSetState (-1,$GUI_HIDE)
- GUICtrlSetColor(-1, 0x0000FF)
- GUICtrlSetCursor ($win_change_ok, 0)
- GUICtrlCreateLabel("状态:", 12, 156, 31, 17)
- $win_trans = GUICtrlCreateSlider(111, 150, 98, 20)
- GUICtrlSetLimit ($win_trans,255)
- GUICtrlSetData($win_trans, 255)
- GUICtrlCreateLabel("窗口文字[", 13, 180, 55, 17)
- $win_copy_text = GUICtrlCreateLabel("复制", 68, 180, 28, 17)
- GUICtrlSetColor(-1, 0x0000FF)
- GUICtrlSetCursor ($win_copy_text, 0)
- GUICtrlCreateLabel("]:", 92, 180, 10, 17)
- $win_state = GUICtrlCreateCombo("", 44, 151, 65, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
- GUICtrlSetData(-1, "隐藏|显示|禁用|可用|最大化|最小化")
- $win_text = GUICtrlCreateEdit("", 13, 196, 192, 21, BitOR($ES_READONLY,$ES_WANTRETURN))
- $win_close = GUICtrlCreateButton("关闭窗口", 141, 223, 64, 22, $BS_FLAT)
- $win_on_top = GUICtrlCreateButton("窗口置顶", 72, 223, 64, 22, $BS_FLAT)
- GUICtrlCreateGroup("", -99, -99, 1, 1)
- GUICtrlCreateGroup("控件信息", 5, 254, 207, 97)
- GUICtrlCreateLabel("控件ID:", 12, 278, 42, 17)
- $ctrl_ids = GUICtrlCreateCombo("", 56, 273, 148, 25,BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL,$WS_HSCROLL,$WS_VSCROLL))
- GUICtrlCreateLabel("控件文字[", 12, 302, 55, 17)
- $ctrl_change_text = GUICtrlCreateLabel("修改", 67, 302, 24, 17)
- GUICtrlSetColor(-1, 0x0000FF)
- GUICtrlSetCursor ($ctrl_change_text, 0)
- GUICtrlCreateLabel(",", 92, 302, 7, 17)
- $ctrl_copy_text = GUICtrlCreateLabel("复制", 98, 302, 28, 17)
- GUICtrlSetColor(-1, 0x0000FF)
- GUICtrlSetCursor ($ctrl_copy_text, 0)
- GUICtrlCreateLabel("]:", 123, 302, 10, 17)
- $ctrl_change_ok = GUICtrlCreateLabel("保存", 148, 302, 24, 17)
- GUICtrlSetState (-1,$GUI_HIDE)
- GUICtrlSetColor(-1, 0x0000FF)
- GUICtrlSetCursor ($ctrl_change_ok, 0)
- $ctrl_text = GUICtrlCreateInput("", 12, 321, 192, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
- $ctrl_change_chan = GUICtrlCreateLabel("取消", 178, 302, 28, 17)
- GUICtrlSetColor(-1, 0x0000FF)
- GUICtrlSetState (-1,$GUI_HIDE)
- GUICtrlSetCursor ($ctrl_change_chan, 0)
- GUICtrlCreateGroup("", -99, -99, 1, 1)
- ;;;;;; Menu
- $ToolsDummy = GUICtrlCreateDummy()
- $ToolsContext = GUICtrlCreateContextMenu($ToolsDummy)
- ;$p_view_keys = GUICtrlCreateMenuItem("设置热键", $ToolsContext)
- ;$p_black_wins = GUICtrlCreateMenuItem("窗口过滤", $ToolsContext)
- $p_about = GUICtrlCreateMenuItem("关于/Bug上报", $ToolsContext)
- GUICtrlCreateMenuItem("", $ToolsContext)
- $p_visti = GUICtrlCreateMenuItem("访问网站...", $ToolsContext)
- $p_check_new = GUICtrlCreateMenuItem("检查更新...", $ToolsContext)
- GUICtrlSetOnEvent ($win_titles,"load_title_for_ctrl")
- GUICtrlSetOnEvent ($win_more,"show_more")
- GUICtrlSetOnEvent ($p_exit,"exitprograme")
- GUICtrlSetOnEvent ($win_close,"close_win")
- GUICtrlSetOnEvent ($win_on_top,"on_top")
- GUICtrlSetOnEvent ($win_state,"set_state")
- GUICtrlSetOnEvent ($win_copy_title,"copy_text")
- GUICtrlSetOnEvent ($win_copy_text,"copy_text")
- GUICtrlSetOnEvent ($ctrl_copy_text,"copy_text")
- GUICtrlSetOnEvent ($win_change_title,"change_title")
- GUICtrlSetOnEvent ($win_change_ok,"change_title")
- GUICtrlSetOnEvent ($win_change_chan,"change_title")
- GUICtrlSetOnEvent ($ctrl_ids,"load_ctrl")
- GUICtrlSetOnEvent ($ctrl_change_text,"change_text")
- GUICtrlSetOnEvent ($ctrl_change_ok,"change_text")
- GUICtrlSetOnEvent ($ctrl_change_chan,"change_text")
- GUICtrlSetOnEvent ($p_follow,"change_mode")
- GUICtrlSetOnEvent ($p_tools,"show_tool_menu")
- GUICtrlSetOnEvent ($p_about,"show_about")
- GUICtrlSetOnEvent ($p_visti,"vistblog")
- GUICtrlSetOnEvent ($p_check_new,"Update")
- If IniRead("config.ini","config","mouse","false") = "true" Then
- $Mode = 2
- GUICtrlSetState ($p_follow ,$GUI_CHECKED)
- Else
- $Mode = 1
- GUICtrlSetState ($p_follow ,$GUI_UNCHECKED)
- EndIf
- $otrans = GUICtrlRead($win_trans)
- $owin = GUICtrlRead($win_titles)
- $ohandle = WinGetHandle ($owin)
- Dim $octrlid,$ohwins,$to_select_ctrl
- Global $owins = load_win_titles(IniRead("config.ini","config","lastwin",""))
- load_title()
- load_ctrls()
- load_text()
- Global $ostate = load_state()
- $octrlid = GUICtrlRead($ctrl_ids)
- GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events")
- GUIRegisterMsg($WM_HSCROLL, "MY_WM_HSCROLL")
- GUISetState(@SW_SHOW)
- While 1
- Switch $Mode
- Case 1
- Sleep(100)
- $nwins = _GetWins ()
- $owin = WinGetTitle($ohandle)
- If ($owin <> GUICtrlRead($win_title) And $owin <> GUICtrlRead($win_titles)) Or (UBound($owins) <> UBound($nwins) And _CompareArray($nwins,$owins) =0 ) Then
- load_win_titles($owin)
- load_title()
- load_ctrls()
- load_text()
- load_state()
- $owins = $nwins
- EndIf
- Case 2
- Sleep(60)
- $nowtitle = WinGetTitle("active")
- If ($nowtitle ="" Or _IsIn($nowtitle) = 1 Or $nowtitle = $list[21]) And WinExists(GUICtrlRead($win_titles)) =0 Then
- load_win_titles()
- load_title()
- load_state()
- load_ctrls()
- load_text()
- ElseIf $nowtitle <> $list[21] Then
- If _IsIn($nowtitle) = 1 Or $nowtitle ="" Then
- load_text()
- ElseIf _IsIn($nowtitle) = 0 And $nowtitle <>"" And ($nowtitle <> GUICtrlRead($win_title) And $nowtitle <> GUICtrlRead($win_titles)) And $nowtitle <> $list[21] Then
- load_win_titles($nowtitle)
- load_title()
- load_state()
- load_ctrls()
- load_text()
- Else
- load_text()
- EndIf
- Else
- load_text()
- EndIf
- Case 3
- ;;;该部分代码已隐藏
- change_mode()
- Case 4
- ;;;该部分代码已隐藏
- change_mode()
- EndSwitch
- WEnd
- Func Hot_Key()
- Switch @HotKeyPressed
- Case ""
- EndSwitch
- EndFunc
- Func show_about()
- If WinExists("关于") = 1 Then
- WinActivate("关于")
- Else
- $aboutwin = GuiCreate("关于", 215, 190,-1, -1,BitOR($WS_SYSMENU,$WS_CAPTION,$WS_POPUPWINDOW,$WS_BORDER),-1,$main)
- GUISetOnEvent($GUI_EVENT_CLOSE, "exitprograme")
- GuiCtrlCreateLabel("版本: " & $Ver, 5, 5, 105, 15)
- GuiCtrlCreateLabel("E-mail: ", 5, 20, 40, 15)
- $email= GuiCtrlCreateLabel("zcbenz@gmail.com", 46, 20, 100, 15,$SS_NOTIFY)
- GUICtrlSetColor(-1,0x0000ff)
- GUICtrlSetCursor(-1, 0)
- GuiCtrlCreateLabel("Blog: ", 5, 35, 40, 15)
- $Label_03 = GuiCtrlCreateLabel("http://my.opera.com/z8519312", 35,35, 170, 15,$SS_NOTIFY)
- GUICtrlSetColor($Label_03,0x0000ff)
- GUICtrlSetCursor(-1, 0)
- GUICtrlCreateLabel("您可以将您的意见通过下面的输入框发送给我:", 5, 64, 207, 25)
- $Edit1 = GUICtrlCreateEdit("", 5, 92, 204, 61,$ES_AUTOVSCROLL+$ES_MULTILINE+$ES_WANTRETURN)
- $send = GUICtrlCreateButton("发送", 120, 160, 43, 25,$BS_FLAT)
- $aboutwinClose = GUICtrlCreateButton("关闭", 168, 160, 43, 25,$BS_FLAT)
- GUICtrlSetOnEvent($send,"sendmsg")
- GUICtrlSetOnEvent($email, "openemail")
- GUICtrlSetOnEvent($aboutwinClose, "exitprograme")
- GUICtrlSetOnEvent( $Label_03, "vistblog")
- GUISetState(@SW_SHOW,$aboutwin )
- EndIf
- EndFunc
- Func openemail()
- ShellExecute("mailto:zcbenz@gmail.com")
- EndFunc
- Func vistblog()
- ShellExecute("http://my.opera.com/z8519312")
- EndFunc
- Func sendmsg()
- $Mode =4
- EndFunc
- Func show_tool_menu()
- ShowMenu($main, $p_tools, $ToolsContext)
- EndFunc
- Func change_mode()
- If GUICtrlRead($p_follow) =1 Then
- $Mode = 2
- Else
- $Mode = 1
- EndIf
- EndFunc
- Func load_ctrl()
- $ctrlid = GUICtrlRead($ctrl_ids)
- If $octrlid <> $ctrlid Then
- _CtrlSet($ctrl_text,ControlGetText(GUICtrlRead($win_titles),"",$ctrlid) )
- $octrlid = $ctrlid
- EndIf
- EndFunc
- Func change_text()
- $wintitle = GUICtrlRead($win_titles)
- Switch @GUI_CtrlId
- Case $ctrl_change_text
- GUICtrlSetStyle ($ctrl_text,$ES_AUTOHSCROLL)
- GUIctrlSetState($ctrl_change_chan,$GUI_SHOW)
- GUIctrlSetState($ctrl_change_text,$GUI_DISABLE)
- GUIctrlSetState($ctrl_change_ok,$GUI_SHOW)
- Case $ctrl_change_ok
- $owin = WinGetTitle($ohandle)
- ControlSetText ($owin,"",GUICtrlRead($ctrl_ids),GUICtrlRead($ctrl_text))
- ;load_win_titles(GUICtrlRead($win_title))
- GUICtrlSetStyle ($ctrl_text,BitOR($ES_AUTOHSCROLL,$ES_READONLY))
- GUIctrlSetState($ctrl_change_chan,$GUI_HIDE)
- GUIctrlSetState($ctrl_change_text,$GUI_ENABLE)
- GUIctrlSetState($ctrl_change_ok,$GUI_HIDE)
- Case $ctrl_change_chan
- _CtrlSet ($ctrl_text,ControlGetText ($wintitle,"",GUICtrlRead($ctrl_ids)))
- GUICtrlSetStyle ($ctrl_text,BitOR($ES_AUTOHSCROLL,$ES_READONLY))
- GUIctrlSetState($ctrl_change_chan,$GUI_HIDE)
- GUIctrlSetState($ctrl_change_text,$GUI_ENABLE)
- GUIctrlSetState($ctrl_change_ok,$GUI_HIDE)
- EndSwitch
- EndFunc
- Func change_title()
- $wintitle = GUICtrlRead($win_titles)
- Switch @GUI_CtrlId
- Case $win_change_title
- GUICtrlSetStyle ($win_title,$ES_AUTOHSCROLL)
- GUIctrlSetState($win_change_chan,$GUI_SHOW)
- GUIctrlSetState($win_change_title,$GUI_DISABLE)
- GUIctrlSetState($win_change_ok,$GUI_SHOW)
- Case $win_change_ok
- $owin = WinGetTitle($ohandle)
- WinSetTitle ($owin,"",GUICtrlRead($win_title))
- load_win_titles(GUICtrlRead($win_title))
- GUICtrlSetStyle ($win_title,BitOR($ES_AUTOHSCROLL,$ES_READONLY))
- GUIctrlSetState($win_change_chan,$GUI_HIDE)
- GUIctrlSetState($win_change_title,$GUI_ENABLE)
- GUIctrlSetState($win_change_ok,$GUI_HIDE)
- Case $win_change_chan
- _CtrlSet ($win_title,$wintitle)
- GUICtrlSetStyle ($win_title,BitOR($ES_AUTOHSCROLL,$ES_READONLY))
- GUIctrlSetState($win_change_chan,$GUI_HIDE)
- GUIctrlSetState($win_change_title,$GUI_ENABLE)
- GUIctrlSetState($win_change_ok,$GUI_HIDE)
- EndSwitch
- EndFunc
- Func copy_text()
- Local $ctrl
- Switch @GUI_CtrlId
- Case $win_copy_title
- $ctrl = $win_title
- Case $win_copy_text
- $ctrl = $win_text
- Case $ctrl_copy_text
- $ctrl = $ctrl_text
- EndSwitch
- ClipPut(GUICtrlRead($ctrl))
- MsgBox(270336,"","已复制到剪切板:" & @CRLF &"""" & GUICtrlRead($ctrl) &"""")
- EndFunc
- Func set_state()
- $wintitle = GUICtrlRead($win_titles)
- If $ostate <> GUICtrlRead($win_state) Then
- $ostate = GUICtrlRead($win_state)
- Switch $ostate
- Case "隐藏"
- WinSetState ($wintitle, "", @SW_HIDE )
- Case "显示"
- WinSetState ($wintitle, "", @SW_SHOW )
- Case "禁用"
- WinSetState ($wintitle, "", @SW_DISABLE )
- Case "可用"
- WinSetState ($wintitle, "", @SW_ENABLE )
- Case "最大化"
- WinSetState ($wintitle, "", @SW_MAXIMIZE )
- Case "最小化"
- WinSetState ($wintitle, "", @SW_MINIMIZE )
- EndSwitch
- EndIf
- EndFunc
- Func on_top()
- $wintitle = GUICtrlRead($win_titles)
- If GUICtrlRead($win_on_top) = "窗口置顶" Then
- WinSetOnTop ($wintitle,"",1)
- GUICtrlSetData($win_on_top,"取消置顶")
- ElseIf GUICtrlRead($win_on_top) = "取消置顶" Then
- WinSetOnTop ($wintitle,"",0)
- GUICtrlSetData($win_on_top,"窗口置顶")
- EndIf
- EndFunc
- Func close_win()
- $back = MsgBox(270340,"","确认关闭?")
- If $back =6 Then WinKill (GUICtrlRead($win_titles),"")
- EndFunc
- Func show_more()
- $pos = WinGetPos ( "窗口控制工具","")
- If GUICtrlRead($win_more) = " 详细↓" Then
- WinMove ($main,"", Default, Default, Default , 381)
- GUICtrlSetData($win_more," 简化↑")
- ElseIf GUICtrlRead($win_more) = " 简化↑" Then
- WinMove ($main,"", Default, Default,Default , 106)
- GUICtrlSetData($win_more," 详细↓")
- EndIf
- EndFunc
- Func _SetTrans()
- $wintitle = GUICtrlRead($win_titles)
- If $otrans <> GUICtrlRead($win_trans) Then
- $otrans = GUICtrlRead($win_trans)
- WinSetTrans ($wintitle,"",$otrans)
- EndIf
- EndFunc
- Func load_win_titles($select = "")
- GUICtrlSetData($win_titles,"")
- $Wins = _GetWins()
- For $x = 1 To UBound($Wins) - 1
- _GUICtrlComboAddString ( $win_titles, $Wins[$x] )
- Next
- If $select ="" Then
- _GUICtrlComboSetCurSel ($win_titles,0)
- Else
- $var3 = _GUICtrlComboSelectString ($win_titles,-1,$select)
- If $var3 = $CB_ERR Then _GUICtrlComboSetCurSel ($win_titles,0)
- EndIf
- $owins = $Wins
- Return $Wins
- EndFunc
- Func load_state()
- $wintitle = GUICtrlRead($win_titles)
- $state = WinGetState ($wintitle)
- $state2 = "0"
- Select
- Case $state =0
- _CtrlSet($win_state,"不存在")
- Case $state <=5
- $state2 = "隐藏"
- Case 5< $state <=8
- $state2 = "可用"
- Case 8< $state <=15
- $state2 = "显示"
- Case 15< $state <=31
- $state2 = "最小化"
- Case 31< $state
- $state2 = "最大化"
- EndSelect
- If $state2 <>"0" Then
- If $state2<> GUICtrlRead($win_state) Then
- _GUICtrlComboSelectString ($win_state,-1,$state2)
- EndIf
- EndIf
- $ostate = $state2
- Return $state2
- EndFunc
- Func load_title_for_ctrl()
- $wintitle = GUICtrlRead($win_titles)
- _CtrlSet($win_title,$wintitle)
- $ohandle = WinGetHandle ($wintitle)
- load_title()
- load_ctrls()
- load_text()
- load_state()
- EndFunc
- Func load_title()
- $wintitle = GUICtrlRead($win_titles)
- _CtrlSet($win_title,$wintitle)
- $ohandle = WinGetHandle ($wintitle)
- EndFunc
- Func load_text()
- $wintitle = GUICtrlRead($win_titles)
- _CtrlSet($win_text,WinGetText ($wintitle))
- EndFunc
- Func load_ctrls()
- $wintitle = GUICtrlRead($win_titles)
- GUICtrlSetData($ctrl_ids,"")
- GUICtrlSetData($ctrl_text,"")
- $classes = StringSplit(_GetClasses($wintitle),@LF)
- For $d =1 To UBound($classes) -1
- If StringStripWS($classes[$d],3) <>"" Then _GUICtrlComboAddString ($ctrl_ids,$classes[$d])
- Next
- If $to_select_ctrl ="" Then
- _GUICtrlComboSetCurSel ($ctrl_ids,0)
- Else
- _GUICtrlComboSelectString ($ctrl_ids,-1,$to_select_ctrl)
- EndIf
- load_ctrl()
- EndFunc
- Func Update()
- $Mode =3
- EndFunc
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; sys functions
- Func MY_WM_HSCROLL($hWnd, $msg, $wParam, $lParam)
- $nScrollCode = BitAnd($wParam, 0x0000FFFF)
- $nPos = BitShift($wParam, 16)
- $hwndScrollBar = $lParam
- Switch $nScrollCode
- Case $TB_LINEDOWN ,$TB_LINEUP,$TB_PAGEDOWN,$TB_PAGEUP,$TB_THUMBTRACK
- _SetTrans()
- EndSwitch
- EndFunc
- Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)
- #forceref $hWndGUI, $MsgID, $wParam
- Local $tagNMHDR, $event, $hwndFrom, $code
- $tagNMHDR = DllStructCreate("int;int;int", $lParam) ;NMHDR (hwndFrom, idFrom, code)
- If @error Then Return
- $event = DllStructGetData($tagNMHDR, 3)
- $tagNMHDR = 0
- $event = 0
- $lParam = 0
- Return $GUI_RUNDEFMSG
- EndFunc
- Func showwin()
- Opt("TrayIconHide",1)
- GuiSetState(@SW_SHOW , $main)
- EndFunc
- Func totray()
- Opt("TrayIconHide",0)
- GuiSetState(@SW_HIDE , $main)
- EndFunc
- Func exitprograme()
- if @GUI_WinHandle = $aboutwin Then
- GUIDelete($aboutwin)
- Else
- IniWrite("config.ini","config","lastwin",GUICtrlRead($win_title))
- If GUICtrlRead($win_more) = " 简化↑" Then
- IniWrite("config.ini","config","isshowmore","true")
- Else
- IniWrite("config.ini","config","isshowmore","false")
- EndIf
- If $Mode = 2 Then
- IniWrite("config.ini","config","mouse","true")
- ElseIf $Mode = 1 Then
- IniWrite("config.ini","config","mouse","false")
- EndIf
- Exit
- EndIf
- EndFunc
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 辅助函数
- Func _CompareArray($a1,$a2)
- $return =0
- If UBound($a1) = UBound($a2) Then
- $return =1
- For $u =0 To UBound($a1) -1
- If $a1[$u] <> $a2[$u] Then $return =0
- Next
- EndIf
- Return $return
- EndFunc
- Func _GetWins()
- Global $ohwins = WinList()
- Dim $twins[1]
- For $i =1 To $ohwins[0][0]
- $title = $ohwins[$i][0]
- If StringStripWS($title,3) <>"" And _IsIn($title) = 0 Then
- ReDim $twins[UBound($twins)+1]
- $twins[UBound($twins) -1 ] = $title
- EndIf
- Next
- Return $twins
- EndFunc
- Func _CtrlSet($ctrl,$var)
- If $var <> GUICtrlRead($ctrl) Then
- GUICtrlSetData($ctrl,$var)
- EndIf
- EndFunc
- Func _IsIn($var)
- $result = 0
- $var2 = StringStripWS($var,3)
- For $x = 0 To UBound($list) - 1
- If $var2 = $list[$x] Then $result = 1
- Next
- Return $result
- EndFunc
-
- Func _Name2Link($link,$LinkNames)
- $x = 0
- For $i =1 to UBound($LinkNames,1) -1
- If $link = $LinkNames[$i][0] Then
- $x = $i
- ExitLoop
- EndIf
- Next
- Return $x
- EndFunc
- Func _Link2Name($link,$LinkNames)
- $x= 0
- For $i =1 to UBound($LinkNames,1) -1
- If $link = $LinkNames[$i][1] Then
- $x = $i
- ExitLoop
- EndIf
- Next
- If $x= 0 Then
- Return ""
- Else
- Return $LinkNames[$x][0]
- EndIf
- EndFunc
- Func _GetClasses($title)
- ;Get array of each control
- Local $buttonCount = 0, $editCount = 0, $staticCount = 0, $i
- Local $classes = StringSplit( WinGetClassList($title) , @LF)
- Local $classIDs[$classes[0]+1]
- Local $count[1][2]
- $classIDs[0] = $classes[0]
- For $i = 1 to $classes[0]
- Select
- Case $classes[$i] = "Button"
- $buttonCount = $buttonCount + 1
- $classIDs[$i] = $classes[$i] & $buttonCount
- Case $classes[$i] = "Edit"
- $editCount = $editCount + 1
- $classIDs[$i] = $classes[$i] & $editCount
- $classes[$i] = "Input"
- Case $classes[$i] = "Static"
- $staticCount = $staticCount + 1
- $classIDs[$i] = $classes[$i] & $staticCount
- $classes[$i] = "Label"
- Case Else
- If StringStripWS($classes[$i],3) <> "" Then
- $back = _Name2Link($classes[$i],$count)
- If $back = 0 Then
- ReDim $count[UBound($count)+1][2]
- $count[UBound($count)-1][0] = $classes[$i]
- $count[UBound($count)-1][1] = 1
- $classIDs[$i] = $classes[$i] & 1
- Else
- $classIDs[$i] = $count[$back][0] & ($count[$back][1]+1)
- $count[$back][1] +=1
- EndIf
- EndIf
- EndSelect
- Next
- Local $classIDs2[1]
- For $i = 1 to $classIDs[0]
- If StringStripWS($classIDs[$i],3) <> "" Then
- ReDim $classIDs2[UBound($classIDs2)+1]
- $classIDs2[UBound($classIDs2)-1] = $classIDs[$i]
- EndIf
- Next
- ;Display the results
- Local $output = ""
- For $i = 1 to UBound($classIDs2) -1
- $output = $output & $classIDs2[$i] & @LF
- Next
- Return $output
- EndFunc
- Func ShowMenu($hWnd, $CtrlID, $nContextID)
- Local $hMenu = GUICtrlGetHandle($nContextID)
-
- $arPos = ControlGetPos($hWnd, "", $CtrlID)
-
- Local $x = $arPos[0]
- Local $y = $arPos[1] + $arPos[3]
-
- ClientToScreen($hWnd, $x, $y)
- TrackPopupMenu($hWnd, $hMenu, $x, $y)
- EndFunc
- ; Convert the client (GUI) coordinates to screen (desktop) coordinates
- Func ClientToScreen($hWnd, ByRef $x, ByRef $y)
- Local $stPoint = DllStructCreate("int;int")
-
- DllStructSetData($stPoint, 1, $x)
- DllStructSetData($stPoint, 2, $y)
- DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hWnd, "ptr", DllStructGetPtr($stPoint))
-
- $x = DllStructGetData($stPoint, 1)
- $y = DllStructGetData($stPoint, 2)
- ; release Struct not really needed as it is a local
- $stPoint = 0
- EndFunc
- ; Show at the given coordinates (x, y) the popup menu (hMenu) which belongs to a given GUI window (hWnd)
- Func TrackPopupMenu($hWnd, $hMenu, $x, $y)
- DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0)
- EndFunc
复制代码 |
感谢Baidu,Google,Dreams8给我这次机会!
还要感谢我的爸爸妈妈!
HOHO |
|