学习一下 发表于 2010-11-12 10:59:01

[已解决]怎样在系统部署时获取正在运行的程序名或窗口名

本帖最后由 学习一下 于 2010-11-15 11:58 编辑

在系统部署时怎样获取正在运行的程序名或窗口名(不是进程名),试用窗口管理函数来获取无效。

yhxhappy 发表于 2010-11-12 16:42:49

本帖最后由 yhxhappy 于 2010-11-12 16:46 编辑

不太明白楼主的意思,希望以下代码对你有帮助#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

学习一下 发表于 2010-11-15 11:57:48

回复 2# yhxhappy

谢谢你的帮助,在你的源码中找到了我需要的
页: [1]
查看完整版本: [已解决]怎样在系统部署时获取正在运行的程序名或窗口名