【问题标题】:Launch x64 Windows application in C# while the project is set to x86在项目设置为 x86 时在 C# 中启动 x64 Windows 应用程序
【发布时间】:2010-06-03 20:26:07
【问题描述】:

我正在尝试启动 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 机器上运行。 有没有办法绕过这个?真是令人沮丧。

【问题讨论】:

标签: c# x86 64-bit on-screen-keyboard


【解决方案1】:

我找到了。谢谢你的回答。

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);
}

【讨论】:

    【解决方案2】:

    您可以直接尝试 PInvoking ShellExecuteEx()CreateProcess()
    Here's a link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多