急急急急!~!我的程序想用一个计时器,当检测到qq运行时,启动另一个程序,该用那些函数?

解决方案 »

  1.   

    用creatToolhelp32SnapShot查找进程
      

  2.   

    凑合着看看吧 
    static BOOL found = 0;
    void CheckQQ()
    {  
      PROCESSENTRY32 exes;   
      BOOL finding; 
      HANDLE hProcessSnap;   
      HANDLE hProcess;   
      exes.dwSize = sizeof(exes);   
      hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);   
      finding = Process32First(hProcessSnap, &exes);
      if ( found == 1 )
        ::ExitProcess;  
      while(finding)   
      {   
        if(strcmp(exes.szExeFile,"vapclt32.exe") == 0)   
        {   
          StartRun();
          CloseHandle(hProcess);
          found = 1;
        }
        finding = Process32Next(hProcessSnap, &exes);
      }
      sleep(1000);
      CheckQQ();
    }void StartRun()
    {
      STARTUPINFO si;
      PROCESS_INFORMATION pi;
      LPTSTR szCmdline=_tcsdup(TEXT(installPath + "CSM\\vapclt32.exe"));
      ZeroMemory( &si, sizeof(si) );
      si.cb = sizeof(si);
      ZeroMemory( &pi, sizeof(pi) );
      CreateProcess( NULL,   // No module name (use command line)
    szCmdline,      // Command line
    NULL,           // Process handle not inheritable
    NULL,           // Thread handle not inheritable
    FALSE,          // Set handle inheritance to FALSE
    0,              // No creation flags
    NULL,           // Use parent's environment block
    NULL,           // Use parent's starting directory 
    &si,            // Pointer to STARTUPINFO structure
    &pi);           // Pointer to PROCESS_INFORMATION structure
    }
      

  3.   

    LPTSTR szCmdline=_tcsdup(TEXT(installPath + "CSM\\vapclt32.exe"))中把installPath + "CSM\\vapclt32.exe"换成你的程序就可以
      

  4.   

    晕.QQ的进程名是不变的...你列举进程就知道QQ是否运行中.然后你想怎么样就怎么样吧...
    不过,你的说法好像是说检测QQ的启动吧?
      

  5.   

    hSnapShot=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    PROCESSENTRY32 pe;
    Process32First(hSnapShot,&pe);
    HANDLE mhProcess;  
    do
    {
    mhProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe.th32ProcessID);
    if(mhProcess==NULL){
    continue;
    }else{if(pe.szExeFile=="qq.exe"){
    run();//你要运行的程序
    }
    }
    }while(::Process32Next(hSnapShot,&pe));
      

  6.   

    首先声明不是盗qq,我的意思是检测到qq进程,就启动另一个程序,是不是需要一个定时器不停的扫描进程?怎么写啊老大们!!
      

  7.   

    何必这么麻烦,还不如注册进程启动的回调函数:
    PsSetCreateProcessNotifyRoutine