您的位置:程序门 -> vb -> 基础类



关于屏幕键盘的一个问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于屏幕键盘的一个问题[已结贴,结贴人:6742]
发表于:2007-01-19 11:41:52 楼主
微软的屏幕键盘(osk.exe)程序,请问:
1、如何实现焦点不在窗体上,而完成向其他窗发送字符的。
2、要做全功能,如何拷贝屏幕。
3、如何实现小键盘数字锁定功能。
发表于:2007-01-19 12:09:171楼 得分:10
1、如何实现焦点不在窗体上,而完成向其他窗发送字符的。
使用sendmessage或postmessage向目标投递消息从而改变字符,只需要知道目标hwnd即可,目标可见与否,前台与否,具有输入焦点与否都没关系
2、要做全功能,如何拷贝屏幕。
拷贝屏幕,可使用api来完成,当然如果你想简单点做可以模拟按下print键(alt+print将获取当前具有焦点的窗体)
3、如何实现小键盘数字锁定功能。
没看明白,什么叫小键盘数字锁定.....是指num   lock打开或不打开时小键盘的不同作用吗?如果是第3个问题似乎不成为问题...本身就是按你程序里的某的按钮你再去发送,........发什么是自己决定的吧
发表于:2007-01-19 12:09:242楼 得分:10
1、获得对应句柄   sendmessage
2、获得dc然后操作就好了

网上应该有很多类似代码吧
发表于:2007-01-19 12:11:143楼 得分:0
3、hook键盘消息
发表于:2007-01-19 17:54:564楼 得分:0
zcsor(偶业余的斗胆写点blog(ie表单自动填写相关内容更新ing):
        postmessage向目标发送消息,不要关心焦点这个不错,我是说用鼠标点发送窗口时,为什么发送窗口不获得焦点,而焦点仍然有目标窗口
发表于:2007-01-19 18:21:515楼 得分:0
const   hwnd_topmost   =   -1
const   swp_nosize   =   &h1
const   swp_nomove   =   &h2
const   swp_showwindow   =   &h40
             
private   declare   sub   setwindowpos   lib   "user32 "   (byval   hwnd   as   long,   byval   hwndinsertafter   as   long,   byval   x   as   long,   byval   y   as   long,   byval   cx   as   long,   byval   cy   as   long,   byval   wflags   as   long)
private   declare   function   getforegroundwindow   lib   "user32 "   ()   as   long
private   declare   function   setforegroundwindow   lib   "user32 "   (byval   hwnd   as   long)   as   long
private   declare   sub   keybd_event   lib   "user32 "   (byval   bvk   as   byte,   byval   bscan   as   byte,   byval   dwflags   as   long,   byval   dwextrainfo   as   long)
             
  dim   s1,   s2               as   long

            private   sub   form_activate()
            setwindowpos   me.hwnd,   hwnd_topmost,   0,   0,   0,   0,   swp_noactivate   or   swp_showwindow   or   swp_nomove   or   swp_nosize
            end   sub
            private   sub   timer1_timer()
            s1   =   getforegroundwindow
            if   s1   <>   me.hwnd   then   s2   =   s1
            end   sub
            private   sub   command1_click()
            setforegroundwindow   s2
            keybd_event   65,   0,   0,   0
            end   sub

看到网上有以上的仿照程序,但与微软的屏幕键盘不同,它是焦点在2个窗口之间转换的,有没有不转换的
发表于:2007-01-20 11:40:146楼 得分:0
所说的问题归为一点,就是如何使窗体在鼠标点击时不获得焦点,而向其他应用程序发送字符。
发表于:2007-01-20 13:15:527楼 得分:5
关注一下!
发表于:2007-01-20 14:01:598楼 得分:5
关注
发表于:2007-01-21 09:37:319楼 得分:0
做一个永远都不获得焦点的窗体,请高人指点
发表于:2007-01-22 02:31:5210楼 得分:5
永远不获得   焦点,隐藏算了!
发表于:2007-01-22 09:27:5511楼 得分:0
隐藏是不可以的,因为还需要用鼠标点击上面的按钮,就如同输入法的窗口一样。
发表于:2007-01-22 15:04:2512楼 得分:0
如何使窗体在鼠标点击时不获得焦点,有人会么?
自己顶一下
发表于:2007-01-24 15:10:5113楼 得分:0
自己再顶下,估计没有人来了
发表于:2007-01-24 17:13:4014楼 得分:10
sendmessage或postmessage向目标投递消息
问一下,如果我要发送"a"过去,sendmessage的参数是如果写?
ctrl+a呢?
alt+a
shift+a............好多!!即组合键
sendmessage的参数应该如何设置??
   
*****************************************************************************
欢迎使用csdn论坛阅读器   :   csdn   reader(附全部源代码)  
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
发表于:2007-01-24 18:36:1015楼 得分:5
如果在发送字符之前将窗体隐藏,再在发送完成后将窗体显示,不知道行不行
发表于:2007-01-25 13:53:1716楼 得分:0
发送   "a ",当然要写postmessage的参数,

我想要解决的是用鼠标点击窗体,如何拦截这一事件,使窗体得不到焦点
发表于:2007-01-26 10:56:0717楼 得分:0
如果大家对我的说法不明白,就请看osk.exe

运行osk.exe后,用其向记事本写入字符,而osk窗体并不获得焦点。
当然正常的输入法窗口用鼠标点击后也不会获得焦点

这个窗口是怎么实现的?
发表于:2007-01-29 10:31:5918楼 得分:0
mark
发表于:2007-01-30 17:28:1019楼 得分:0
尽管结贴了,但本问题还没有搞清楚。

有知道的朋友,请留下宝贵经验,可重新开贴给分。
发表于:2007-01-30 19:23:0020楼 得分:0
不获得焦点,,是因为它没有用一个按钮等获取焦点的控件,你用一个picbox试试..不好意思,好几天没来看
发表于:2007-10-10 11:16:0621楼 得分:0
我現在關注的就是這個問題,


快速检索

最新资讯
热门点击