电话自动停复机相关技术1:键盘、鼠标模拟

本文介绍了使用VB.NET开发电话停复机系统的方法,通过模拟鼠标点击和键盘输入来实现对交换机数据库的操作。核心代码包括模拟鼠标事件和SendKeys方法,用于在维护终端上模拟人工停复机命令。

今天突然想自己学习开发一个vb.net的电话停复机系统。大约的思路:实时监测数据库上的欠费记录,找到欠费而且够条件(1.欠费达到一定标准,2.时间达到标准,3.还没有被停机的) 的进行停机,缴费后复机。直接操作交换机的数据库不会,特别是前台。只有在现在的维护终端上模拟人工操作停复机命令。

1.鼠标要找到输入命令的位置,并单击

Inherits System.Windows.Forms.Form
    Declare Sub mouse_event Lib "user32.dll" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Integer, ByVal dwExtraInfo As Integer)
    Public Const MOUSEEVENTF_LEFTDOWN = &H2   '模拟鼠标左键按下  
    Public Const MOUSEEVENTF_LEFTUP = &H4   '模拟鼠标左键释放  
    Public Const MOUSEEVENTF_MIDDLEDOWN = &H20   '模拟鼠标中间键按下  
    Public Const MOUSEEVENTF_MIDDLEUP = &H40   '模拟鼠标中间键释放  
    Public Const MOUSEEVENTF_RIGHTDOWN = &H8   '模拟鼠标右键按下  
    Public Const MOUSEEVENTF_RIGHTUP = &H10   '模拟鼠标右键释放  
    Public Const MOUSEEVENTF_MOVE = &H1   '模拟鼠标指针移动  
    Public x, y As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim i
        For i = 1 To 10

            x = 222
            y = 222
            mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0)
            '在k(x,y)模拟鼠标左键按下  
            mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0)
            Windows.Forms.Cursor.Position = New Point(x, y)

            mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0)
            '在k(x,y)模拟鼠标左键按下  
            mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0)


            System.Windows.Forms.SendKeys.Send("AAAAAAAA")
            System.Windows.Forms.SendKeys.Send("{F9}")


        Next

    End Sub

x y 以后用具体的位置代替,"AAAAAAAA" 用命令代替
模拟鼠标按下左键是从优快云上找到的代码,原代码拿过来运行出现了unbanlance stack之类的告警,把原“user32” 改成了”user32.dll“ ,后面的参数如dwFlags等原来是long,但是下面的x y 又定义成integer,这个可能是出现错误的原因,于是都改成integer,运行成功

 

 

2.模拟键盘输入命令是

            System.Windows.Forms.SendKeys.Send("AAAAAAAA")
            System.Windows.Forms.SendKeys.Send("{F9}")
还找到了一篇比较完整的sendkeys.send方法

http://www.chenjiliang.com/Article/View.aspx?ArticleID=2183&TypeID=84

SendKeys.Send("^+{TAB}");



使用SendKeys将键击和组合键击发送到活动应用程序。此类无法实例化。若要发送一个键击给某个类并立即继续程序流,请使用Send。若要等待键击启动的任何进程,请使用SendWait。   

每个键都由一个或多个字符表示。若要指定单个键盘字符,请使用该字符本身。例如,若要表示字母 A,请将字符串“A”传递给方法。若要表示多个字符,请将各个附加字符追加到它之前的字符的后面。若要表示字母A、B和C,请将参数指定为“ABC”。   

加号(+)、插入符号(^)、百分号(%)、波浪号(~)以及圆括号() 对 SendKeys   具有特殊含义。若要指定这些字符中的某个字符,请将其放在大括号 ({})  内。例如,若要指定加号,请使用“{+}”。若要指定大括号字符,请使用“{{}”和“{}}”。中括号   ([   ])   对   SendKeys   没有特殊含义,但必须将它们放在大括号内。在其他应用程序中,中括号具有特殊含义,此含义可能会在发生动态数据交换(DDE)时起重要作用。   

若要指定在按键(如ENTER或TAB)时不显示的字符,以及表示操作而不表示字符的键,请使用下表中的代码:   

复制   保存
键   代码     
BACKSPACE   {BACKSPACE}、{BS}   或   {BKSP}     
BREAK   {BREAK}     
CAPS   LOCK   {CAPSLOCK}     
DEL   或   DELETE   {DELETE}   或   {DEL}     
DOWN   ARROW(下箭头键)   {DOWN}     
END   {END}     
ENTER   {ENTER}   或   ~     
ESC   {ESC}     
HELP   {HELP}     
HOME   {HOME}     
INS   或   INSERT   {INSERT}   或   {INS}     
LEFT   ARROW(左箭头键)   {LEFT}     
NUM   LOCK   {NUMLOCK}     
PAGE   DOWN   {PGDN}     
PAGE   UP   {PGUP}     
PRINT   SCREEN   {PRTSC}(保留供将来使用)     
RIGHT   ARROW(右箭头键)   {RIGHT}     
SCROLL   LOCK   {SCROLLLOCK}     
TAB   {TAB}     
UP   ARROW(上箭头键)   {UP}     
F1   {F1}     
F2   {F2}     
F3   {F3}     
F4   {F4}     
F5   {F5}     
F6   {F6}     
F7   {F7}     
F8   {F8}     
F9   {F9}     
F10   {F10}     
F11   {F11}     
F12   {F12}     
F13   {F13}     
F14   {F14}     
F15   {F15}     
F16   {F16}     
数字键盘加号   {ADD}     
数字键盘减号   {SUBTRACT}     
数字键盘乘号   {MULTIPLY}     
数字键盘除号   {DIVIDE}

  

若要指定与SHIFT、CTRL和ALT键的任意组合一起使用的键,请在这些键代码之前加上以下一段或多段代码。       

键   代码
SHIFT   +     
CTRL   ^     
ALT   %

  
若要指定在按一些键时应同时按住SHIFT、CTRL和ALT键的任意组合,请将这些键的代码放在括号内。例如,若要指定按E和C时同时按住SHIFT键,请使用“+(EC)”。若要指定按E时应按住SHIFT,之后按C时不按住   SHIFT,请使用“+EC”。   

要指定重复的键,请使用 {键数字} 的形式。键和数字之间必须放一空格。例如,{LEFT   42}   表示按左箭头键 42 次;{h   10} 表示按H 10次。   

注意:因为没有可用来激活另一个应用程序的托管方法,所以可以在当前应用程序中使用此类,或使用本机Windows方法(如FindWindow和 SetForegroundWindow)来强制聚焦到其他应用程序上

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值