一个怪问题(100分)

  • 主题发起人 主题发起人 fuliang
  • 开始时间 开始时间
F

fuliang

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序如下:
uses NMHttp,windows;

procedure TNMThread.execute;
begin
TNMHttp.create(nil);
repeat
sleep(200);
until false;
end;

在主程序的OnCreate方法中启动该线程。

这段程序运行时,本身是没有问题的,
但是:
当我运行IE4.0,修改(Internet 选项/连接/通过代理服务器)的设置时,
IE失去了响应,把我的程序关闭后IE就好了。

如果去掉TNMHttp.create(nil); 一句就好了。
另外,如果用WaitMessage 代替sleep(200) 也会好。

将sleep 换成 TEvent 的 WaitFor 也会出现这个问题。
谁知道这是咋回事?
谁有其他的HTTP控件没这个问题的,给我一个也行。
(OCX不要,有Proxy和cookies功能)
 
WaitMessage是用来响应其他程序的动作,不至于在线程疯狂使用资源时使其它程序
“死”在那里!具体我不清楚,废话 -)
 
; 我发现,TNMHttp在线程中使用时有一些问题,
对某些发往线程的消息,就没有了.
谁还有其他好用的Http控件?
 
可以试一下F.Piette的控件组:
http://www.rtfm.be/fpiette/indexuk.htm
 
我最后还是觉得NMHttp 不爽,于是自己写了一个,很小的控件.
这是一个完全阻塞的HTTP,没有消息处理,因此必须在线程中使用,
但是可以解决上面的问题.并且.exe 小了 30k.

当然功能不全,不支持proxy 和 cookie 只有以后再完善.

TSHttp = class
private
FSocket : integer;
FUrl :string;
FIPAddress:integer;
FProto,FHost,FPort,FPath:string;
FHeader :TStringList;
FOnPacketRecved :TNotifyEvent;

procedure SendIt(s:string);
procedure ReadToBody;
procedure SendCommand(s:string);
procedure CloseSocket;
procedure Connect;
procedure SaveToFile(s:string);
public
FileName:string;
Body:string;
ReplyNumber:integer;
procedure Cancel;
procedure Get(AURL:string);
constructor create;
property OnPacketRecved:TNotifyEvent read FOnPacketRecved write FOnPacketRecved;
end;

procedure CancelAllSocket;
 
一个IE40 for Delphi4 的控件,拥有IE的全部功能(包括指向对象的快捷菜单等).我已给你Send去(WebBroIE.dpc).
安装在ActiveX页面,如果你觉得还可以或者需要源代码或范例,另行通知我.
 
能否给我一个?如果需要先装IE那算了
 
To CJ:
该控件引出自Type Library /Windows/System/Shdocvw.dll,在98中,你想不要它倒也不易。我这就给你发一个,不妨试试看。(Code & Demo)
 
Terrible it's for d4!
 
Chinese English:
Had nonconforming for your qualification testing.
whether you repetitious tested or not?
 
多人接受答案了。
 
后退
顶部