Form窗口关不掉了???各位大侠帮帮忙!!!(200分)

  • 主题发起人 主题发起人 sjzzhyong
  • 开始时间 开始时间
S

sjzzhyong

Unregistered / Unconfirmed
GUEST, unregistred user!
dll中的form窗体中触发ClientSocketError事件后,窗口就关不掉了。使用
PostMessage(Handle,WM_CLOSE,0,0);也不管用。
 
用SendMessage(Handle,WM_DESTORY,0,0)强制关闭,但未保存的信息将丢失。
 
DLL是你自己写的么?是的话修改DLL代码,DLL要考虑异常的发生的啊。
不然只要强制关闭了。
 
to p-ftp:SendMessage(Handle,WM_DESTORY,0,0)也不起作用;
to shenloqi:Application.Terminate都不可以关闭,异常已经处理,关键是ClientSocketError事件
处理过后,form才关不掉的???
 
To sjzzhyong
可否贴出部分代码?
 
dll的入口函数为:
procedure FununDownInfo(MainApp:TApplication;AppADOConnection:TADOConnection;GlobalData:PGlobalDLLData;LibHandle:Integer);
begin
if not Assigned(MdiDLLApp) then
begin
MdiDLLApp:=Application;

if ADOConn <> AppADOConnection then
begin
//连接传递过来
ADOConn := AppADOConnection;
end;
//全局变量
ChildGlobalData:= GlobalData;
//应用传递过来
Application:=MainApp;
end;
//dll的地址传递过来
MyLibHandle:=LibHandle;
ShowChild;//显示窗体
end;

错误处理程序:
procedure TConOptionForm.ClientSocketError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
case ErrorCode of
10004:begin
MessageBox(Handle,'操作被终止!','系统提示',MB_OK+MB_ICONERROR);
end;
10013:begin
MessageBox(Handle,'访问被拒绝!','系统提示',MB_OK+MB_ICONERROR);
end;
10014:begin
MessageBox(Handle,'地址错误!','系统提示',MB_OK+MB_ICONERROR);
end;
10022:begin
MessageBox(Handle,'参数错误!','系统提示',MB_OK+MB_ICONERROR);
end;
10024:begin
MessageBox(Handle,'打开太多的Socket!','系统提示',MB_OK+MB_ICONERROR);
end;
10035:begin
MessageBox(Handle,'没有可以获取的资料!','系统提示',MB_OK+MB_ICONERROR);
end;
10036:begin
MessageBox(Handle,'操作正在执行中!','系统提示',MB_OK+MB_ICONERROR);
end;
10038:begin
MessageBox(Handle,'在一个非法的 Socket 对象上执行操作!','系统提示',MB_OK+MB_ICONERROR);
end;
10039:begin
MessageBox(Handle,'目标地址缺失!','系统提示',MB_OK+MB_ICONERROR);
end;
10040:begin
MessageBox(Handle,'数据太长!','系统提示',MB_OK+MB_ICONERROR);
end;
10041:begin
MessageBox(Handle,'协议类型错误!','系统提示',MB_OK+MB_ICONERROR);
end;
10042:begin
MessageBox(Handle,'错误的协议选项!','系统提示',MB_OK+MB_ICONERROR);
end;
10043:begin
MessageBox(Handle,'协议不支持!','系统提示',MB_OK+MB_ICONERROR);
end;
10044:begin
MessageBox(Handle,'Socket 类型不支持!','系统提示',MB_OK+MB_ICONERROR);
end;
10045:begin
MessageBox(Handle,'不支持指定操作!','系统提示',MB_OK+MB_ICONERROR);
end;
10046:begin
MessageBox(Handle,'协议族不支持!','系统提示',MB_OK+MB_ICONERROR);
end;
10047:begin
MessageBox(Handle,'所使用的地址族不在支持之列!','系统提示',MB_OK+MB_ICONERROR);
end;
10048:begin
MessageBox(Handle,'地址已经被使用!','系统提示',MB_OK+MB_ICONERROR);
end;
10049:begin
MessageBox(Handle,'设置地址失败!','系统提示',MB_OK+MB_ICONERROR);
end;
10050:begin
MessageBox(Handle,'网络关闭!','系统提示',MB_OK+MB_ICONERROR);
end;
10051:begin
MessageBox(Handle,'网络不可达!','系统提示',MB_OK+MB_ICONERROR);
end;
10052:begin
MessageBox(Handle,'网络被重置!','系统提示',MB_OK+MB_ICONERROR);
end;
10053:begin
MessageBox(Handle,'服务器已关闭,请稍后再拨.......','系统提示',MB_OK+MB_ICONERROR);
MessageBox(Handle,'软件导致连接退出!','系统提示',MB_OK+MB_ICONERROR);
end;
10054:begin
MessageBox(Handle,'服务器已关闭,请稍后再拨.......','系统提示',MB_OK+MB_ICONERROR);
MessageBox(Handle,'连接被重置!','系统提示',MB_OK+MB_ICONERROR);
end;
10055:begin
MessageBox(Handle,'缓冲不足!','系统提示',MB_OK+MB_ICONERROR);
end;
10056:begin
MessageBox(Handle,'Socket 已经连接!','系统提示',MB_OK+MB_ICONERROR);
end;
10057:begin
MessageBox(Handle,'Socket 未连接!','系统提示',MB_OK+MB_ICONERROR);
end;
10058:begin
MessageBox(Handle,'Socket 已经关闭!','系统提示',MB_OK+MB_ICONERROR);
end;
10060:begin
MessageBox(Handle,'没有找到服务器,请确定ip地址是否正确.......','系统提示',MB_OK+MB_ICONERROR);
MessageBox(Handle,'超时!','系统提示',MB_OK+MB_ICONERROR);
end;
10061:begin
MessageBox(Handle,'服务器已关闭,请稍后再拨.......','系统提示',MB_OK+MB_ICONERROR);
MessageBox(Handle,'连接被拒绝!','系统提示',MB_OK+MB_ICONERROR);
end;
10064:begin
MessageBox(Handle,'主机已关闭!','系统提示',MB_OK+MB_ICONERROR);
end;
10065:begin
MessageBox(Handle,'找不到路由!','系统提示',MB_OK+MB_ICONERROR);
end;
10067:begin
MessageBox(Handle,'进程太多!','系统提示',MB_OK+MB_ICONERROR);
end;
10109:begin
MessageBox(Handle,'类型未找到!','系统提示',MB_OK+MB_ICONERROR);
end;
11001:begin
MessageBox(Handle,'找不到主机!','系统提示',MB_OK+MB_ICONERROR);
end;
else begin
MessageBox(Handle,Pchar('不明原因错误:!'+ IntToStr(ErrorCode)),'系统提示',MB_OK+MB_ICONERROR);
end;
end;
ErrorCode:=0;
if ClientSocket.Active then
ClientSocket.Active:=False;
end;
 
Close也不行?
 
to SS2000:当然了。
 
to sjzzhyong
你最好把代码发给大家
能留下QQ和mail码?
 
QQ:50487165
email:sjzzhyong@yeah.net
 
代码有了,有时间给你考虑以下
 
我知道什么原因了。socket没有释放!不能给自己加分???
 
大家没有功劳,也有苦劳,你就发分吧
 
就是,白来一趟
 
辛苦大家了,希望大家多多指教!!!发分。
 
多人接受答案了。
 
后退
顶部