ツールを作成して、いくつかのウィンドウを管理しようとしています。たとえば、キーを押すと、次のウィンドウにフォーカスが移動します。これは、リスト内の次のウィンドウにフォーカスを設定する方法です。
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);
}
問題は、デバッグがすべて完璧に機能するときです。希望のキーを押すと、次のウィンドウが前面に表示されます。問題は、リリース ビルドを使用しているときに発生し、希望のキーを押したときのように乱雑になります。 、それは一度次のウィンドウに切り替わり、そこで動かなくなり、新しいウィンドウに決して切り替わらず、デバッグテストとは完全に異なる動作であるため、デバッグ時に機能するものをデバッグする方法がわかりませんが、ビジュアルスタジオの外では機能しません.