0

ツールを作成して、いくつかのウィンドウを管理しようとしています。たとえば、キーを押すと、次のウィンドウにフォーカスが移動します。これは、リスト内の次のウィンドウにフォーカスを設定する方法です。

public void RoundRobinFunc()
{
    if (indexofCurrentRound == Windows.Count)
    {
        indexofCurrentRound = 0;
        SetForegroundWindow(Windows[indexofCurrentRound].HandlerIDD);
        indexofCurrentRound++;
    }
    else if (indexofCurrentRound < Windows.Count)
        {
        SetForegroundWindow(Windows[indexofCurrentRound].HandlerIDD);
        indexofCurrentRound++;
    }
}

これは、ホットキーを使用して上記のメソッドを実行するためにキーログクラスで使用するメソッドです

private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
    Form1 form1T = System.Windows.Forms.Application.OpenForms.OfType<Form1>().FirstOrDefault();
    if (nCode >= 0 && wParam == (IntPtr)WM_KEYUP)
        {
            int vkCode = Marshal.ReadInt32(lParam);
            var keyName = Enum.GetName(typeof(Keys), vkCode);
            if (form1T.CheckKeys(keyName))
            {
            form1T.RoundRobinFunc();
            }
    }
    return CallNextHookEx(_hookID, nCode, wParam, lParam);
}

問題は、デバッグがすべて完璧に機能するときです。希望のキーを押すと、次のウィンドウが前面に表示されます。問題は、リリース ビルドを使用しているときに発生し、希望のキーを押したときのように乱雑になります。 、それは一度次のウィンドウに切り替わり、そこで動かなくなり、新しいウィンドウに決して切り替わらず、デバッグテストとは完全に異なる動作であるため、デバッグ時に機能するものをデバッグする方法がわかりませんが、ビジュアルスタジオの外では機能しません.

4

0 に答える 0