V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nfroot
V2EX  ›  问与答

请教关于 Windows 软键盘类型软件的特殊窗口原理

  •  
  •   nfroot · 2017-03-03 11:51:35 +08:00 · 1933 次点击
    这是一个创建于 2833 天前的主题,其中的信息可能已经有所发展或是发生改变。
    首先必须说的是,真的不知道以什么关键词去谷歌搜.

    首先,软键盘的打开方式“开始菜单》运行》 osk+回车”

    出来的这个软件就是屏幕键盘,代替键盘去操作电脑,俗称软键盘(吃软饭的)。

    这个窗口很有特点,就是点击这个窗口上的按钮(软键盘),原窗口不会失去焦点,而且不是瞬间失去焦点马上返回原窗口,而是原窗口根本没失去焦点。


    举个例子,我们在修改文件名的时候,输入文字后点击了其他窗口,或者快捷键切换到了其他软件的窗口,那么文件名就会马上保存(相当于你确认了这个文件名),但是在软键盘上点击,无论多少次,多长时间,“当前窗口”一直是原窗口,当前窗口不会变到软键盘的这个窗口。



    是不是懵逼了?我就是想做一个小工具,用的时候希望能像软键盘那样保持原来的窗口,但是很显然不知道如何去实现,因为只要一点击我的工具的窗口,“当前窗口”马上就变成工具所在的窗口了。

    如果还不明白,那就当要做一个软键盘,但是输入的时候不能让原窗口失去焦点(显而易见的例子就是修改文件名的这类,焦点一离开窗口就确认操作了)


    发一个图希望您能明白……

    7 条回复    2017-03-03 19:56:29 +08:00
    nfroot
        1
    nfroot  
    OP
       2017-03-03 11:53:01 +08:00
    其实在意这个问题很久了,一直想知道其原理,至于模拟按键不是什么难事,我想知道的不是这个。
    wafm
        2
    wafm  
       2017-03-03 12:05:27 +08:00   ❤️ 1
    hook api
    nfroot
        3
    nfroot  
    OP
       2017-03-03 13:44:09 +08:00
    @wafm 这回复也太简单了吧……
    wafm
        4
    wafm  
       2017-03-03 14:44:49 +08:00   ❤️ 1
    @nfroot 屏幕键盘这种的话 一般需要全局 HOOK ,比如子类化 SetWindowlong

    一般程序的话 关键在于注入了 注入该程序 子类化 基本上可以随你用键盘操作了

    关于焦点问题 Windows 下 SetFocus 一般是常用的设置焦点的 API

    缺点就是 你这么 HOOK 杀毒软件一定拦截你的操作
    levie
        5
    levie  
       2017-03-03 15:08:05 +08:00   ❤️ 1
    只是不丢失焦点的话,加 WS_EX_NOACTIVATE 就好了啊 = =
    nfroot
        6
    nfroot  
    OP
       2017-03-03 16:48:45 +08:00
    @wafm
    @levie
    谢谢
    helixzz
        7
    helixzz  
       2017-03-03 19:56:29 +08:00
    mark
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3525 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 10:57 · PVG 18:57 · LAX 02:57 · JFK 05:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.