#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Global $hGUI
Global Const $EN_CHANGE = 0x300
$hGUI = GUICreate("检测Combo有键盘输入", 400, 96)
$hinput = GUICtrlCreateInput("",2,5,396,20);
GUISetState()
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
Func WM_COMMAND($hWinHandle, $iMsg, $wParam, $lParam)
If _WinAPI_HiWord($wParam) = $EN_CHANGE And _WINAPI_LoWord($wParam) = $hinput Then
Local $read,$Re,$ReRead
$read=GUICtrlRead($hinput)
$InputSplit = StringRegExp($read, '.', 3)
For $n=0 To UBound($InputSplit)-1
If StringRegExp($InputSplit[$n],'[^\x00-\xff]',0)=0 Then
$read=StringReplace($read,$InputSplit[$n],'')
GUICtrlSetData($hinput,$Read)
EndIf
Next
EndIf
EndFunc 14楼的改造代码,应该可以解决快速输入半角字符或在已输入的字符中插入字符或粘贴时发生错误的问题。#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <array.au3>
Local $InputSplit, $read
$Form1 = GUICreate("Form1", 256, 105, -1, -1)
$Input1 = GUICtrlCreateInput("", 24, 40, 190, 21, $ES_AUTOHSCROLL)
AdlibRegister("scan", 50)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func scan()
$read=GUICtrlRead($input1)
$InputSplit = StringRegExp($read, '.', 3)
For $n=0 To UBound($InputSplit)-1
If StringRegExp($InputSplit[$n],'[^\x00-\xff]',0)=0 Then
$read=StringReplace($read,$InputSplit[$n],'')
GUICtrlSetData($input1,$Read)
EndIf
Next
EndFunc ;==>scan 16# 17# 都不错,学习了~~ 学习了~~.. 受教了 非常不错 呵呵 每天都在学习! 谢谢大家! 在6# xsjtxy 兄弟的基础上增加了一个功能,可以限制全角数字及字母的输入#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 500, 150, -1, -1)
dim $ii = ""
$Input1 = GUICtrlCreateInput($ii, 30, 50, 440, 21,$ES_WANTRETURN)
GUISetState(@SW_SHOW)
AdlibRegister("Input",10)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
func Input()
$i = GUICtrlRead($Input1)
if $i = $ii then Return
; 半角符的数字及英文
$i = StringReplace($i, "0", "")
$i = StringReplace($i, "1", "")
$i = StringReplace($i, "2", "")
$i = StringReplace($i, "3", "")
$i = StringReplace($i, "4", "")
$i = StringReplace($i, "5", "")
$i = StringReplace($i, "6", "")
$i = StringReplace($i, "7", "")
$i = StringReplace($i, "8", "")
$i = StringReplace($i, "9", "")
$i = StringReplace($i, "a", "")
$i = StringReplace($i, "b", "")
$i = StringReplace($i, "c", "")
$i = StringReplace($i, "d", "")
$i = StringReplace($i, "e", "")
$i = StringReplace($i, "f", "")
$i = StringReplace($i, "g", "")
$i = StringReplace($i, "h", "")
$i = StringReplace($i, "i", "")
$i = StringReplace($i, "j", "")
$i = StringReplace($i, "k", "")
$i = StringReplace($i, "l", "")
$i = StringReplace($i, "m", "")
$i = StringReplace($i, "n", "")
$i = StringReplace($i, "o", "")
$i = StringReplace($i, "p", "")
$i = StringReplace($i, "q", "")
$i = StringReplace($i, "r", "")
$i = StringReplace($i, "s", "")
$i = StringReplace($i, "t", "")
$i = StringReplace($i, "u", "")
$i = StringReplace($i, "v", "")
$i = StringReplace($i, "w", "")
$i = StringReplace($i, "x", "")
$i = StringReplace($i, "y", "")
$i = StringReplace($i, "z", "")
; 全角符的数字及英文
$i = StringReplace($i, "0", "")
$i = StringReplace($i, "2", "")
$i = StringReplace($i, "3", "")
$i = StringReplace($i, "4", "")
$i = StringReplace($i, "5", "")
$i = StringReplace($i, "6", "")
$i = StringReplace($i, "7", "")
$i = StringReplace($i, "8", "")
$i = StringReplace($i, "9", "")
$i = StringReplace($i, "a", "")
$i = StringReplace($i, "b", "")
$i = StringReplace($i, "c", "")
$i = StringReplace($i, "d", "")
$i = StringReplace($i, "e", "")
$i = StringReplace($i, "f", "")
$i = StringReplace($i, "g", "")
$i = StringReplace($i, "h", "")
$i = StringReplace($i, "i", "")
$i = StringReplace($i, "j", "")
$i = StringReplace($i, "k", "")
$i = StringReplace($i, "l", "")
$i = StringReplace($i, "m", "")
$i = StringReplace($i, "n", "")
$i = StringReplace($i, "o", "")
$i = StringReplace($i, "p", "")
$i = StringReplace($i, "q", "")
$i = StringReplace($i, "r", "")
$i = StringReplace($i, "s", "")
$i = StringReplace($i, "t", "")
$i = StringReplace($i, "u", "")
$i = StringReplace($i, "v", "")
$i = StringReplace($i, "w", "")
$i = StringReplace($i, "x", "")
$i = StringReplace($i, "y", "")
$i = StringReplace($i, "z", "")
GUICtrlSetData($Input1,$i)
$ii = $i
endfunc P版出过题的。我忘记叫什么了。
记得有很多人都是先输入消息 判断 然后删除。
P版的代码是直接截取消息 學習了.......不知道是不是有 P版 的 源碼
页:
1
[2]