用shellexecute运行其它程序为何无法隐藏窗口,不要告诉我用sw_hide,无效!(50分)

  • 主题发起人 主题发起人 batconv
  • 开始时间 开始时间
B

batconv

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi程序中想运行下面一条代码,希望其静悄悄的运行,不会打扰用户。
s:='http://www.XXXX.com/Catalog2/vupdate.asp?vinfo=3&action=add';
我试过winexec、shellexecute和CreateProcess三个函数,采用下面的格式
shellexecute(handle,'open',pchar('http://www.XXXX.com/Catalog2/vupdate.asp?vinfo=3.5'),nil,nil,sw_hide);注意我用的运行方式是sw_hide,但是讨厌的ie窗口就是隐藏不掉,每次都顽固的出来,最后我采用了折衷的方法,采用以下代码:
s:='http://www.XXXX.com/Catalog2/vupdate.asp?vinfo=3&action=add';
ShellExecute(Handle,'',PChar(s),nil,nil,sw_hide);
iehandle:=findwindow('ieframe',nil);
postmessage(iehandle,WM_close,0,0);
这样解决了ie窗口关闭的问题,但是关闭前它还是要闪一下,哪位大侠有更好的方法,请不吝赐教,谢谢,分不够可另加!!
 
怎么没有人回答呀,急用呀,自己顶一下!!
 
ShellExecute(0, 'open', 'IEXPLORE.EXE', pchar(s), nil, sw_hide);
执行完后找到这个进程结束它。

应该可以隐藏,你的写法好象是先找到和你参数相关的程序运行后再传递你设置的参数
给程序。
应该先就指定好要运行的程序和参数,让程序以开始就以设定的参数运行就不会出现IE
窗口。(我是这样认为的,不晓得对不对)

不过这样关闭就麻烦了点!
 
楼主好像只是想把字串发到HTTP服务器
是吧
那样用IE有点不值啊
不好控制
在程序内部嵌入一个控件就行了
如果非要用IE可以试试flanagan的方法
不过可有会有闪烁
最后还一招绝的
不会闪
使用CreateProcess
然后将进程放到新的桌面中执行
等它执行完毕后关闭进程
删除新建的桌面
 
程序中用TWebBrowser就可以了
 
to Mike1234567890,
“楼主好像只是想把字串发到HTTP服务器是吧,那样用IE有点不值啊,不好控制,
在程序内部嵌入一个控件就行了”
我的如大侠所说只是想发个字符串,但我对http不太精通,可否指点一二,应当嵌入一个什么控件才能起到同样的效果?请尽量详细并给出代码,谢谢!!
 
使用Indy组件,可以满足你的需要
 
怪事,我也碰到这样的问题了,用户打开了一个程序,我用FINDWINDOW找到了线程,但是奇怪:发Sendmessage(Tmpid,Wm_Syscommand,SC_MINIMIZE,0);有效(最小化)
发Sendmessage(Tmpid,Wm_Syscommand,SW_HIDE,0);就无效了.
不知是否和你的问题一样,请问 batconv, 有好的方法吗.能否赐教,
 
哥们,你的问题还没搞定啊,不调用ie,可以用delphi自带的idhttp控件啊.
从 indy clients 面板拖个idhttp,然后:
idhttp1.Get('http://www.finer2.com/catalog2/vupdate.asp?vinfo=3&action=add')
 

Similar threads

I
回复
0
查看
693
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部