简单!关于调用外部程序的问题。 (100分)

  • 主题发起人 主题发起人 菜妹妹
  • 开始时间 开始时间

菜妹妹

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位高手一个简单问题,我在自己的程序中调用外部程序时,我使用了ShellExecute(),
我要关闭他时,向他发消息,SendMessage(ExeHandle,WM_Close,0,0);
其中ExeHandle这个句柄,我如何能得知呢?如果用FindWindow()这个函数,
那lpClassName,lpWindowName,这两个参数的值又是如何获得的呢?请指教!
另外,我还想问一下,如果我想在程序中
用shellExecute()来执行打开浏览器对指定网址的网页进行浏览呢?
 
var
hWndClose:HWnd;
begin
hWndClose := FindWindow(nil, '计算器');
if hWndClose <> 0 then
SendMessage(hWndClose, WM_CLOSE, 0, 0);
ShellExecute(Self.Handle, 'Open', PChar('http://www.sina.com.cn'), '', '', 1);
 
用FindWindow()是查找你要找的窗口啊,那么lpClassName,lpWindowName分别就是指窗口
的类名和窗口名,这两个参数有一个就可以查找到窗口。
比如你要找名字为"五笔",你可以handle:=FindWindow(nil,'五笔');
shellExecute()来执行打开浏览器对指定网址的网页进行浏览:
shellExecute(handle,'open','http://你要打开的网址',nil,nil,SW_Normal)。
你也可以用winexec()函数,通过路径来打开相应的程序的!
 
查找标题还好,但在不知道标题或标题为空或标题可变的情况下只能查找类名了!
你可以写个程序得到类名,我写过一个,不知道放那去了,思路如下
建一个窗体,使它在最上
用一个定时器(鼠标钩子太麻烦,还是用这个算了)
用API函数
取得鼠标位置
取得该位置的窗口句柄
取得窗口的父窗口的句柄
取得父窗口的类名(显示在窗口的EDIT上)
........
取得该句柄的类名(显示在窗口的EDIT上)
这样就能得到类名了,不过很多!
 
多人接受答案了。
 
后退
顶部