gpt4 book ai didi

c# - 如何从 C# winform 正确关闭屏幕键盘进程?

转载 作者:行者123 更新时间:2023-11-30 20:02:26 25 4
gpt4 key购买 nike

我目前正在设计一个图像查看器,允许用户输入她的电子邮件并以数字方式获取图像。困扰我的部分是让屏幕键盘关闭。我使用这段代码来启动 windows 进程:

string progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink";
string keyboardPath = Path.Combine(progFiles, "TabTip.exe");
Process keyboardProc = Process.Start(keyboardPath);

之后我打开一个 VB InputBox 以提示输入电子邮件地址(为此我使用屏幕键盘,因为应用程序将显示在触摸屏上)。出现此提示后,我想自动关闭该进程。

我尝试用以下方法结束进程:

keyboardProc.Kill();
keyboardProc.Dispose();
keyboardProc.Close();
keyboardProc = null;

它们都不起作用,只是抛出异常:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.dll
Additional information: Cannot process request because the process has exited.

我也试过通过 ID 识别进程并以此方式关闭它,也没有用。我也看过: C#/.NET: Closing another process outside the main window但也没有让它工作.. :(

我是 C# 的新手,这是我第一次从代码调用 Windows 进程 - 我是否遗漏了什么?

非常感谢您!

最佳答案

    /// <summary>
/// Show the On Screen Keyboard
/// </summary>
#region ShowOSK
public static void ShowOnScreenKeyboard()
{
ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe");
Process.Start(startInfo);
}
#endregion ShowOSK

/// <summary>
/// Hide the On Screen Keyboard
/// </summary>
#region HideOSK
public static void HideOnScreenKeyboard()
{
uint WM_SYSCOMMAND = 274;
uint SC_CLOSE = 61536;
IntPtr KeyboardWnd = FindWindow("IPTip_Main_Window", null);
PostMessage(KeyboardWnd.ToInt32(), WM_SYSCOMMAND, (int)SC_CLOSE, 0);
}
#endregion HideOSK

关于c# - 如何从 C# winform 正确关闭屏幕键盘进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16832328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com