当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 这是我在一个论坛的讨论稿,我想这些情况在实践java/j2me/code/ target=_blank>程序设计过程中会常碰到,所以就将这些讨论资料写了下来: 作者:e梦缘 ? 请问用什么方法可以运行一个外部的EXE并返回它的Handle?WinExec 返回不是该EXE的HandleS...
 

 

 ·使用dephi组件的生存期管理    »显示摘要«
    摘要: ?众所周知,创建型设计模式中的都会创建对象。可是对象在哪儿释放呢?当然,对于抽象工厂和工厂方法以及原型模式中,可以保存一个引用然后在需要的地方把它释放掉。可singleton模式中却没有这样的引用,或是不能确定它是否创建了。此时,dephi的组件的生存期管理机制就非常有用了,你只需要从tcompenent继承,并在构造函数中把自己的owner设为另一个被管理的组件(一般来说是你的form,fra......
 ·程序关联实现    »显示摘要«
    摘要: 程序中readme是个.sos文件,点吉它实现如下: 基本实现如下: unit unit1; interface useswindows, messages, sysutils, variants, classes, graphics, controls, forms,dialogs,registry,shlobj, stdctrls, extctrls; typetform1 ......


如何获取自己在程序中运行的外部EXE的Handle?

这是我在一个论坛的讨论稿,我想这些情况在实践java/j2me/code/ target=_blank>程序设计过程中会常碰到,所以就将这些讨论资料写了下来:

? 【程序编程相关:ado异步查询的解决方案

作者:e梦缘 【推荐阅读:Delphi控制Excel

【扩展信息:DBGrid使用全书(四)

请问用什么方法可以运行一个外部的exe并返回它的handle?

winexec 返回不是该exe的handle

shellexecute, shellexecuteex 也不是

createprocess 返回的是 process handle

到底要如何才可以返回与 getwindow 所返回的一样的 handle?

re:

可以用findwindow()函数,它能够解决这个问题,它有两个参数:lpclassname:程序的类名;lpwindowname:程序窗体的标题.

例如:

procedure tform1.button1click(sender: tobject);

begin

shellexecute(handle,open,notepad.exe,nil,nil,sw_shownormal);

end;

procedure tform1.button2click(sender: tobject);

var

exehandle:thandle;

begin

//获得句柄

exehandle:=findwindow(notepad,nil);//);//返回句柄

//关闭程序

if exehandle<>0 then

sendmessage(exehandle,wm_close,0,0)

else

application.messagebox(没有打开"记事本"程序!,提示,

mb_iconinformation+mb_ok);

end;

?

findwindow() 方法不是我想要的,因为这里的lpwindowname 具有不确定性,没有办法准确地找到.

我希望能在执行这支外部程序里就可以得到它的 handle.

比如有没有办法,通过process handle得到它有

application handle 以及 mainform handle

re:

您可以通过lpclassname:程序的类名来准确地找到.

exehandle:=findwindow(notepad,nil);//返回句柄


...   下一页
 ·深入理解delphi的消息机制    »显示摘要«
    摘要:永远记住,无论你是用 sdk 还是借用 vcl 来创建窗口,都要遵循 windows 的游戏规则,即先注册窗口类,然后再创建窗口实例,在消息循环中写实现代码。你还要知道 windows 已经为了我们预注册了多个窗口类,例如“edit”、“combobox”,这时候我们要做的就是直接创建这些窗口,无需注册窗口类了;在 delphi 中这一切更简单了,vcl 全部为你做好了,你只需简单地在设计窗体上拖......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE