很菜,谢谢大家来帮帮我!(50分)

  • 主题发起人 阿登学编程
  • 开始时间

阿登学编程

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在玩一个玩络游戏红月.游戏在运行时不能切回桌面.好象是热键被屏蔽了.
千年也是这样,不过有个外挂(卜卜星)可以使它切出来.请大虾指点一下是如何实现的.
谢谢
 

晶晶

Unregistered / Unconfirmed
GUEST, unregistred user!
你也可以做出来啊,只要用个API函数就可以了,在开启游戏前启动,装个定时器,过一段
时间就检测是否有游戏启动,有的话就用API解除屏蔽,这样就可以用了快捷键回到桌面了
,具体的用法你自己可以做一个,很简单的。
注:systemparameterinfo(uiaction:unit;uiparam:unit;pvparam:pointer;fwini:unit):BOOL;stdcall;
在uiaction动作中设置为你要的动作就可以了!!!
 
Z

zswenyun

Unregistered / Unconfirmed
GUEST, unregistred user!
不知道具体红月与千年是怎样屏蔽掉热键的,不过你可以用API函数:
BOOL RegisterHotKey(
HWND hWnd, //响应该热键的窗口句柄
Int id, //该热键的唯一标识
UINT fsModifiers, //该热键的辅助按键
UINT vk //该热键的键值
);
重新注册热键试试看
 
Z

zswenyun

Unregistered / Unconfirmed
GUEST, unregistred user!
systemparameterinfo好象2000下无效的把?
 
Z

zswenyun

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject;
var Action: TCloseAction);
procedure HotKeyDown(var Msg: Tmessage);
message WM_HOTKEY;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
HotKeyId:Integer;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
HotKeyId:=GlobalAddAtom('MyHotKey')-$C000;
//注: HotKeyId的合法取之范围是0x0000到0xBFFF之间, GlobalAddAtom函数得到的值
//在0xC000到0xFFFF之间,所以减掉0xC000来满足调用要求。
RegisterHotKey(Handle, hotkeyid, MOD_ALT, VK_F8);
end;
procedure TForm1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
UnRegisterHotKey(handle, HotKeyId);
end;
procedure TForm1.HotKeyDown(var Msg: Tmessage);
begin
if (Msg.LparamLo = MOD_ALT) AND (Msg.LParamHi = VK_F8) then
// 假设热键为ALT+F8
begin
showmessage('aaa');
end;
end;
end.
一个列程
 

阿登学编程

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 

Similar threads

I
回复
0
查看
515
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
613
import
I
顶部