我正在寻找一种方法,以便使用我的程序的用户可以自己更改热键,使其不绑定到D,F12,K,F,A等。我有点希望ppl可以通过文本框进行更改或通过设置文件。现在已经被困了几个星期了,我只是找不到实现它的方法,这是我第一个正在开发的程序。
public void gHook_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.D:
// stuff
Salvagebtn.PerformClick();
break;
case Keys.F12:
// stuff
pausebtn.PerformClick();
break;
case Keys.K:
//stuff
Geardropbtn.PerformClick();
break;
case Keys.F:
//stuff
Gamblebtn.PerformClick();
break;
case Keys.A:
//stuff
LeftClickSpambtn.PerformClick();
break;
case Keys.H:
// stuff
openGRbtn.PerformClick();
break;
case Keys.B:
//stuff
gemupbtn.PerformClick();
break;
}
}
答案 0 :(得分:3)
在广告期间,我花了几分钟。所以,我写了以下内容:
编辑:用全局键盘处理程序包装的代码。您还需要添加对PresentationCore和WindowsBase的引用...
names = []
bdays = []
f = open("DOB.txt", "r")
data = f.readlines()
for line in data:
parts = line.split()
names.append(parts[:2]) # store the name
bdays.append(parts[2:]) # store the bday
f.close()
print("Name")
for i, name in enumerate(names, start=1):
print("{}. {}".format(i, " ".join(name)))
print("Bday")
for i, bday in enumerate(bdays, start=1):
print("{}. {}".format(i, " ".join(bday)))
向您介绍:
尝试所需的快捷方式:
仅举一个例子,说明有很多方法可以做事情。
易于将它们写到文件或其他内容中。如果要...我将把AddHotKey Action参数更改为包含函数名称的字符串,然后使用其他方法可以让它调用该函数。
不过,实际上,我将在下面讨论的那本书中加入一个词典。
答案 1 :(得分:1)
您可以采用多种方法来处理此问题。就个人而言,我选择使用Dictionary
,将键码作为键,并将委托/操作作为值。然后在按键上,您只需在与该按键代码关联的字典中调用该函数即可。类似于:
Dictionary<KeyCode, System.Action> keyDict = new Dictionary<KeyCode, System.Action>();
// populate it however you wish. Whether it's user entry or from a file or something.
keyDict.Add(KeyCode.D, SomeFunction);
如果要在字典中更改委托:
keyDict[KeyCode.D] = SomeOtherFunction;
然后稍后在事件处理程序中:
public void gHook_KeyDown(object sender, KeyEventArgs e)
{
keyDict[e.KeyCode].Invoke();
}
public void SomeFunction()
{
Console.WriteLine("called some function");
}
(此问题可能需要一些详细信息:Create dictionary with dynamic keys in C#)