如何调用一个EXE/DLL, 并将其嵌入到自身窗体中

碧树西风 2013-03-03 05:09:33
我用类似的代码, 倒时实现了嵌入, 但是原来的EXE收不到焦点, 不能操作了.
哪位朋友请指点下?

测试环境: Win7 + D7
procedure TForm1.btn_ExecClick(Sender: TObject);
begin
WinExec('MyEXE.exe',SW_SHOW);
end;

procedure TForm1.btn_SetParentClick(Sender: TObject);
var
iHD : THandle;
begin
iHD := FindWindow(nil,'Form_ExeTest');
if iHD>0 then begin
Windows.SetParent(iHD,Handle);
end;
end;
...全文
2402 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
seagull327 2015-08-25
  • 打赏
  • 举报
回复
2年找到问题根源
碧树西风 2015-08-22
  • 打赏
  • 举报
回复
后面发现是窗体的缩放问题, 设置为100%就可以了
碧树西风 2013-07-22
  • 打赏
  • 举报
回复
又发现一个新问题, 采用ParentWindow:=容器窗体句柄后,不能收到WM_COPYDATA消息了,汗!
lyhoo163 2013-07-01
  • 打赏
  • 举报
回复
针对WIN7的的滞后情况,办法是有的。 1、提高EXE的启动执行速度。将装载数据等代码,放在show之后执行。 2、在FindWindow(nil,'Form_ExeTest')代码之前加入sleep(600);
lyhoo163 2013-07-01
  • 打赏
  • 举报
回复
编程代码在操作系统执行时,如涉及到硬件读写或创建模块(控件)时,常常会出现滞后现象。win7比XP,更加严重,上述情况,就是如此。刚刚我试过了,在创建模块代码后,加上sleep,就能解决问题。试试.......
碧树西风 2013-06-30
  • 打赏
  • 举报
回复
用上面说的设置父窗体句柄就可以了!
hhhfff2010 2013-06-26
  • 打赏
  • 举报
回复
路过,WIN 7,确实有问题,期待高手出现。。。
碧树西风 2013-06-25
  • 打赏
  • 举报
回复
问题还要自己解决! 在子窗体中设置ParentWindow(好像是这个)就可以了
Blessed_Chuan 2013-06-20
  • 打赏
  • 举报
回复
win7下没试过 留个脚印 备用
碧树西风 2013-05-07
  • 打赏
  • 举报
回复
自己再顶一下!!!期待高手~
碧树西风 2013-04-29
  • 打赏
  • 举报
回复
哪位TX给个解决办法呀?
多壮志 2013-04-28
  • 打赏
  • 举报
回复
的确和win7的aero有点关系。
碧树西风 2013-04-17
  • 打赏
  • 举报
回复
我要的是直接调用EXE, 前两天测试发现, 和Win7的AERO效果有关系,关闭了就可以,好像是什么层次的问题,有没有朋友帮助看看
碧树西风 2013-04-06
  • 打赏
  • 举报
回复
顺便谢谢楼上的各位朋友!
碧树西风 2013-04-06
  • 打赏
  • 举报
回复
有没有Win7下的? 感觉是不是操作系统的问题?
  • 打赏
  • 举报
回复
嵌入语句前面写的差不多了,注意嵌入后,因为子窗体的坐标会转移到主窗体中,你要检查看不到是不是超出显示界限了。
woniu008 2013-03-05
  • 打赏
  • 举报
回复

不知道是不是你要的效果,直接调用了DLL的窗体了。

var
DLLHandle: THandle;
DLLSub: InvokeDLLForm;

begin
DLLHandle := LoadLibrary('prjDLL.dll');
if DLLHandle <> 0 then
begin
@DLLSub := GetProcAddress(DLLHandle, 'CreateDLLForm');
if Assigned(DLLSub) then
begin
DLLForm := DLLSub(Application, Screen);
end;
end;
end;
simonhehe 2013-03-04
  • 打赏
  • 举报
回复
Application.Handle := iHD;
碧树西风 2013-03-04
  • 打赏
  • 举报
回复
后来采用一个办法, 在子窗体中setparent, 而不是在主窗体中调用,基本解决!
sololie 2013-03-04
  • 打赏
  • 举报
回复
用ole
加载更多回复(5)

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧