var hwnd = GetWindowHandle(); //Custom function that returns the target window's handle
var currentThreadId = GetCurrentThreadId();
uint pid;
var targetThreadId = GetWindowThreadProcessId(hwnd, out pid);
if (targetThreadId == IntPtr.Zero) return;
if (targetThreadId != currentThreadId)
{
AttachThreadInput(currentThreadId, targetThreadId, true);
}
SetForegroundWindow(hwnd);
if (currentThreadId != targetThreadId)
{
AttachThreadInput(currentThreadId, targetThreadId, false);
}
上記のコードを使用して、ターゲット ウィンドウのハンドルを使用して、別のウィンドウにフォーカスを置きました。上記のコードは、ショートカット キーが押されたときに呼び出されるメソッド内に配置されます。私が直面している問題は、初めてフォーカスがウィンドウで動かなくなることです。つまり、フォーカスがウィンドウ内の他のコントロールに移動しません (タブを押したとき)。そのため、マウスを使用してウィンドウ内にフォーカスを移動する必要があります。ショートカットを 2 回目に押すと、フォーカスが動かなくなり、タブを押すと正しく移動します。また、SetFocus を使用してみましたが、同じ問題が発生していることにも注意してください。
コードに何か問題があるか、または別の方法を使用して同じ動作を実現できるかどうかを提案してください。ありがとう。