我正在尝试创建一个工具来管理一些窗口,例如当我按下一个键时,我会将焦点更改为下一个窗口,依此类推,这是我编写的将焦点设置到列表中的下一个窗口的方法
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);
}
问题是当我调试一切正常时,当我按下我的愿望键时,它会将下一个窗口设置在前台,现在问题来了,当我使用发布版本时,它会变得混乱,就像当我按下我的愿望键时,它会切换到下一个窗口一次并卡在那里,永远不会切换到新窗口,它与我的调试测试完全不同,所以我不知道如何调试在调试时可以工作但在 Visual Studio 之外无法工作的东西.