ああ、私はプログラムを作成しようとしていて、この場合はクロムが実行されているかどうかを確認してからそれに切り替えています。同様のスレッド(スレッド1、スレッド2)をたどろうとしていますが、残念ながら問題が発生していますWindowsエクスプローラー(ファイルマネージャー)に切り替えるのが好きなように見えるハンドル
[DllImport("User32.dll")]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll")]
static extern int SetForegroundWindow(IntPtr hWnd);
IntPtr ptrFF = FindWindow(null, "chrome");
SetForegroundWindow(ptrFF);
Process proc = Process.GetProcessesByName("firefox")[0];
IntPtr ptrFF = proc.Handle;
SetForegroundWindow(ptrFF);
これらは私が遊んでいた2ビットのコードですが、実際に何かをするために2番目のものしか得られませんでしたこれは、ケース テスト コードのように見えます。
var proc = Process.GetProcessesByName("chrome")[0];
Console.WriteLine(proc.ToString());
Process.GetProcessesByName("chrome")[0].Handle; を印刷した場合、Writeline の出力は "System.Diagnostics.Prosess (chrome)" です。572として出てきます
しかし、使用:
var proc = Process.GetProcessesByName("chrome")[0].Handle;
Console.WriteLine(proc.ToString());
SetForegroundWindow(proc);
現在のウィンドウをクロムに設定せず、エラーも発生しません