请问如何用程序断开“拨号连接”?

解决方案 »

  1.   

    挂断拨号连接的RasAPI函数为RasHangUp,其函数原型为: 
    function RasHangUp( 
    hRasConn : DWORD//要挂断的拨号连接的句柄 
    ) : DWORD; stdcall; 
    function RasHangUp;external RasApiDll name 'RasHangUpA'; 
    函数返回值为0表示执行成功;否则为错误代码. 
    下面是一个应用例子,挂断由RasDial建立的拨号连接. //挂断由RasDial建立的拨号连接 
    dwResult := RasHangUp( RasCon ); 
    if dwResult <> 0 then //挂断失败 
    memo1.lines.add( '挂断失败:' + GetRasError( dwResult )) 
    else 
    memo1.lines.add( '挂断成功!');
      

  2.   

    使用第三方提供的rasapi.pas声明文件,就很简单的procedure HangUp;
      var
        bufsize: Longint;
        numEntries: Longint;
        x: Integer; OK: boolean;
        entries: Array[1..100] of TRasConn;
        stat: TRasConnStatus;
      begin
        entries[1].dwSize := SizeOf(TRasConn);
        bufsize := SizeOf(TRasConn) * 100;
        FillChar(stat, Sizeof(TRasConnStatus), 0);
        stat.dwSize := Sizeof(TRasConnStatus);
        if RasEnumConnections(@entries[1], bufsize, numEntries) = 0 then
           begin
             if numEntries > 0 then
                begin
                  OK:=true;
                  for x := 1 to numEntries do
                      with entries[x] do
                        if RasHangUp(Longint(Pointer(hrasconn))) <> 0 then OK:=false;
                  if OK
                     then PutToDebugLog('$SYS$', 'Connection(s) hang up successful')
                     else PutToDebugLog('$Err$', 'Fail to hang up connection(s)');
                end else PutToDebugLog('$SYS$', 'No connection to hang up');
           end else PutToDebugLog('$Err$', 'Fail to enumerate connection(s)');
      end;