2017-08-11 5 views
-1

編集:どのように私はプロセス名を使用してウィンドウのタイトルを得ることができますか?たとえば、chrome.exeの現在のタイトルを取得します。C++プロセス名を使用してウィンドウタイトルを取得

+1

あなたは何を求めているのか分かりませんか? –

+0

「完全に読み込まれました」と「GUIが表示されます」という定義は、OSとグラフィックスツールキットに依存します。実行されているプログラムとウォッチャープログラムの両方のソースコードを制御すると、もっと簡単になるでしょう。あなたはあなたの質問に答えるために十分な詳細を提供していません。 – ShadowRanger

+0

processIDを使用してウィンドウタイトルを取得することは可能ですか?私は、プロセスがWindowsのタイトルを持っているかどうかを確認することができますし、プロセスが読み込まれ、GUIが表示されますか? – Vedbex

答えて

0

プロセスIDを使用して特定のウィンドウのタイトルを取得できます。

実行ファイル(例:Chrome.exe)の名前が分かっている場合は、HandleFindWindowEX()に、またはPIDを「Chrome.exe」にCreateToolHelp32Snapshotと設定します。

次に、EnumWindowsを使用してHANDLを使用してHWNDを取得します。

struct param_enum 
{ 
    unsigned long ulPID; 
    HWND hWnd_out; 
}; 

HWND find_specific_window(unsigned long process_id) 
{ 
    param_enum param_data; 
    param_data.ulPID = process_id; 
    param_data.hWnd_out = 0; 
    EnumWindows(enum_windows_callback, (LPARAM)&param_data); 
    get_window_title(process_id, param_data.hWnd_out); 
    return param_data.hWnd_out; 
} 

BOOL CALLBACK enum_windows_callback(HWND handle, LPARAM lParam) 
{ 
    param_enum& param_data = *(param_enum*)lParam; 
    unsigned long process_id = 0; 
    GetWindowThreadProcessId(handle, &process_id); 
    if (param_data.ulPID != process_id) 
    { 
     return TRUE; 
    } 
    param_data.hWnd_out = handle; 

    return FALSE; 
} 

---------------------------ハンドルを取得-------------- -------------

HANDLE GetHandleFromProcessPath(TCHAR* szExeName, DWORD& dwPID) 
{ 
    HANDLE hExeName = INVALID_HANDLE_VALUE; 
    HANDLE hSnap = INVALID_HANDLE_VALUE; 
    PROCESSENTRY32 pe32; 
    pe32.dwSize = sizeof(PROCESSENTRY32); 

    hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 

    if (INVALID_HANDLE_VALUE != hSnap) 
    { 
     if (Process32First(hSnap, &pe32)) 
     { 
      do 
      { 
       //!!! Attention pe32.szExeFile always return exe file name. not window title. 
       if (NULL != _tcsstr(pe32.szExeFile, szExeName)) 
       { 
        hExeName = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pe32.th32ProcessID); 
        dwPID = pe32.th32ProcessID; 
        break; 
       } 
      } while (Process32Next(hSnap, &pe32)); 
     } 
    } 


    return hExeName; 
} 
関連する問題