Узнать, какой процесс сейчас активен (открыт) - C#
Формулировка задачи:
Можно ли узнать, открыт ли сейчас у пользователя бразуер? То есть, он сейчас в нем чем-то занимается. Например, вбивает в google какой-нибудь запрос.
Например, узнать, открыт ли у пользователя блокнот и он набирает текст.
Каким способом это можно узнать?
Решение задачи: «Узнать, какой процесс сейчас активен (открыт)»
textual
Листинг программы
[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();
public ApplicationState AppState
{
get
{
Process[] processCollection = Process.GetProcessesByName(ProcessName);
if(processCollection != null && processCollection.Length >= 1 &&
processCollection[0] != null)
{
IntPtr activeWindowHandle = Win32.GetForegroundWindow();
//Optional int ProcessID;
//Optional Win32.GetWindowThreadProcessId(GetForegroundWindow(),out ProcessID)
foreach(Process wordProcess in processCollection)
{
//Optional if( ProcessID == wordProcess.Id ) return ApplicationState.Focused;
if(wordProcess.MainWindowHandle == activeWindowHandle)
{
return ApplicationState.Focused;
}
}
return ApplicationState.Running;
}
return ApplicationState.NotRunning;
}
}