C# 检测屏幕键盘是否打开

C# 检测屏幕键盘是否打开,c#,.net,wpf,on-screen-keyboard,C#,.net,Wpf,On Screen Keyboard,我想检测OSK.exe进程(屏幕键盘上)是否打开 这是我打开OSK的代码: Process.Start("C:\\Windows\\System32\\osk.exe"); 您是否知道如何检查该进程并防止该进程启动两次或两次以上?您可以按名称获得一个正在运行的进程,如下所示: var arrProcs = Process.GetProcessesByName("osk"); if (arrProcs.Length == 0) { Process.Start("C:\\Windows\\S

我想检测OSK.exe进程(屏幕键盘上)是否打开

这是我打开OSK的代码:

Process.Start("C:\\Windows\\System32\\osk.exe");

您是否知道如何检查该进程并防止该进程启动两次或两次以上?

您可以按名称获得一个正在运行的进程,如下所示:

var arrProcs = Process.GetProcessesByName("osk");
if (arrProcs.Length == 0)
{
   Process.Start("C:\\Windows\\System32\\osk.exe");
}

您可以按名称获取正在运行的进程,如下所示:

var arrProcs = Process.GetProcessesByName("osk");
if (arrProcs.Length == 0)
{
   Process.Start("C:\\Windows\\System32\\osk.exe");
}
有两个方面: 1.进程已由应用程序打开。在这种情况下,您已经知道PID。方法是尝试查看具有该PID的进程是否正在运行

Process[] processlist = Process.GetProcesses();
bool proccessRunning = false;
foreach(Process theprocess in processlist){
   if( theprocess.Id == yourPID) 
   {
       proccessRunning = true;
       break;
   }        
}
二,。进程已在应用程序外部启动。通过列出所有进程和循环来查找进程按名称查找进程有两个方面: 1.进程已由应用程序打开。在这种情况下,您已经知道PID。方法是尝试查看具有该PID的进程是否正在运行

Process[] processlist = Process.GetProcesses();
bool proccessRunning = false;
foreach(Process theprocess in processlist){
   if( theprocess.Id == yourPID) 
   {
       proccessRunning = true;
       break;
   }        
}
二,。进程已在应用程序外部启动。通过列出所有进程并循环来查找进程,按名称查找进程