检测屏幕键盘是否打开

时间:2015-06-04 12:28:57

标签: c# .net wpf on-screen-keyboard

我想知道OSK.exe进程(屏幕键盘)是否打开。

这是打开OSK的代码:

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

您是否有任何想法如何检查它并阻止启动两次以上此过程?

2 个答案:

答案 0 :(得分:9)

您可以通过以下名称获得正在运行的流程:

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

答案 1 :(得分:1)

有两个方面: 1.您的申请已经开放流程。在这种情况下,您已经知道PID。要做的就是尝试查看具有该PID的进程是否正在运行。

Process[] processlist = Process.GetProcesses();
bool proccessRunning = false;
foreach(Process theprocess in processlist){
   if( theprocess.Id == yourPID) 
   {
       proccessRunning = true;
       break;
   }        
}

2。流程在您的应用外部启动。通过列出所有进程并循环来查找proc。按名称查找进程