私は数時間グーグルで検索し、見つけたものすべてを試しましたが、うまくいかないようです.
私のコードは次のとおりです。
private static long _i;
private static readonly System.Timers.Timer Timer = new System.Timers.Timer(1000);
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
private static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
[DllImport("user32.dll")]
private static extern int GetWindowModuleFileName(IntPtr hWnd, StringBuilder text, int count);
static void Main()
{
Timer.Elapsed += Timer_Elapsed;
Timer.AutoReset = true;
Timer.Start();
while (Timer.Enabled)
Console.ReadLine();
}
static void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Console.WriteLine("-|- - " + _i + " - -|-");
Console.WriteLine("WindowHandle: " + GetForegroundWindow());
var buff = new StringBuilder(2048);
GetWindowModuleFileName(GetForegroundWindow(), buff, 1024);
Console.WriteLine("ModuleName: " + Path.GetFileName(buff.ToString()));
Console.WriteLine("-|- - | - -|-");
_i++;
}
このコードの出力は常に次のようになります。
-|- - 1 - -|-
WindowHandle: 8128962
ModuleName: ConsoleApplication.vshost.exe
-|- - | - -|-
しかし、Chrome や Fiddler などの別のアプリケーションをターゲットにした場合でも、実行可能なファイル名が常に出力されるか、ファイル名がまったく出力されません。私が見逃しているかもしれない問題はありますか?