今天突然想自己学习开发一个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)来强制聚焦到其他应用程序上