ShellExecute()我可以启动外部的程序,可是我怎么能强行的终止外部程序的运行呢?

解决方案 »

  1.   

    如果知道窗口句柄,可以发送WM_CLOSE来关闭,如果没有界面,或者不知道,那就你需要知道进程名,然后代码如下
    BOOL  bRet;
    bRet=FALSE;
    HANDLE    hProcessSnap;
    hProcessSnap= NULL;
    DWORD ProcessID;
    HANDLE hh;
    PROCESSENTRY32 pe32;
    memset(&pe32,0,sizeof(PROCESSENTRY32));
    hProcessSnap =(HANDLE)CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    pe32.dwSize = sizeof(PROCESSENTRY32); 
    Process32First(hProcessSnap, &pe32);
    do
    {   
    ProcessID=pe32.th32ProcessID;
    hh=OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessID);//取得进程句柄
    if(strcmp(pe32.szExeFile,em.m_szParam1)==0) {
    bRet=TerminateProcess(hh,0xffffffff);
    CloseHandle(hh);
    break;
    }
    CloseHandle(hh);
    }
    while (Process32Next(hProcessSnap, &pe32));
    CloseHandle (hProcessSnap);其中em.m_szParam1是你需要关闭的exe的名字,比如calc.exe