バックグラウンドで実行するプログラムがあり、何かが発生したときにメッセージ ボックスが表示されるので、[はい] をクリックすると指定のプログラムに切り替わります。
ClassName と CaptionName がそれで動作するものを見つけることができません。ゲーム World of Warcraft で動作するために必要です。
ウィンドウのタイトルは、「World of Warcraft Retail」と呼ばれるタスクマネージャーの「Wold of Warcraft」です。そのプロパティを調べると、「Wow-64」プロパティと表示され、プロパティでは製品名が「World of Warcraft」と表示されるので、これらのすべての組み合わせを試しましたが、何も機能しません。次のように入力すると、コードが機能します。
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 が何であるかわかりません。見つけられるものはすべて試しました。