说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

源码问题:如何在其他程序中唤出自己的程序窗体来。关键字:外挂,CreateParented,hook

编辑:说三道四文库 发布时间:2018-07-16 03:45
HTML文档下载 WORD文档下载 PDF文档下载
我看了《一个全局键盘钩子》的例子后,想做一个实现热键呼出功能的程序(类似于游戏外挂的热键呼出功能),当用户按下指定的热键,判断是否是指定的窗体,以这个窗体为父窗体显示自己的程序窗体. 

我下载了一个delphi源代码,发现已经有实现这个功能了.代码如下: 

//用户按下小键盘的*键 
if ((lParam and $80000000) = 0) and (wParam = $6A) then 
begin 
hwnd := getforegroundwindow; 
FrmNetData := TFrmNetData.CreateParented(hwnd); 
GetWindowRect(hwnd, AppRect); 
FrmNetData.Caption := title + '框架'; 
FrmNetData.Show; 
...... 

可我尝试将之修改为下面的bcb源代码时,新窗体不但没有产生,原来的窗体反而也给关掉了,代码如下. 
  HWND hwnd; 
  hwnd = GetForegroundWindow(); 
   FrmNetData = (TFrmNetData*)TWinControl::CreateParentedControl(__classid(TFrmNetData), hwnd); 
 //换成下面的也不行
 //FrmNetData = new TFrmNetData(NULL);
 FrmNetData->Show();
 
 
请问是什么原因,大虾帮忙啊!抓头ing...。
好像GetWindowRect(hwnd, AppRect); 这一句你没有翻译下来哦。
加上去如何。。
http://community.csdn.net/Expert/topic/3069/3069474.xml?temp=.1931726已经解决。

恭候nowcan,jishiping大侠到此拿分。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘