1


ハンドルをウィンドウ「HWND」に変換できるかと思いました。「FindWindow」メソッドを使用して「PostMessage」関数を呼び出す必要があります。

私は現在調達する必要があります

HANDLE mainProcess;
BOOL APIENTRY ATTACH_PROCESS(int ProcessID)
{

    mainProcess = OpenProcess(PROCESS_ALL_ACCESS, true, ProcessID);

    return TRUE;
}
BOOL APIENTRY SEND_INPUT(/*NOT USED FOR THIS SAMPLE*/ const char* String, bool Keydown)
{

    int ToDo = WM_KEYUP;
    if (Keydown)
        ToDo = WM_KEYDOWN;
    return PostMessage((HWND)mainProcess, ToDo, VK_TAB, NULL); 
}
4

2 に答える 2

4

いいえ。プロセスは複数のウィンドウを作成できます。1対1のマッピングが存在しないため、このような関数は意味がありません。

一方、プロセスによって作成されたウィンドウのリストを返す関数を持つことは確かに可能です。

于 2012-05-03T18:13:56.553 に答える
2

mainProcessハンドルを使用してGetProcessId()を呼び出し、ProcessIDを取得します。

EnumWindows()を呼び出す

ウィンドウごとに、GetWindowThreadProcessId()を呼び出して、ウィンドウに関連付けられているプロセスのProcessIdを取得します。

ProcessIDが一致する場合は、それらを比較します。必要なHWNDが見つかりました。

これはやや費用のかかる作業なので、必要なhwndを事前に見つけて、保存するのが最善です。

于 2012-05-03T18:44:17.777 に答える