终止进程

时间:2014-06-10 09:12:05

标签: c++ winapi process

我们有一个应用程序有3个进程,如下图所示。

enter image description here

我想要做的是终止这些过程。阅读了一些教程后,我能够整理这些代码。但是,它无法正常工作。输出显示在代码之后。

   HANDLE hProcessSnap;
    PROCESSENTRY32 pe32;
    hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
    pe32.dwSize = sizeof( PROCESSENTRY32 );

    std::string message = "";
    int processCounter = 0;

    while( Process32Next( hProcessSnap, &pe32 ) ) {
        char ch[260];
        char DefChar = ' ';
        WideCharToMultiByte(CP_ACP,0,pe32.szExeFile,-1, ch,260,&DefChar, NULL);

        //A std:string  using the char* constructor.
        std::string process(ch);

        if( process == "bridge.exe" ) {
            std::wstring stemp = std::wstring(process.begin(), process.end());
            LPCWSTR sw = stemp.c_str();

            HWND windowHandle = FindWindowW( NULL, sw );
            DWORD* dwProcessId = new DWORD;
            GetWindowThreadProcessId( windowHandle, dwProcessId );
            message.append( process );

            message.append( "-" );
            std::ostringstream converter;
            converter << *dwProcessId;
            message.append( converter.str() );
            message.append( "-" );

            DWORD dwDesiredAccess = PROCESS_TERMINATE;
            BOOL  bInheritHandle  = FALSE;
            HANDLE hProcess = OpenProcess(dwDesiredAccess, bInheritHandle, *dwProcessId);

            if( hProcess == NULL ) {
                BOOL result = TerminateProcess(hProcess, 0);
                message.append( "NULL" );
            }
            message.append( "\n" );
            CloseHandle(hProcess);
        }
   }

这是输出:

bridge.exe-4597928-NULL
bridge.exe-4597568-NULL
bridge.exe-4587524-NULL

hProcess返回NULL。我错过了什么?感谢。

0 个答案:

没有答案