我现在要查找以某些字符开头的已打开的程序,只要找到第一个既可,比如我已在运行了“AAA.EXE”、“ABA.EXE”以A开头的程序,只要A%.EXE有一个运行了,就反回第一个的句柄

解决方案 »

  1.   

    对了,不知FindWindow是否要调用到EnumWindows呢
      

  2.   

    我之前发布过的clsWindow1.8封装了包含这样功能的函数GetWindowHwndByAppName,支持正则表达式匹配,根据楼主的需求可以这样写:Dim w As New clsWindow
    MsgBox w.GetWindowHwndByAppName("^A.*.EXE", 1, , True)
    'MsgBox w.GetWindowHwndByAppName("note.*.exe", 1, , True)'如果进程中有notepad.exe那么就会获取到,它的窗口句柄。
     不过未经过严格测试,有问题可以报告。下载:http://files.cnblogs.com/sysdzw/Windows%E7%AA%97%E5%8F%A3%E8%87%AA%E5%8A%A8%E5%8C%96%E6%93%8D%E4%BD%9C%E7%B1%BBforVB6_V1.8.rar
    介绍:http://bbs.csdn.net/topics/390488924
      

  3.   

    FindWindow() 的结果,跟 XXX.exe是否运行,没直接关系吧!还得要另外几个API配合,通过窗口句柄得到PID,再得到进程的完整路径,再看它的文件名是否匹配才行的。
      

  4.   

    4F 的代码,GetWindowHwndByAppName中有个 “ByAppName”,应该是能符合楼主需求的。