//RAS拨号的同步和异步问题,如果这个问题不搞清楚,就谈不上消息的截获和同步的线程监视。
//dwRet := RasDialA(NiL,NiL,@rdParams,0,NiL,@hRasConn);//同步
//dwRet := RasDialA(NiL,NiL,@rdParams,0,@RasDialFunc,@hRasConn);//异步回调 --只支持在PC
//dwRet := RasDialA(NiL,NiL,@rdParams,0,NiL,@hRasConn);//同步
//dwRet := RasDialA(NiL,NiL,@rdParams,0,@RasDialFunc,@hRasConn);//异步回调 --只支持在PC
dwRet := RasDialA(NiL,NiL,@rdParams,$FFFFFFFF,Pointer(hWin),@hRasConn); //异步消息支持PC、CE
很奇怪,前两种方式正常.最后一种方式异步消息拨号后卡死.svchost cpu狂飙.系统xp sp3
异步回调可以得到拨号的每一步的状态,就像系统自带的拨号器的提示信息一样,但不能得到断线的通知.
感觉要获得整个系统的拨号网络的状态,要么定时器查询状态.要么用线程RasConnectionNotification
SecuAttr.nLength := SizeOf(SecuAttr);
SecuAttr.bInheritHandle:=False;
SecuAttr.lpSecurityDescriptor :=nil;
hConnected:=CreateEvent(@SecuAttr,True, False, 'Connect');
Res:=RasConnectionNotification(INVALID_HANDLE_VALUE,hConnected,RASCN_Connection);
WaitForSingleObject(hConnected, INFINITE);