求pfexcel求和快捷键键

您现在的位置:
Shift+&&&&
攻击/魔法/技术
魔法/技术选择
上次魔法/技术
角色状态窗口
角色属性窗口
帮会/一般聊天
安全/自由移动模式
背景音乐开关
Print Screen
使用指令时,先按回车键打开聊天输入条,键入相应指令后回车就完成了,返回信息在顶部的信息窗口显示,指令都是由&/&开始的,一旦输入&/&输入条前面会有Cmd几个字显示
打开聊天窗口
发送悄悄话
/to 角色名称 内容
回复悄悄话
shift+enter
答复最后一个耳语
确认某人是否在线
/pf 角色名称
拒绝收听耳语
! 内容&&&& /sh 内容
拒绝听喊叫声
显示/关闭角色名称
商店银行等处快速退出
诅咒石任务查询命令
需要完成诅咒石任务
500级至尊特效(翅膀)
需要等级大于500级
要求成为城主
要求等级80,250000ELK和DAK
解散帮派命令
/clan dismiss
/join 帮会名称
组建新队伍
要求等级100,200000ELK
/marry 对方名称
/divorce 名字
抵制不良游戏 拒绝盗版游戏 谨防上当受骗 适度游戏益脑 沉迷游戏伤身 合理安排时间 享受健康生活
陕西至尊网络科技有限公司As far as I've been able to find out, Windows doesn't offer an API function to tell what application has registered a global hotkey (via RegisterHotkey). I can only find out that a hotkey is registered if RegisterHotkey returns false, but not who "owns" the hotkey.
In the absence of a direct API, could there be a roundabout way? Windows maintains the handle associated with each registred hotkey - it's a little maddening that there should be no way of getting at this information.
Example of something that likely wouldn't work: send (simulate) a registered hotkey, then intercept the hotkey message Windows will send to the process that registered it. First, I don't think intercepting the message would reveal the destination window handle. Second, even if it were possible, it would be a bad thing to do, since sending hotkeys would trigger all sorts of potentially unwanted activity from various programs.
It's nothing critical, but I've seen frequent requests for such functionality, and have myself been a victim of applications that register hotkeys without even disclosing it anywhere in the UI or docs.
(Working in Delphi, and no more than an apprentice at WinAPI, please be kind.)
解决方案 Your question piqued my interest, so I've done a bit of digging and while, unfortunately I don't have a proper answer for you, I thought I'd share what I have.
I found this
written in 1998, but is compilable in Delphi 2007 with a couple of tweaks.
It's a DLL with a call to SetWindowsHookEx that passes through a callback function, which can then intercept key strokes: In this case, it's tinkering with them for fun, changing left cursor to right, etc. A simple app then calls the DLL and reports back its results based on a TTimer event. If you're interested I can post the Delphi 2007 based code.
It's well documented and commented and you potentially could use it as a basis of working out where a key press is going. If you could get the handle of the application that sent the key strokes, you could track it back that way. With that handle you'd be able to get the information you need quite easily.
Other apps have tried determining hotkeys by going through their Shortcuts since they can contain a Shortcut key, which is just another term for hotkey. However most applications don't tend to set this property so it might not return much. If you are interested in that route, Delphi has access to IShellLink COM interface which you could use to load a shortcut up from and get its hotkey:
uses ShlObj, ComObj, ShellAPI, ActiveX, CommC
procedure GetShellLinkHotK
LinkFile : WideS
SL: IShellL
PF: IPersistF
HotKey : W
HotKeyMod: B
HotKeyText :
LinkFile := 'C:\Temp\Temp.lnk';
OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, SL));
// The IShellLink implementer must also support the IPersistFile
// interface. Get an interface pointer to it.
PF := SL as IPersistF
// Load file into IPersistFile object
OleCheck(PF.Load(PWideChar(LinkFile), STGM_READ));
// Resolve the link by calling the Resolve interface function.
OleCheck(SL.Resolve(0, SLR_ANY_MATCH or SLR_NO_UI));
// Get hotkey info
OleCheck(SL.GetHotKey(HotKey));
// Extract the HotKey and Modifier properties.
HotKeyText := '';
HotKeyMod := Hi(HotKey);
if (HotKeyMod and HOTKEYF_ALT) = HOTKEYF_ALT then
HotKeyText := 'ALT+';
if (HotKeyMod and HOTKEYF_CO***OL) = HOTKEYF_CO***OL then
HotKeyText := HotKeyText + 'CTRL+';
if (HotKeyMod and HOTKEYF_SHIFT) = HOTKEYF_SHIFT then
HotKeyText := HotKeyText + 'SHIFT+';
if (HotKeyMod and HOTKEYF_EXT) = HOTKEYF_EXT then
HotKeyText := HotKeyText + 'Extended+';
HotKeyText := HotKeyText + Char(Lo(HotKey));
if (HotKeyText = '') or (HotKeyText = #0) then
HotKeyText := 'None';
ShowMessage('Shortcut Key - ' + HotKeyText);
If you've got access to , there is a
in the Borland Delphi 6 Developer's Guide by Steve Teixeira and Xavier Pacheco. My example above is a butchered version from there and .
Hope that helps!
本文地址: &
据我已经能够找出,Windows不能提供一个API函数,以告诉什么应用程序注册了全局热键(通过RegisterHotkey)。我只能找出热键注册是否RegisterHotkey返回false,但不是谁“拥有”热键。在没有直接的API,莫不是一种迂回的方式? Windows维护每个registred热键关联的句柄 - 这是一个有点让人郁闷的应该没有这方面的信息获取方式。的东西,可能是行不通的例子:发送(模拟)注册的热键,然后拦截热键消息,Windows将发送到注册它的进程。首先,我不认为拦截消息就会发现目标窗口句柄。其次,即使有可能,这将是一个坏事情,因为发送热键会引发各种潜在的有害活动的各种方案。 这没什么重要的,但我已经看到了这样的功能频繁的请求,并得到自己的那甚至没有任何地方披露它在用户界面或文档注册热键的应用程序的受害者。 (在Delphi的工作,并没有比WinAPI的一个AP prentice更多,请善待。)解决方案 您的问题激起了我的兴趣,所以我做了一些挖掘和的同时,不幸的是我没有给你一个合适的回答,我想我'D份额我有什么。我发现这个例如写在1998年,但是用几个调整在2007年的Delphi编译。 这是通过调用穿过一个回调函数,然后可以截取击键一个DLL到和SetWindowsHookEx :在这种情况下,与他们摆弄的乐趣,改变左光标移到权等简单的应用程序,然后调用该DLL和报告基础上的TTimer事件支持其结果。如果你有兴趣,我可以张贴基于2007年德尔福code。这是有案可稽和评论,你可能可以使用它作为工作在哪里的关键preSS会的基础。如果你能得到发送击键应用程序的手柄,你可以跟踪它回到那条路上。与手柄你能得到你需要很容易的信息。其他应用试图通过其快捷方式去确定热键,因为它们可以包含一个快捷键,这是热键的另一种说法。然而,大多数应用程序不倾向于设置该属性,因此它可能没有太大的回报。如果你有兴趣在这条路线,德尔福访问的IShellLink
COM接口,你可以用它来从加载的快捷方式,并得到其热键: 使用ShlObj,ComObj,ShellAPI的,ActiveX等CommC程序GetShellLinkHotKVAR
LinkFile:WideString的;
SL:的IShellL
PF:IPersistF
HotKeyMod:字节;
HotKeyText:字符串;开始
LinkFile:='C:\\ TEMP \\ Temp.lnk';
OleCheck(CoCreateInstance的(CLSID_ShellLink,零,CLSCTX_INPROC_SERVER,的IShellLink,SL));
//该实施者的IShellLink还必须支持IPersistFile
//接口。获取一个接口指针。
PF:= SL作为IPersistF
//加载文件到IPersistFile对象
OleCheck(PF.Load(PWideChar(LinkFile),STGM_READ));
//通过调用接口解析函数解析的链接。
OleCheck(SL.Resolve(0,SLR_ANY_MATCH或SLR_NO_UI));
//获取热键信息
OleCheck(SL.GetHotKey(热键));
//提取热键和修改属性。
HotKeyText:='';
HotKeyMod:=喜(热键);
如果(HotKeyMod和HOTKEYF_ALT)= HOTKEYF_ALT然后
HotKeyText:='ALT +';
如果(HotKeyMod和HOTKEYF_CO***OL)= HOTKEYF_CO***OL然后
HotKeyText:= HotKeyText +'Ctrl +';
如果(HotKeyMod和HOTKEYF_SHIFT)= HOTKEYF_SHIFT然后
HotKeyText:= HotKeyText +“Shift +';
如果(HotKeyMod和HOTKEYF_EXT)= HOTKEYF_EXT然后
HotKeyText:= HotKeyText +“扩展+';
HotKeyText:= HotKeyText + CHAR(罗(热键));
如果(HotKeyText ='')或(HotKeyText = 0#),则
HotKeyText:=“无”;
ShowMessage('快捷键 - “+ HotKeyText);结束; 如果你有访问,有一个的通过史蒂夫?特谢拉和Xavier帕切科Borland的Delphi 6开发者指南中。我上面的例子是宰割的版本,从那里。希望帮助!
本文地址: &
扫一扫关注官方微信

参考资料

 

随机推荐