fy1126 发表于 2009-11-3 18:16:56

HotKeySetk 中的函数怎么样才能带上参数呀

本帖最后由 fy1126 于 2011-1-12 14:30 编辑

HotKeySet(Call("swap_rejian", $de[$i]), "ceshi")
我想定义一个动态热键。同时也动态调用函数(有参数就行)

补充:其它就是想让"ceshi"部分可以达到接受变量或函数的效果

sxd 发表于 2009-11-4 01:23:01

帮助中写
=====================================
要调用一个函数 不能 给函数加上参数. 它将会被忽略.

maxkingmax 发表于 2009-11-4 06:28:43

提供点思路:
把代参数的UDF再定义为新的多个 UDF(因为UDF可以套用UDF)
然后再使用HotKeySet 分别调用不同的UDF

fy1126 发表于 2009-11-15 09:07:20

对不起哟,我忘了这是一个循环定义热键的程序
for $i= 1 to 30
hotkeyset(call"swap_rejian",$de[$i],"ceshi")
next
本来这里的"ceshi"应是$de[$i][$i]的,可是这样的话我建好多只是名字不一样,内容都一样的函数。所以我想换成带参数的形式。请高手帮助哟。谢谢了

llztt 发表于 2009-11-15 09:20:59

HOTKEYSET函数本身不支持参数,所以你得想其他办法解决,譬如设置一个全局变量(数组),让被调用函数读取变化的这个变量作为参数使用

fy1126 发表于 2009-11-17 22:11:49

本帖最后由 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

kuse2001 发表于 2009-12-1 20:34:21

#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

xz00311 发表于 2009-12-7 16:00:43

3楼说得不错阿

ZEROBOYS 发表于 2009-12-8 16:38:16

本帖最后由 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

gapkiller 发表于 2009-12-8 19:06:34

HotKeySet可以带参数的话, 值是从哪里传入的呢......
页: [1]
查看完整版本: HotKeySetk 中的函数怎么样才能带上参数呀