zoukankan      html  css  js  c++  java
  • c# winform调用osk系统自带软键盘

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Runtime.InteropServices;
    using System.Diagnostics;
    using System.Windows.Forms;
    using NLog;
    
    
    namespace Utils.common
    {
        class ScreenKeyboard
        {
            private static ILogger logger = NLog.LogManager.GetCurrentClassLogger();
            public static bool isShowNumBoard = false;
    
            [DllImport("kernel32.dll", SetLastError = true)]
            public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
    
            [DllImport("kernel32.dll", SetLastError = true)]
            public static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);
    
            public static IntPtr ptr = new IntPtr();
    
            public static void ShowScreenKeyboard()
            {
                try {
                    //判断软键盘是否进程是否已经存在,如果不存在进行调用
                    Process[] pro = Process.GetProcessesByName("osk");
                    bool isWow64FsRedirectionDisabled = Wow64DisableWow64FsRedirection(ref ptr);
                   
                    //键盘如果已经打开则重新打开,防止最小化无法显示
                    if (pro != null && pro.Length > 0)
                    {
                        Process kbpr = pro[0];
                        kbpr.Kill();
                        if (isWow64FsRedirectionDisabled)
                        {
                            Process.Start(@"C:WINDOWSsystem32osk.exe");
                            Wow64RevertWow64FsRedirection(ptr);
                        }
                        return;
                    }
                    if (isWow64FsRedirectionDisabled)
                    {
                        Process.Start(@"C:WINDOWSsystem32osk.exe");
                        Wow64RevertWow64FsRedirection(ptr);
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex.Message);
                }
            }
            
        }
    }
    

      

  • 相关阅读:
    CSP 201612-3 权限查询 【模拟+STL】
    Vijos 1565 多边形 【区间DP】
    制作进度条(UISlider)
    制作按钮(Button)
    制作UI纹理(UI Texture)
    制作标签(Label)
    什么是UI控件
    制作精灵(UI Sprite)
    深度(Depth)概念
    2D UI和3D UI的工作原理
  • 原文地址:https://www.cnblogs.com/webttt/p/15470511.html
Copyright © 2011-2022 走看看