oceanwind 发表于 2010-12-1 16:37:38

窗口标题不停在变化 有啥变通的方法[已解决]

本帖最后由 oceanwind 于 2012-8-13 07:53 编辑

想用这个结构:

If WinExists("XXXXXX","正在计算")=0 Then
           ........       
EndIf
       
但窗口标题不停在变化 还有啥变通的方法呢
请高手指点 谢谢先

yhxhappy 发表于 2010-12-1 17:04:14

可以根据窗口 CLASS 来判断,这个应该是不变的
WinExists("","正在计算")

oceanwind 发表于 2010-12-1 17:15:38

谢谢楼上的朋友 马上试试

飘云 发表于 2010-12-1 17:58:04

窗口的标题那块不是只能使用标题文本的,类、句柄等都可以,比如知道进程名,从而获取到此窗口的句柄,将这个句柄变量放到函数中窗口标题位置

oceanwind 发表于 2010-12-1 18:07:45

试了下 好象不行哦

yhxhappy 发表于 2010-12-1 18:51:25

本帖最后由 yhxhappy 于 2010-12-1 18:57 编辑

拿CLASS替换标题没理由不成功的,除非你填的不对
楼主提的问题太泛泛了,又没有截图或代码之类的分析,我们什么知道你的窗口CLASS是什么,进程名是什么,下面的代码你自己研究吧,逆过来就行了#include <WinAPI.au3>
#Include <WinAPIEx.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>

;创建主窗口
$GUI = GUICreate("EnumWindows",1000, 700)

;绘制并生成数据表
$listview = GUICtrlCreateListView("", 15, 10, 970, 640)
      _GUICtrlListView_SetExtendedListViewStyle($listview, BitOR($LVS_REPORT, $LVS_EX_FULLROWSELECT))
      _GUICtrlListView_AddColumn($listview, "窗口句柄", 85)
      _GUICtrlListView_AddColumn($listview, "窗口标题", 450)
      _GUICtrlListView_AddColumn($listview, "窗口文本", 250)
      ;_GUICtrlListView_AddColumn($listview, "CLASS", 50)
      _GUICtrlListView_AddColumn($listview, "PID", 55)
      _GUICtrlListView_AddColumn($listview, "进程名称", 100)

;刷新按钮
$Installa_Button = GUICtrlCreateButton("刷新", 835, 655, 150, 35)      

AddListviewItem()
GUISetState()

While 1
    $msg = GUIGetMsg()
      Switch $Msg
      Case $GUI_EVENT_CLOSE
                Exit
      Case $Installa_Button
                AddListviewItem()
      EndSwitch
WEnd

      
Func AddListviewItem()
      _GUICtrlListView_DeleteAllItems($listview)
      $aWindows = _WinAPI_EnumWindows()
      For $i = 1 To $aWindows
                $WindowHandle = $aWindows[$i]
                $WindowsClass = $aWindows[$i]
                $WindowTitle = WinGetTitle($aWindows[$i])
                $WindowText = WinGetText($aWindows[$i])
                $ProcessPID = WinGetProcess($aWindows[$i])
                $e = StringSplit(_WinAPI_GetModuleFileNameEx($ProcessPID), "\")                        ;提取进程名称,也可以取进程的路径
                $ProcessName = $e[$e]
                If $WindowTitle <> "" Then GUICtrlCreateListViewItem($WindowHandle & "|" & $WindowTitle& "|" & $WindowText & "|" & $ProcessPID & "|" & $ProcessName, $listview)                  ;如果窗口标题为空,则不添加进表格,去掉判断则会全部添加
      Next
EndFunc

oceanwind 发表于 2010-12-1 21:03:11

本帖最后由 oceanwind 于 2010-12-1 21:04 编辑

这个窗口有进度条 闪得很快

yhxhappy 发表于 2010-12-1 21:42:07

是跟股票有关的软件吧? 一楼你说的是 If WinExists("XXXXXX","正在计算")=0 Then
我看窗口文本并没有 正在计算 这几个字,不会窗口文本也是变化的吧?如果是这样,那你可以发窗口信息工具“Windows”那一版的载图上来吧?
可以参考我以前发的帖子 http://www.autoitx.com/thread-19491-1-1.html

照你发的图片来看,If WinExists("","正在更新")=0 Then 应该可以

oceanwind 发表于 2010-12-1 22:03:34

回复 8# yhxhappy


    朋友 你很热心 也很细心 我没注意到我写错了
页: [1]
查看完整版本: 窗口标题不停在变化 有啥变通的方法[已解决]