3

我正在尝试启动 osk.exe,但我不断收到“无法启动 osk”消息。问题是我的项目设置为 x86(我使用的是 ms 访问数据库)。如果我切换到 x64 或任何 CPU 一切正常,但数据库将不再工作。我试过这个

using System.Diagnostics;

private void btnOSK_Click(object sender, EventArgs e)
    {   Process.Start("osk.exe");

        Process.Start(@"C:\windows\system32\osk.exe");
    }

我也尝试运行 SysWOWW\osk 但这也没有用。除了我的应用程序应该在 x86 和 x64 机器上运行。有没有办法绕过这个?真是令人沮丧。

4

2 回答 2

3

我找到了。感谢您的回答。

static void StartOSK()
{
  string windir = Environment.GetEnvironmentVariable("WINDIR");
  string osk = null;

  if (osk == null)
  {
    osk = Path.Combine(Path.Combine(windir, "sysnative"), "osk.exe");
    if (!File.Exists(osk))
    {
      osk = null;
    }
  }

  if (osk == null)
  {
    osk = Path.Combine(Path.Combine(windir, "system32"), "osk.exe");
    if (!File.Exists(osk))
    {
      osk = null;
    }
  }

  if (osk == null)
  {
    osk = "osk.exe";
  }

  Process.Start(osk);
}
于 2010-06-03T20:41:09.497 回答
0

您可以尝试 PInvokingShellExecuteEx()CreateProcess()直接尝试。
这是一个链接

于 2010-06-03T20:34:11.563 回答