这个问题有人问过,但是回答的都是说如何实现快捷键的问题,我这里问的不是怎么样实现快捷键,看下面的要求:
1、我们要编写一个程序,启动后,假设快捷键和金山一样是 * ,当按下*的时候弹出窗口。
2、弹出的窗口根据按*的窗口的不同而不同,大家都用过游戏修改类的工具,在游戏A里呼叫出来的窗体显然和在游戏B中呼叫的不一样,这2个窗体是分别对应2个不同的游戏的.而且呼叫出窗口搜索数值后可以返回到游戏中,这个呼叫出来的窗口会隐藏,在下次呼叫出的时候还可以继续的搜索游戏数据,
3、我要问的就是怎么样实现上面的功能,不同游戏中呼叫出不同的窗体,里面的数据都是和呼叫的窗体对应的,而且可以随时隐藏掉,直到主程序关闭才消失,我写的应该很明白吧,呵呵,高手来解释下啊
1、我们要编写一个程序,启动后,假设快捷键和金山一样是 * ,当按下*的时候弹出窗口。
2、弹出的窗口根据按*的窗口的不同而不同,大家都用过游戏修改类的工具,在游戏A里呼叫出来的窗体显然和在游戏B中呼叫的不一样,这2个窗体是分别对应2个不同的游戏的.而且呼叫出窗口搜索数值后可以返回到游戏中,这个呼叫出来的窗口会隐藏,在下次呼叫出的时候还可以继续的搜索游戏数据,
3、我要问的就是怎么样实现上面的功能,不同游戏中呼叫出不同的窗体,里面的数据都是和呼叫的窗体对应的,而且可以随时隐藏掉,直到主程序关闭才消失,我写的应该很明白吧,呵呵,高手来解释下啊
var
m_Handle: THandle;
begin
if Key = '*' then
begin
if 窗体已经显示 then 关闭窗体,DLL注入结束,退出。 m_Handle:= GetForegroundWindow; //我想你想知道的就是这个API了,获取当前的最前面的窗体
//-----------------------------------//
// 接下来,Dll注入,注入的窗体句柄已经获得了
// |
// 这样,可以根据不同的需求创建不同的窗体 Form1:= TForm1.Create(m_Handle);
// |
// 弹出模式窗体 Form1.ShowModal;
// |
// 读取数据显示 //弹出和读取数据可以互换位置
// |
//--------------------------------------//
end;
....
end;
procedure TForm1.BitBtn13Click(Sender: TObject);
begin
hotkeyid:=GlobalAddAtom( 'Hotkey ');// 'Hotkey '名字可以随便取
RegisterHotKey(form1.Handle,hotkeyid,0,VK_F1);
end; procedure TForm1.BitBtn14Click(Sender: TObject);
begin
unregisterhotkey(handle,hotkeyid);
DeleteAtom(hotkeyid);
end; procedure WMHotKey(var Msg: TWMHotKey); message wm_hotkey;
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
if msg.HotKey = hotkeyid then
begin
Self.Visible:= not Self.Visible;
end;
end; 注册热键,按F1进行显示与隐藏.