L
Luckm
Unregistered / Unconfirmed
GUEST, unregistred user!
RAS拨号时, 系统会发送wm_rasdialevent给应用程序,从而可获知拨号的进度与错误信息。获取wm_rasdialevent有三种方法,一一试过,却出现三种错误,求解:
一、定义消息ID
const wm_rasdialevent=$0cccd;
二、方法一:使用回调函数
在rasdial的参数中可以调入回调函数的地址,在拨号时会系统在状态变化时调用该函数
1、定义回调函数
procedure rasdialfunc(umsg:cardinal;rasstatue:word;dwerror:dword);stdcall;
begin
case rasstatue of
RASCS_CONNECTED:form1.label1.caption:='连接成功';
RASC_DISCONNECTED:form1.label1.caption:='连接失败';
{ other statues }
end;
end;
2、调用rasdial:
rasdail(nil,nil,@rasdialparams,0,DWORD(@rasdialfunc),rcon);
3、出现错误:
在回调函数对form1.label1.caption赋值时发生冲突
三、方法二:使用消息函数
1、定义消息获取函数:
procedure formonrasevent(var msg:tmessage);message wm_rasdialevent;
procedure formonrasevent(var msg:tmessage);
begin
case msg.wparam of
RASCS_CONNECTED:form1.label1.caption:='连接成功';
RASC_DISCONNECTED:form1.label1.caption:='连接失败';
{ other statues }
end;
end;
2、连接
rasdail(nil,nil,@rasdialparams,$FFFFFFFF,handle,rcon);
3、出现错误:
在编译时出现illegal message method index错误,在帮助中,
delphi表示windows消息ID不能超过$BFFF。但wm_rasdialevent却是$cccd?
四、方法三:使用消息截取函数:
1、定义消息处理函数:
procedure appmessage(var msg:tmsg;var handle:boolean);
begin
if msg.message=wm_rasdialevent then
begin
case msg.wparam of
RASCS_CONNECTED:form1.label1.caption:='连接成功';
RASC_DISCONNECTED:form1.label1.caption:='连接失败';
{ other statues }
end;
handle:=true;
end;
end;
2、在form.oncreate中替换应用程序消息处理函数:
application.onmessage:=appmessage;
3、连接
rasdail(nil,nil,@rasdialparams,$FFFFFFFF,handle,rcon);
4、出现错误:
截取不到RAS事件。
以上三种错误能予解决者均有分加!
一、定义消息ID
const wm_rasdialevent=$0cccd;
二、方法一:使用回调函数
在rasdial的参数中可以调入回调函数的地址,在拨号时会系统在状态变化时调用该函数
1、定义回调函数
procedure rasdialfunc(umsg:cardinal;rasstatue:word;dwerror:dword);stdcall;
begin
case rasstatue of
RASCS_CONNECTED:form1.label1.caption:='连接成功';
RASC_DISCONNECTED:form1.label1.caption:='连接失败';
{ other statues }
end;
end;
2、调用rasdial:
rasdail(nil,nil,@rasdialparams,0,DWORD(@rasdialfunc),rcon);
3、出现错误:
在回调函数对form1.label1.caption赋值时发生冲突
三、方法二:使用消息函数
1、定义消息获取函数:
procedure formonrasevent(var msg:tmessage);message wm_rasdialevent;
procedure formonrasevent(var msg:tmessage);
begin
case msg.wparam of
RASCS_CONNECTED:form1.label1.caption:='连接成功';
RASC_DISCONNECTED:form1.label1.caption:='连接失败';
{ other statues }
end;
end;
2、连接
rasdail(nil,nil,@rasdialparams,$FFFFFFFF,handle,rcon);
3、出现错误:
在编译时出现illegal message method index错误,在帮助中,
delphi表示windows消息ID不能超过$BFFF。但wm_rasdialevent却是$cccd?
四、方法三:使用消息截取函数:
1、定义消息处理函数:
procedure appmessage(var msg:tmsg;var handle:boolean);
begin
if msg.message=wm_rasdialevent then
begin
case msg.wparam of
RASCS_CONNECTED:form1.label1.caption:='连接成功';
RASC_DISCONNECTED:form1.label1.caption:='连接失败';
{ other statues }
end;
handle:=true;
end;
end;
2、在form.oncreate中替换应用程序消息处理函数:
application.onmessage:=appmessage;
3、连接
rasdail(nil,nil,@rasdialparams,$FFFFFFFF,handle,rcon);
4、出现错误:
截取不到RAS事件。
以上三种错误能予解决者均有分加!