cashiba 发表于 2017-4-2 21:07:24

InputBox如何判断是点击的"确定"还是按下"Enter"?[已解决]

本帖最后由 cashiba 于 2017-4-4 23:57 编辑

Local $sAnswer = InputBox("询问", "你在哪里出生?", "地球", "")inputbox在使用时,
键盘操作按enter键和鼠标点击“确定”
效果一样。
请问,如何区别是点击的图形界面的“确定”按钮还是键盘发送的“ENTER”?

229989799 发表于 2017-4-2 23:17:34

返回结果是一样的,所以没必要区分是确定还是回车吧。如果焦点不在确定上,回车也按不成:“确定”

MXSEED 发表于 2017-4-3 13:33:49

本帖最后由 MXSEED 于 2017-4-3 13:35 编辑

结合gui消息和鼠标事件你看可不可以区分,不用inputbox写一个对话框出来

cashiba 发表于 2017-4-3 17:58:24

返回结果是一样的,所以没必要区分是确定还是回车吧。如果焦点不在确定上,回车也按不成:“确定”
229989799 发表于 2017-4-2 23:17 http://www.autoitx.com/images/common/back.gif
主要是想通过循环快速连续输入字符串,键盘enter的时候表示输入下一个,鼠标点击"确定"按钮,就表示全部输入完成,关闭界面。所以区分一下操作方式还是有必要的。焦点一般默认是在确定按钮上吧。
如果自己用GUI仿制一个input界面估计容易些,但是如果能只利用内置函数完成可能更便捷
{:face (288):}[

fenhanxue 发表于 2017-4-3 21:53:03

回复 1# cashiba


笨办法:自己构造一个inputbox
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>





Global $if_bt ;        1        代表点击的是确认按钮        2代表点击的是回车

_Temp_InputBox('test','test','test')




If $if_bt = 2 Then
        MsgBox(0,'','按了回车')
Else
        MsgBox(0,'','没按回车')
EndIf






Func _Temp_InputBox($a,$b,$c)
        Local $Form1 = GUICreate($a, 371, 149, 402, 259)
        Local $Lable1 = GUICtrlCreateLabel($b, 1, 1, 360, 17)
        Local $Input1 = GUICtrlCreateInput($c, 16, 40, 345, 21)
        Local $Button1 = GUICtrlCreateButton("确定", 40, 88, 97, 25)
        Local $Button2 = GUICtrlCreateButton("cancel", 184, 88, 113, 25)
        GUISetState(@SW_SHOW)       
       
        HotKeySet('{enter}','_enter')
       
        Local $temp_return = ''
        ;返回的文字
        While 1
                Sleep(1)
                If $if_bt = 2 Then
                        $temp_return = GUICtrlRead($Input1)
                        ExitLoop
                EndIf       
                       
                $nMsg = GUIGetMsg()
                Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                                Exit
                        Case $Button1
                                ;按下确定后的函数
                                $temp_return = GUICtrlRead($Input1)
                                $if_bt = 1
                                ExitLoop
                        Case $Button2
                                ;按下取消
                                ExitLoop

                EndSwitch
        WEnd       
       
        GUIDelete($Form1)
        Return        $temp_return
       
EndFunc
Func _enter()
       $if_bt = 2
       HotKeySet('{enter}')
EndFunc

cashiba 发表于 2017-4-4 19:10:17

回复cashiba
笨办法:自己构造一个inputbox
fenhanxue 发表于 2017-4-3 21:53 http://www.autoitx.com/images/common/back.gif
谢谢!看来只能自己构造GUI了....

jingzhinvr 发表于 2017-4-4 20:24:21

帮助里找找看

kk_lee69 发表于 2017-4-4 21:42:51

回复 6# cashiba


    _IsPressed("0D", $dll)

cashiba 发表于 2017-4-4 23:55:26

回复cashiba
_IsPressed("0D", $dll)
kk_lee69 发表于 2017-4-4 21:42 http://www.autoitx.com/images/common/back.gif
感谢K侠....
忘了还有这个函数,看见用过,印象不深。
还以为要用到PostMessage之类的。这下记住了....

sh1536 发表于 2017-4-6 11:05:34

这个正好我能用到,感谢

zhouzc88 发表于 2017-4-7 18:16:50

学习学习了。

dingcool 发表于 2017-4-7 19:19:46

学习学习了。

zxhou1 发表于 2017-4-9 10:51:35

{:face (131):}

jingzhinvr 发表于 2017-4-10 03:12:16

支持下,不错方法
页: [1]
查看完整版本: InputBox如何判断是点击的"确定"还是按下"Enter"?[已解决]