写一个基于对话框的MFC程序,目的是监视另外一个.exe程序是否正在运行,如果运行,则什么也不做,
如果被监视的程序没有运行,则启动它,让它运行。
不知道该怎么做,用到什么东西?

解决方案 »

  1.   

    说的太简单了吧?
    怎么没人理了,应该不难的吧?
    还有没有人在啊?
    自己Uping
      

  2.   

    如3楼所说,进行比较即可至于枚举进程,楼主可以随便Google与Baidu,很多
      

  3.   

    用一个定时器检测:获取你要监视的.exe程序的进程是否存在,
    如果不存在,就是用ShellExecute启动它      HINSTANCE ShellExecute(
           HWND hwnd,           //父窗口句柄
          LPCTSTR lpOperation,   //操作, 打开方式"edit","explore","open","find","print","NULL"      LPCTSTR lpFile,         //文件名,前面可加路径
          LPCTSTR lpParameters,   //参数
          LPCTSTR lpDirectory,    //默认文件夹
          INT nShowCmd          //显示方式);
            使用方法如下:
          ShellExecute(NULL,"open","C:\\Test.txt",NULL,NULL,SW_SHOWNORMAL); // 打开C:\Test.txt 文件
          ShellExecute(NULL, "open", "http://www.google.com", NULL, NULL, SW_SHOWNORMAL); // 打开网页www.google.com
          ShellExecute(NULL,"explore", "D:\\C++",NULL,NULL,SW_SHOWNORMAL); // 打开目录D:\C++
          ShellExecute(NULL,"print","C:\\Test.txt",NULL,NULL, SW_HIDE); // 打印文件C:\Test.txt
      

  4.   

    --->枚举进程!有难度,但可以到网上找代码!
    --------
    有别的方法!---需要有个定量,如参数,
    static CWnd* PASCAL FindWindow(
       LPCTSTR lpszClassName,  // 类名,用SPY++可以看到,
       LPCTSTR lpszWindowName  // 必须是不变的,也是唯一的!
    );
      

  5.   

    WinExec()
    是什么意思了?
    谢谢楼上的
      

  6.   

    下面这个函数可以判断同进程名的进程是否运行,但是无法知道是否是自己的程序在运行了,如要互斥,则要创建事件.
    #include <windows.h>
    #include <tlhelp32.h>
    #include <stdio.h>BOOL IsExeInProcess( )
    {
      BOOL bRet = FALSE;
      HANDLE hProcessSnap;
      PROCESSENTRY32 pe32;  // Take a snapshot of all processes in the system.
      hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
      if( hProcessSnap == INVALID_HANDLE_VALUE )
      {
         return( FALSE );
      }
        pe32.dwSize = sizeof( PROCESSENTRY32 );   if( !Process32First( hProcessSnap, &pe32 ) )
      {
        printError( "Process32First" );  // Show cause of failure
        CloseHandle( hProcessSnap );     // Must clean up the snapshot object!
        return( FALSE );
      }  do
      {
        printf( "\n\n=====================================================" );
        printf( "\nPROCESS NAME:  %s", pe32.szExeFile );
        printf( "\n-----------------------------------------------------" );   if(stricmp(pe32.szExeFile, "yourexe.exe") == 0)
    {       
                 bRet = TRUE;
                 break;
    }
     
      } while( Process32Next( hProcessSnap, &pe32 ) );  CloseHandle( hProcessSnap );
      return bRet;
    }