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 に答える