Процедура отключения всех Dial-Up соединений. PS:Таймер сам приделаеш...
| Код | procedure TForm1.Button1Click(Sender: TObject); type PRasConn=^TRasConn; TRasConn=record dwSize:DWord; hRasConn:THandle; szEntryName:array [0..20] of Char; end; TRasHangUp=function(hRasConn:THandle):DWord; stdcall; TRasEnumConnections=function(RasConn:PChar; var bSize:DWord; var ConnCount:DWord):DWord; stdcall; var RasApi:Cardinal; RasEnumConnections:TRasEnumConnections; RasHangUp:TRasHangUp; bSize,ConnCount,j:DWord; RasConn:TRasConn; ArrRasConn,RasOld:PChar; begin Memo1.Clear; RasApi:=LoadLibrary('RasApi32.dll'); if RasApi<>0 then begin RasEnumConnections:=GetProcAddress(RasApi,'RasEnumConnectionsA'); RasHangUp:=GetProcAddress(RasApi,'RasHangUpA'); if (Assigned(RasEnumConnections))and(Assigned(RasHangUp)) then begin bSize:=0; RasConn.dwSize:=SizeOf(TRasConn); RasEnumConnections(@RasConn,bSize,ConnCount); if bSize>0 then begin Memo1.Lines.Add('Активных Dial-Up соединений: '+IntToStr(ConnCount)); try GetMem(ArrRasConn,bSize); PRasConn(ArrRasConn)^.dwSize:=SizeOf(TRasConn); j:=bSize; RasOld:=ArrRasConn; if RasEnumConnections(ArrRasConn,j,ConnCount)=0 then for j:=1 to ConnCount do begin Memo1.Lines.Add('Соединение '+IntToStr(j)+':'); Memo1.Lines.Add(' - Дескриптор: '+IntToStr(PRasConn(ArrRasConn)^.hRasConn)); Memo1.Lines.Add(' - Название: '+PRasConn(ArrRasConn)^.szEntryName); {Отключаем соединение} try while RasHangUp(PRasConn(ArrRasConn)^.hRasConn)=0 do begin Application.ProcessMessages; Sleep(0); end; except end; inc(PRasConn(ArrRasConn)); end; FreeMem(RasOld,bSize); except end; end; end; FreeLibrary(RasApi); end; end; |
Удачи. |