在C#中将项目设置为x86,同时启动x64 Windows应用程序

3

我试图启动osk.exe却一直收到“无法启动osk”消息。 问题在于我的项目设置为x86(我正在使用ms access数据库)。 如果我切换到x64或Any 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机器上都能运行。 有没有什么方法可以绕过这个问题?这真的很令人沮丧。


可能是在Win7 x64上从32位进程启动屏幕键盘(osk.exe)失败的重复问题。 - Hans Passant
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);
}

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接