怎样取得已建立的拨号连接的句柄? (100分)

  • 主题发起人 主题发起人 pepsi-cola
  • 开始时间 开始时间
P

pepsi-cola

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样取得已建立的拨号连接的句柄?
据说在拨号建立连接后,注册表中有一个键值记录着当前连接的句柄,请问这个键的名称
是什么?
当然,如果别的方法能取得也可以,多谢!

很多挂断的方法都是程序自己拨自己挂,所以取得连接的句柄程序自然就会知道了,
但是怎样取得非本程序建立的拨号连接的句柄?
 
获取当前系统中可用的拨号连接名称
  为了让用户选择使用拨号连接进行拨号,我们需要获取系统中已建立的拨号连接的名称。在建立了
拨号连接后,WIN9X将拨号连接的名称和属性写在了注册表中,我们可以从注册表中获取当前系统中可
用的拨号连接名称及在Internet Explorer中设置的默认连接名称。
  在注册表的HKEY_USERS/.Default/RemoteAccess/Addresses下,列出了已经在拨号网络中建立了的
拨号连接的名称及其属性设置,其中各项目的名称即为可用的拨号连接的名称;各项目的值即为各拨号
连接的属性设置.我们只要读出各项目的名称即可获取当前系统中可用的拨号连接名称.
  如果在Internet Explorer中设置了默认连接名称(查看=》Internet选项=》连接=》连接=》
设置=》使用以下拨号网络连接),则在注册表的HKEY_USERS/.Default/RemoteAccess下,有一个字符
串类型的键值,键值名InternetProfile,其值即为Internet Explorer中设置的默认连接名称。

    下面是一个获取当前系统中可用的拨号连接名称的例子.
{ 注意在Uses中增加Registry单元,用于操作注册表 }
{ 获取当前系统中可用的拨号连接名称 }
procedure TForm1.Button3Click(Sender: TObject);
var
registryTemp : TRegistry;
stringsTemp : TStringlist;
intIndex : integer;
begin
registryTemp := TRegistry.Create;
stringsTemp := TStringlist.Create;
with registryTemp do
begin
RootKey := HKEY_USERS;//根键设置为HKEY_USERS
//如果存在子键.Default/RemoteAccess/Addresses
if OpenKey('.Default/RemoteAccess/Addresses',false) then
GetValueNames( stringsTemp );//读出各项目的名称,即拨号连接名称
CloseKey;
end;
//当前系统中可用的拨号连接
memo1.lines.add( '******************当前系统中有'+ IntToStr( stringsTemp.count )
+'个可用的拨号连接如下****************');
for intIndex := 0 to stringsTemp.count - 1 do
memo1.lines.add( stringsTemp.strings[ intIndex ] );

//列出Internet Explorer中设置的默认连接名称
if registryTemp.OpenKey('.Default/RemoteAccess',false) then
memo1.lines.add( 'Internet Explorer中设置的默认连接名称为' +
registryTemp.ReadString('InternetProfile') );

//释放内存
registryTemp.free;
stringsTemp.free;
end;
 
后退
顶部