我想在自己的程序中检测某个程序是否在运行,但是那个要被检测的程序的窗口名为Default IME,在系统中存在这个名称的窗口太多了,使用FindWindow函数根本不能检测到真正的程序是否存在,使用进程ID也不行,因为进程ID都是会变的,那么是否有办法还有办法可以检测到所需的程序是否在运行?

解决方案 »

  1.   

    这么说你知道那个程序在哪里是么?这样就好办了。
    你可以先用2进制读入文件数据,然后删除文件。
    SUB FORM-LOAD()ON ERROR GO TO 1
    2进制读入文件(或复制它)
    KILL 文件
    2进制写入文件 (也就是删除之后再重新生成)
    1:MSGBOX“程序运行中”END SUB我也想不出更简单的方法了。另外,进程枚举是可以得到进程的路径名的。可以按路径名的匹配来判断程序是否运行。
      

  2.   

    程序运行时是删不掉的。可以在ON ERROR 标号处添加相应的处理代码。
      

  3.   

    http://blog.csdn.net/online/archive/2004/08/05/66373.aspx
      

  4.   

    可以用ToolHelp函数集枚举进程ToolHelp函数集:
    CreateToolhelp32Snapshot  
    Heap32First  
    Heap32ListFirst  
    Heap32ListNext  
    Heap32Next  
    Module32First  
    Module32Next  
    Process32First  
    Process32Next  
    Thread32First  
    Thread32Next  
    Toolhelp32ReadProcessMemory 
      

  5.   

    楼主想通过什么判断那个进程是你所想检测的进程?
    可以通过ToolHelp函数集中的函数获得系统中当前运行的每个进程的路径。