您的位置:程序门 -> vb ->



电子秤系统的实现


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


电子秤系统的实现[已结贴,结贴人:yao93324061]
发表于:2007-05-22 10:56:16 楼主
现在在项目实施的时候遇到一个问题,需要通过api编程后获得电子秤上面的数据,然后通过热键来将得到的数据输出到光标焦点处,实际上就是一个自动输入的过程,有点类似扫描枪读取条形码的样子,有谁做过没,给个例子,小弟不胜感谢的呀


发表于:2007-05-25 08:04:331楼 得分:0
即是钩子程序问题,应该要调到   winio的东西,现在还有个关键就是怎么样来定义热键,使得该小程序能够通过该键来实时的激活获得数据(因为现在是两种语言的程序,vb写的东西只能算是小插件,必须要通过热键来激活)
发表于:2007-05-25 08:13:062楼 得分:50
http://www.vbaccelerator.com/home/vb/code/libraries/subclassing/registered_hotkeys/vb6_hot_key_sample.asp

注意看说明
发表于:2007-05-25 08:33:113楼 得分:50
给你一个使用热键向当前活动窗体模拟输入指定内容的例子:

以下代码需写在一个模块中:

option   explicit

public   declare   function   setwindowlong   lib   "user32 "   alias   "setwindowlonga "   (byval   hwnd   as   long,   byval   nindex   as   long,   byval   dwnewlong   as   long)   as   long
public   declare   function   callwindowproc   lib   "user32 "   alias   "callwindowproca "   (byval   lpprevwndfunc   as   long,   byval   hwnd   as   long,   byval   msg   as   long,   _
                                                                                                                                                          byval   wparam   as   long,   byval   lparam   as   long)   as   long

public   declare   function   registerhotkey   lib   "user32 "   (byval   hwnd   as   long,   byval   id   as   long,   byval   fsmodifiers   as   long,   byval   vk   as   long)   as   long
public   declare   function   unregisterhotkey   lib   "user32 "   (byval   hwnd   as   long,   byval   id   as   long)   as   long

public   const   mod_alt   =   1
public   const   mod_control   =   2
public   const   mod_shift   =   4
public   const   mod_win   =   8
public   const   gwl_wndproc   =   (-4)
public   const   wm_hotkey   =   &h312

public   const   hotkeyid   =   1001

public   prevproc   as   long
public   senddata   as   string

public   function   mywindowproc(byval   hwnd   as   long,   byval   umsg   as   long,   byval   wparam   as   long,   byval   lparam   as   long)   as   long
        mywindowproc   =   callwindowproc(prevproc,   hwnd,   umsg,   wparam,   lparam)
        if   umsg   =   wm_hotkey   and   wparam   =   hotkeyid   then
                sendkeys   senddata
        end   if
end   function

以下代码写在一个窗体中:
option   explicit

private   sub   form_load()
        '注册热键:   windows键+a
        registerhotkey   me.hwnd,   hotkeyid,   mod_win,   65
        'hook
        prevproc   =   setwindowlong(me.hwnd,   gwl_wndproc,   addressof   mywindowproc)
       
        timer1.interval   =   1000
        timer1.enabled   =   true
end   sub

private   sub   form_unload(cancel   as   integer)
        unregisterhotkey   me.hwnd,   hotkeyid
        setwindowlong   me.hwnd,   gwl_wndproc,   prevproc
end   sub

private   sub   timer1_timer()
        '随机设置一个需要发送的内容
        select   case   int(rnd   *   4)
        case   0
                senddata   =   "hello! "
        case   1
                senddata   =   "你好! "
        case   2
                senddata   =   "welcome! "
        case   3
                senddata   =   "hi! "
        end   select
end   sub

程序运行之后,   按下热键(windows键+a),   就会在当前活动窗体中输入一串文字(内容为四个中的随机选取值)
发表于:2007-05-28 07:53:474楼 得分:0
谢谢rainstormmaster和jadeluo,我正试着依据你们的建议去实现


快速检索

最新资讯
热门点击