HotKeySetk 中的函数怎么样才能带上参数呀
本帖最后由 fy1126 于 2011-1-12 14:30 编辑HotKeySet(Call("swap_rejian", $de[$i]), "ceshi")
我想定义一个动态热键。同时也动态调用函数(有参数就行)
补充:其它就是想让"ceshi"部分可以达到接受变量或函数的效果 帮助中写
=====================================
要调用一个函数 不能 给函数加上参数. 它将会被忽略. 提供点思路:
把代参数的UDF再定义为新的多个 UDF(因为UDF可以套用UDF)
然后再使用HotKeySet 分别调用不同的UDF 对不起哟,我忘了这是一个循环定义热键的程序
for $i= 1 to 30
hotkeyset(call"swap_rejian",$de[$i],"ceshi")
next
本来这里的"ceshi"应是$de[$i][$i]的,可是这样的话我建好多只是名字不一样,内容都一样的函数。所以我想换成带参数的形式。请高手帮助哟。谢谢了 HOTKEYSET函数本身不支持参数,所以你得想其他办法解决,譬如设置一个全局变量(数组),让被调用函数读取变化的这个变量作为参数使用 本帖最后由 fy1126 于 2009-11-17 22:19 编辑
回复 5# llztt
我试过了,可是达不到我的要求,因为我这个参数是第一次是读取ini文件里的第一行,第二次是读取第二行。$i次要读取$i行呀,至少要传过去读第几行的这个参数吧
热键是ini文件的关键字,函数的参数是相对应关键字的值
Func setrejian()
For $i = 1 To $de_rj
HotKeySet(Call("swap_rejian", $de_rj[$i]), "cs" & $i)
Next
EndFunc ;==>setrejian
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Func cs1()
Call("jn_aj", $de_rj)
EndFunc ;==>cs1
Func cs2()
Call("jn_aj", $de_rj)
EndFunc
Func cs3()
Call("jn_aj", $de_rj)
EndFunc
Func cs4()
Call("jn_aj", $de_rj)
EndFunc
Func cs5()
Call("jn_aj", $de_rj)
EndFunc
Func cs6()
Call("jn_aj", $de_rj)
EndFunc #include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 633, 447, 193, 125)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $argArray
Local $i
$i = 1
$argArray[$i] = $i
HotKeySet(Call("swap_rejian", $i), "cs" & $i)
$i = 2
$argArray[$i] = $i
HotKeySet(Call("swap_rejian",$i), "cs" & $i)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func swap_rejian($i)
Return "{F" & $i & "}"
EndFunc
Func cs1()
Call("jn_aj", $argArray)
EndFunc
Func cs2()
Call("jn_aj", $argArray)
EndFunc
Func jn_aj($arg)
MsgBox(0, "", $arg)
EndFunc
3楼说得不错阿 本帖最后由 ZEROBOYS 于 2009-12-8 16:39 编辑
以下為之前au3論壇,別人引給我的資料,算是另一種熱鍵運用法,可帶函數...
使用評價為:確實不錯用,只是熱鍵響應有點遲鈍,應該有改良空間
#include <Misc.au3>
$dll = DllOpen("user32.dll")
While 1
Sleep ( 250 )
If _IsPressed("12", $dll) And _IsPressed("31", $dll) Then _function(1) ;Alt+1
If _IsPressed("12", $dll) And _IsPressed("32", $dll) Then _function(2) ;Alt+2
If _IsPressed("12", $dll) And _IsPressed("33", $dll) Then _function(3) ;Alt+3
If _IsPressed("23", $dll) Then ExitLoop ;End
WEnd
DllClose($dll)
Func _function($X)
If $X =1 Then
ToolTip("測試1",0,0)
Sleep(2000)
ElseIf $X =2 Then
ToolTip("測試2",0,0)
Sleep(2000)
ElseIf $X =3 Then
ToolTip("測試3",0,0)
Sleep(2000)
EndIf
EndFunc HotKeySet可以带参数的话, 值是从哪里传入的呢......
页:
[1]