比如说我想写个程序,当每次"Winamp.exe"运行时候ShowMessage("Winamp已经运行")(只显示一次),关掉winamp再运行还是显示这句话~

解决方案 »

  1.   

    就是写一个程序,这个程序用与检测某个进程是否在执行,是的话就执行指定的代码TO:fzd999(花差花差)
    能不能给出具体参数和用法,偶是新人~~~谢谢了
      

  2.   

    PROCESSENTRY32 ProInfo;
    hProSnap=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
    if (::Process32First(hProSnap,&ProInfo))
    {
    for (;::Process32Next(hProSnap,&ProInfo);)
    {
    if (strcmp(ProInfo.szExeFile, "Winamp.exe") == 0)
    {
    AfxMessageBox("Winamp已经运行");
    break;
    }
    }
    }
    需要用到"tlhelp32.h"头文件
      

  3.   

    这种方法只能检测一次啊~~我需要的是程序在任务栏运行,每当WINAMP运行,则显示信息,不需要人为的干预.WINAMP关了以后再运行,还是能检测到并显示信息
      

  4.   

    使用WMI可以轻松完成:(用于win2000以上系统)
    使用脚本如下,也可以使用COM接口,不过稍微麻烦一点。
    Monitor Process Creation
    Description
    Temporary event consumer that issues an alert each time a new process is created. Script Code strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colMonitoredProcesses = objWMIService. _ 
    ExecNotificationQuery("select * from __instancecreationevent " _ 
    & " within 1 where TargetInstance isa 'Win32_Process'")
    i = 0
    Do While i = 0
    Set objLatestProcess = colMonitoredProcesses.NextEvent
    Wscript.Echo objLatestProcess.TargetInstance.Name
    Loop将上述脚本存为.vbs文件,双击执行。 
      

  5.   

    如果你只是需要实现:
    当每次"Winamp.exe"运行时候ShowMessage("Winamp已经运行")(只显示一次),关掉winamp再运行还是显示这句话~将下面的代码存为temp.vbs,双击运行就可以了(本例子使用的是notepad.exe,你自己修改成你需要的)
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colMonitoredProcesses = objWMIService. _ 
    ExecNotificationQuery("select * from __instancecreationevent " _ 
    & " within 1 where TargetInstance isa 'Win32_Process' and TargetInstance.Name = 'notepad.exe'")
    i = 0
    Do While i = 0
    Set objLatestProcess = colMonitoredProcesses.NextEvent
    Wscript.Echo objLatestProcess.TargetInstance.Name
    Loop你在VC中可以新建立一个进程(CreateProcess)运行这个进程 cscript temp.vbs你也可以使用COM接口,但是比较繁琐,具体的参看MSDN中关于WMI的部分。使用CreateToolhelp32Snapshot是不是需要轮循,我没有做过
      

  6.   

    楼上阿涛的方法已经写的很明白了,轮讯,是一定要的,sleep(500),要在后台监视某个进程是否运行,我只知道这个办法,如果还有其他办法,请高手来讲一下,
      

  7.   

    恩~这样的方法我也知道,我就是想知道有没类似此功能的API命令,或是其它好方法~
      

  8.   

    这种API应该是没有的吧,已经实现了一个不停的刷新系统快照的功能了,也比较耗资源,应该不会提供,再说写一个也不是难,只是要注意tl32提供的快照win2k跟9x是不一样的,一个没有路经,一个还提供路经,所以比较进程名的字符串函数还是自己写一个好了,