Можно ли получить название текущего активного приложения - PullRequest
2 голосов
/ 20 марта 2010

Пользователь может переключить активное приложение, нажав Alt + Tab или нажав на их значки в панели задач. Можно ли получить имя (или другую уникальную характеристику) текущего активного приложения?

Я хочу написать программу, которая собирает статистику использования приложений.

Ответы [ 3 ]

6 голосов
/ 20 марта 2010

В API Windows есть функция с именем GetForegroundWindow () . Вам нужно будет использовать P / Invoke для вызова Win32 API. В вики P / Invoke есть больше информации для пользователей C #.

См. эту страницу для примера, который получает заголовок (имя) текущего приложения.

1 голос
/ 14 июля 2010

Чтобы получить название вашего приложения c (несколько вариантов):

(сначала необходимо добавить ссылку System.Windows.Forms)

string name1 = System.Windows.Forms.Application.ExecutablePath;
string name2 = System.IO.Path.GetFullPath(System.Reflection.Assembly.GetExecutingAssembly().Location
string name3 = System.IO.Path.GetFileName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string name4 = Environment.GetCommandLineArgs()[0];
string name5 = System.IO.Path.GetFileName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
string name6 = System.Reflection.Assembly.GetEntryAssembly().CodeBase;
string name7 = System.Reflection.Assembly.GetEntryAssembly().FullName;
1 голос
/ 20 марта 2010

Вы ищете функции API GetForegroundWindow и GetWindowText. Существует также функция GetWindowThreadProcessId, которая получает идентификатор процесса из hWnd, а затем вы можете использовать обычные классы .NET для работы с процессами ...

...