C# 如何调用系统软键盘OSK

win1064位,报错操作需要提升修改了权限文件报错仍然存在。

试试,尝试以管理员身份运行您的程序。

using System;
using System.Diagnostics;

namespace CallOSK
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个新的Process对象
            Process oskProcess = new Process();

            // 设置Process的启动信息
            oskProcess.StartInfo.FileName = "osk.exe";
            oskProcess.StartInfo.UseShellExecute = true;

            // 启动软键盘进程
            oskProcess.Start();
        }
    }
}

参考gpt:
在C#中调用系统软键盘(On-Screen Keyboard,简称OSK),可以使用Process.Start方法来启动OSK应用程序。下面是一种调用OSK的示例代码:

using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        try
        {
            Process.Start("osk.exe");
        }
        catch (Exception ex)
        {
            Console.WriteLine("无法启动系统软键盘:" + ex.Message);
        }
    }
}

请确保你的操作系统中已经安装了OSK应用程序,它通常位于 %windir%\System32 目录下的 osk.exe 文件。

如果在运行时报错提示操作需要提升权限,即使修改了权限文件仍然存在,可能是因为你的程序没有以管理员权限运行。对于某些需要提升权限的操作,你需要以管理员身份运行你的C#程序。

下面是以管理员身份运行C#程序的方法:

找到你的C#程序的可执行文件(.exe文件)。

  1. 右键单击可执行文件,然后选择“以管理员身份运行”。
  2. 通过以管理员身份运行程序,你应该能够启动系统软键盘而不再遇到权限问题。

注意:如果你的程序需要频繁使用管理员权限进行操作,你可能需要修改程序的清单文件 (app.manifest),以请求管理员权限。在清单文件中,将 元素的 level 属性设置为 requireAdministrator。这样,当你的程序被启动时,将自动提示用户提升为管理员权限。

有两个步骤实现运行:
1、将C:\Windows\System32\osk.exe拷贝到程序编译的目录下,和exe文件同目录;
2、执行代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个新的Process对象
            Process oskProcess = new Process();

            // 设置Process的启动信息
            oskProcess.StartInfo.FileName = @"osk.exe";
            oskProcess.StartInfo.UseShellExecute = true;

            // 启动软键盘进程
            oskProcess.Start();
        }
    }
}


3、注意执行exe,一定要以管理员身份运行。运行效果:

img

using System.Diagnostics;
Process kbpr = System.Diagnostics.Process.Start("osk.exe"); // 打开系统键盘

if (kbpr.HasExited)
{
        kbpr = System.Diagnostics.Process.Start("osk.exe");
}