如何实现一钮复用?[已解决]
本帖最后由 cashiba 于 2019-8-31 08:56 编辑#include <GUIConstantsEx.au3>
Global $hGUI,$idStart
Example()
Func Example()
$hGUI = GUICreate("TEST", 300, 200)
$idStart = GUICtrlCreateButton("记事本", 120, 170, 85, 25)
Local $idClose = GUICtrlCreateButton("关 闭", 210, 170, 85, 25)
GUISetState(@SW_SHOW, $hGUI)
Local $iPID = 0
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $idClose
ExitLoop
Case $idStart
_ButtonToggle()
EndSwitch
WEnd
GUIDelete($hGUI)
If $iPID Then ProcessClose($iPID)
EndFunc ;==>Example
Func _ButtonToggle()
While 1
Local $a = GUIGetCursorInfo($hGui)
If $a = $idStart Then
if $a = 1 then
ConsoleWrite("鼠标右键按下" & @CRLF)
If GUICtrlRead($idStart) = "记事本" Then
GUICtrlSetData($idStart, "计算器")
ElseIf GUICtrlSetData($idStart, "计算器") Then
GUICtrlSetData($idStart, "记事本")
EndIf
ElseIf $a = 1 then
ConsoleWrite("鼠标左键按下" & @CRLF)
If GUICtrlRead($idStart) = "记事本" Then
$iPID = Run("notepad.exe", "", @SW_SHOWMAXIMIZED)
ElseIf GUICtrlRead($idStart) = "计算器" Then
$iPID = Run("calc.exe", "", @SW_SHOWMAXIMIZED)
EndIf
EndIf
Else
ExitLoop
EndIf
sleep(100)
WEnd
EndFunc ;==>_ButtonToggle
如上,想实现一个按钮左右开弓,一键多能:右击切换计算器和记事本,左击打开
按上述写法容易卡壳
想用按钮消息来实现,发现按钮的消息里没有右击
用鼠标事件绑定按钮,不是太熟悉,似乎也不好用
请大神们指点一下....
预谢!
可以开任意个,主界面关闭全退
Global $hGUI, $idStart
Global $aName = ['记事本', '计算器']
Global $aExe = ['notepad.exe', 'calc.exe']
Global $iIx = 0
Global $aPid = , $iSL = 0
Example()
Func Example()
$hGUI = GUICreate('TEST', 300, 200)
$idStart = GUICtrlCreateButton($aName[$iIx], 120, 170, 85, 25)
Local $idClose = GUICtrlCreateButton('关 闭', 210, 170, 85, 25)
GUISetState()
While 1
Switch GUIGetMsg()
Case -3, $idClose
ExitLoop
Case $idStart
_ButtonToggle()
Case -9
_Right()
EndSwitch
WEnd
GUIDelete($hGUI)
If $iSL Then
For $ii = 1 To $iSL
ProcessClose($aPid[$ii])
Next
EndIf
EndFunc ;==>Example
Func _Right()
Local $a0 = GUIGetCursorInfo($hGUI)
Local $iId = $a0
While $a0
$a0 = GUIGetCursorInfo($hGUI)
WEnd
If $a0 = $iId Then
$iIx = Number($iIx = 0)
GUICtrlSetData($idStart, $aName[$iIx])
EndIf
EndFunc ;==>_Right
Func _ButtonToggle()
$iSL += 1
$aPid = $iSL
$aPid[$iSL] = Run($aExe[$iIx], '', @SW_SHOWMAXIMIZED)
EndFunc ;==>_ButtonToggle
不错支持一下 A大思维敏捷,精通AU3,一个-9就解决问题了,佩服佩服! cashiba 发表于 2019-8-31 08:52
A大思维敏捷,精通AU3,一个-9就解决问题了,佩服佩服!
现在是界面任意处点击右键都可以切换,如果限制到按钮可以把35行改为以下
If $a0 = $iId And $iId = $idStart Then 又学了一招,A版威武。 afan 发表于 2019-8-31 09:18
现在是界面任意处点击右键都可以切换,如果限制到按钮可以把35行改为以下
A大心细阿,这样的小问题隔天后还记得修正....
{:1_206:} afan 发表于 2019-8-31 01:48
可以开任意个,主界面关闭全退
不错支持一下 afan 发表于 2019-8-31 01:48
可以开任意个,主界面关闭全退
赚钱学习来了
页:
[1]