文本输入框变化时,取值查询数据库
是这样的,有个身份证读卡的原程序,身份证在读卡器刷了后,原程序可以把身份信息读出来。我的程序就是自动取显示出来的身份证号,然后自动查询我自己的数据库。问题:1,程序写的是个死循环,反复的在读取,我想请教下,有没有办法监视显示身份证的那个文本框,让它有变化的时候才读取,没有变化的时候不读取(因为有时候刷身份证得人多,有时候刷身份证得人少)
$b = ""
$a = 获取文本框中的内容
if $a = $b then
不搞什么
else
查自己的数据库去
$a = $b
endif
思想是这样的。 回复 2# 绿色风
这个倒是可以实现不同时去查询数据库,但是还是挺耗资源的,我是想,当目标程序身份证号码框的号码变化的那个事件发生时,我的脚本来执行,而不是一直在那里执行 回复 2# 绿色风
这个倒是可以实现不同时去查询数据库,但是还是挺耗资源的,我是想,当目标程序身份证号码框的号码变化的那个事件发生时,我的脚本来执行,而不是一直在那里执行 en_change 消息 截个图看看,一般情况下可以用消息事件函数来达到目的,根据控件不同通过不同的消息来获取消息
假如你要获取的控件是Input或者Edit就可以用EN_CHANGE事件来达到你要的目的 http://msdn.microsoft.com/zh-cn/subscriptions/downloads/bb773169.aspx
这里有几乎所有的控件消息,进去后选择相应的控件,然后页面的Notifications下面就是相应的控件的事件,Contents就是在哪些系统消息里面可以捕获相应的事件
建议你先搜一下系统消息相关的知识 这里是一个别人的例子,我直接贴上来,你可以看一下#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 194, 111, 192, 114)
$Edit1 = GUICtrlCreateEdit('', 32, 40, 131, 20)
$hEdit = GUICtrlGetHandle($Edit1)
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func WM_COMMAND($hWnd, $msg, $wParam, $lParam)
Local $iCode = BitShift($wParam, 16) ; get the high word
Switch $lParam
Case $hEdit
Switch $iCode
Case $EN_CHANGE
$text = GUICtrlRead($Edit1)
MsgBox(0, "Contents", $text)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND 回复 6# qinylj 回复 6# qinylj
我就是要取这个程序里面的身份证号 在线等的蛋疼 回复 11# macanchen
你的問題是有個 A程序是別人寫好的已經可以讀取 卡片號碼了.....你無法編譯或者改些那個程序 對嗎
然後你要寫個 B程序去讀取他......
以上所說的是否正確 Autoit跟VC++一样也是用的消息处理机制,所以我觉得8#楼的高手挺好! 回复 12# kk_lee69
是的 回复 12# kk_lee69
是的
页:
[1]
2