我有一個程序在後臺運行,當出現問題時會出現一個消息框,我想要它,所以單擊yes將切換到指定的程序。SetForegroundWindow不工作,如何檢查類/標題名稱
我只是找不到什麼ClassName和CaptionName與它一起工作,我需要它與魔獸世界的遊戲一起工作。
窗口標題是魔獸世界的任務管理器,它被稱爲「魔獸世界零售」,當我檢查它的屬性它說的「哇-64」屬性,它說產品名稱是「World of魔獸「,所以我已經嘗試了這些和沒有任何作品的每一個組合。如果我把代碼的作品:
BringToFront(「記事本」,「無標題 - 記事本」);
所以它的工作原理,我只是不知道我需要什麼來適用於魔獸世界。
我的代碼是:
[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是什麼,我嘗試了所有我能找到的東西。
什麼是FindWindow返回? – DavidG 2014-08-30 16:05:10
當您調用winapi函數時,錯誤檢查是* not * optional。你沒有友善。NET的例外,以防止麻煩了,你必須自己提出。 – 2014-08-30 17:29:59