我有一个在后台运行的程序,当发生某些事情时会出现一个消息框,我想要它,所以单击“是”将切换到指定的程序。
我只是找不到 ClassName 和 CaptionName 与它一起使用,我需要它与魔兽世界游戏一起使用。
窗口标题在任务管理器上是“魔兽世界”,它被称为“魔兽世界零售”,当我检查它的属性时,它显示“Wow-64”属性,在属性上它说产品名称是“魔兽世界”所以我已经尝试了这些的所有组合,但没有任何效果。如果我把代码工作:
BringToFront("Notepad", "Untitled - Notepad");
所以它有效,我只是不知道我需要什么才能将它应用于 WoW。
我的代码是:
[DllImport("User32.dll")]
public static extern Int32 SetForegroundWindow(int hWnd);
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName);
private void BringToFront(string className, string CaptionName)
{
SetForegroundWindow(FindWindow(className, CaptionName));
}
private void Alert()
{
string title = "WoW Queue Alert: Message";
string message = "The Queue is ready to accept!";
MessageBoxButtons buttons = MessageBoxButtons.YesNo;
DialogResult result;
result = MessageBox.Show(new Form() { TopMost = true }, message, title, buttons, MessageBoxIcon.Information);
if (result == System.Windows.Forms.DialogResult.Yes)
{
BringToFront("World of Warcraft Retail", "World of Warcraft");
}
}
我真的没有看到关于 WoW 的任何特别之处,并且按照记事本示例的工作方式,正确的代码应该是:
BringToFront("World of Warcraft Retail", "World of Warcraft");
作为一个全屏程序应该会影响它,而且我看不出暴雪已经实现了一些东西来阻止这个功能。
编辑:我只是将 ClassName 设置为 null 并且可以工作,因为标题名称只是窗口标题。不知道 ClassName 是什么我尝试了我能找到的一切。