找回密码
 加入
搜索
查看: 4381|回复: 13

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

 火.. [复制链接]
发表于 2017-4-2 21:07:24 | 显示全部楼层 |阅读模式
本帖最后由 cashiba 于 2017-4-4 23:57 编辑
Local $sAnswer = InputBox("询问", "你在哪里出生?", "地球", "")
inputbox在使用时,
键盘操作按enter键和鼠标点击“确定”
效果一样。
请问,如何区别是点击的图形界面的“确定”按钮还是键盘发送的“ENTER”?
发表于 2017-4-2 23:17:34 | 显示全部楼层
返回结果是一样的,所以没必要区分是确定还是回车吧。如果焦点不在确定上,回车也按不成:“确定”
发表于 2017-4-3 13:33:49 | 显示全部楼层
本帖最后由 MXSEED 于 2017-4-3 13:35 编辑

结合gui消息和鼠标事件你看可不可以区分,不用inputbox写一个对话框出来
 楼主| 发表于 2017-4-3 17:58:24 | 显示全部楼层
返回结果是一样的,所以没必要区分是确定还是回车吧。如果焦点不在确定上,回车也按不成:“确定”
229989799 发表于 2017-4-2 23:17

主要是想通过循环快速连续输入字符串,键盘enter的时候表示输入下一个,鼠标点击"确定"按钮,就表示全部输入完成,关闭界面。所以区分一下操作方式还是有必要的。焦点一般默认是在确定按钮上吧。
如果自己用GUI仿制一个input界面估计容易些,但是如果能只利用内置函数完成可能更便捷
[
发表于 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

评分

参与人数 1金钱 +19 收起 理由
cashiba + 19

查看全部评分

 楼主| 发表于 2017-4-4 19:10:17 | 显示全部楼层
回复  cashiba
笨办法:自己构造一个inputbox
fenhanxue 发表于 2017-4-3 21:53

谢谢!看来只能自己构造GUI了....
发表于 2017-4-4 20:24:21 | 显示全部楼层
帮助里找找看
发表于 2017-4-4 21:42:51 | 显示全部楼层
回复 6# cashiba


    _IsPressed("0D", $dll)

评分

参与人数 1金钱 +19 收起 理由
cashiba + 19

查看全部评分

 楼主| 发表于 2017-4-4 23:55:26 | 显示全部楼层
回复  cashiba
_IsPressed("0D", $dll)
kk_lee69 发表于 2017-4-4 21:42

感谢K侠....
忘了还有这个函数,看见用过,印象不深。
还以为要用到PostMessage之类的。这下记住了....
发表于 2017-4-6 11:05:34 | 显示全部楼层
这个正好我能用到,感谢
发表于 2017-4-7 18:16:50 | 显示全部楼层
学习学习了。
发表于 2017-4-7 19:19:46 | 显示全部楼层
学习学习了。
发表于 2017-4-9 10:51:35 | 显示全部楼层
发表于 2017-4-10 03:12:16 | 显示全部楼层
支持下,不错方法
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-24 20:34 , Processed in 0.084371 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表