【问题标题】:C# Kill OSK, Works in Debug, not when running directlyC# Kill OSK,在调试中工作,而不是在直接运行时
【发布时间】:2013-10-25 15:43:17
【问题描述】:

每当我从 Visual Studio 2012 中启动我的程序时,它都会正确执行以下代码:

        int oskID = System.Diagnostics.Process.Start("c:\\WINDOWS\\system32\\osk.exe").Id;
        Thread.Sleep(1500);
        System.Diagnostics.Process.GetProcessById(oskID).Kill();

但是,当我从 VS 2012 外部运行 .exe 时,您只需对每个程序执行此操作,OSK 将不会关闭,并且会提示我以下错误:带有 id 的进程......没有被执行。

关闭特定 OSK 的正确方法是什么?我的代码有什么问题?以管理员身份运行不会改变任何内容。

【问题讨论】:

  • 也许你应该打电话给WaitForInputIdle
  • 必须是 OSK 吗?我知道这更像是某种启动器。
  • 如果我调用 WaitFOrInputIdle 我会收到拒绝访问错误。是的,它必须是 OSK。

标签: c# on-screen-keyboard


【解决方案1】:

关闭特定 OSK 的正确方法是什么?

是否可以打开多个 OSK 实例?

这个怎么样?

        System.Diagnostics.Process.Start("c:\\WINDOWS\\system32\\osk.exe");
        Thread.Sleep(1500);
        foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName("osk"))
        {
            p.Kill();
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-30
    • 2021-12-07
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    相关资源
    最近更新 更多