16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"ダイアルアップ接続設定の取得・複写"
この発言に対し以下のコメントが寄せられています
#01275 Fermion さん RasGetEntryProperties 他の宣言
■概要
既存のダイアルアップ接続の各設定値を取得するサンプルです。
{$UNDEF HogeHoge} 部分のコメント化で、取得した各設定値を 'HogeHoge'
という名の新しい接続にコピーします。
■コンポーネント
Form1 に、Edit1, Memo1, Button1 を適当に配置して下さい。
■サンプル実行時
Edit1 にプロパティ値を取得したい接続名(エントリ名)を入力し、 Button1
を押すことで Memo1 にその各設定値を表示させ( HogeHogeという名の新しい
接続にコピーし)ます。
■注意事項
・この発言のコメントとしてアップされている RasEntry.pas を uses して
下さい。
・RasSetEntryDialParams( nil, @RasDialParams, False );
~~~~~\(^^;) この部分
を True にセットするとパスワードが消えますので、色々試される際には
充分注意して下さい。
・Win9x 系で RasSetEntryProperties を使用する場合、lpRasEntry で渡さ
れる Entry情報に、以下のパラメータ値をセットしないと ErrorCode 87
(ERROR_INVALID_PARAMETER) が返されます。
dwCountryID
dwCountryCode
szAreaCode
szLocalPhoneNumber
szDeviceType
szDeviceName
・Windows98SE + Delphi5 Pro で動作確認。
・本サンプルは、ご自身の責任においてお試し下さい。m(_"_)m
■サンプルコード
//=========================================================================
{...略...}
implementation
uses RasEntry;
{$R *.DFM}
{$DEFINE HogeHoge}
{$UNDEF HogeHoge} // ←コメントにすると複写が機能します。
{*************************************************************************
GetEntryProperties
//***********************************************************************}
procedure GetEntryProperties(const EntryStr: String; FStrings: TStrings);
procedure CheckRes( const Res: DWORD );
begin
case Res of
ERROR_INVALID_PARAMETER:
raise Exception.Create( 'ERROR_INVALID_PARAMETER' );
ERROR_BUFFER_INVALID:
raise Exception.Create( 'ERROR_BUFFER_INVALID' );
ERROR_BUFFER_TOO_SMALL:
raise Exception.Create( 'ERROR_BUFFER_TOO_SMALL' );
ERROR_CANNOT_OPEN_PHONEBOOK:
raise Exception.Create( 'ERROR_CANNOT_OPEN_PHONEBOOK' );
ERROR_CANNOT_FIND_PHONEBOOK_ENTRY:
raise Exception.Create( 'ERROR_CANNOT_FIND_PHONEBOOK_ENTRY' );
end;{case Res of}
end;
procedure GetProperties;
var
lpRasEntry : PRasEntry;
Res,
EntryBufSize : DWORD;
begin
EntryBufSize := 0;
Res := RasGetEntryProperties( nil, PChar( EntryStr ), nil,
@EntryBufSize, nil, nil );
if Res <> ERROR_BUFFER_TOO_SMALL then Exit;
lpRasEntry := AllocMem( EntryBufSize );
try
lpRasEntry^.dwSize := EntryBufSize;
Res := RasGetEntryProperties( nil, PChar( EntryStr ), lpRasEntry,
@EntryBufSize, nil, nil );
CheckRes( Res );
with FStrings, lpRasEntry^ do begin
Add( ' Flags: $' + IntToHex( dwfOptions, 8 ));
Add( ' Country ID: ' + IntToStr( dwCountryID ));
Add( ' Country code: ' + IntToStr( dwCountryCode ));
Add( ' Area code: ' + szAreaCode );
Add( 'Local phone number: ' + szLocalPhoneNumber );
with ipaddr do
Add( ' IP: '
+ Format( '%3d.%3d.%3d.%3d', [a,b,c,d]));
with ipaddrDns do
Add( ' DNS: '
+ Format( '%3d.%3d.%3d.%3d', [a,b,c,d]));
with ipaddrDnsAlt do
Add( ' DNS Alt: '
+ Format( '%3d.%3d.%3d.%3d', [a,b,c,d]));
with ipaddrWins do
Add( ' WINS: '
+ Format( '%3d.%3d.%3d.%3d', [a,b,c,d]));
with ipaddrWinsAlt do
Add( ' WINS Alt: '
+ Format( '%3d.%3d.%3d.%3d', [a,b,c,d]));
Add( ' Frame size: ' + IntToStr( dwFrameSize ));
Add( ' Net protocols: $' + IntToHex( dwfNetProtocols, 8 ));
Add( ' Framing protocols: $' + IntToHex( dwFramingProtocol, 8));
Add( ' Script: ' + szScript );
Add( ' Autodial DLL: ' + szAutodialDll );
Add( ' Autodial Func: ' + szAutodialFunc );
Add( ' Device type: ' + szDeviceType );
Add( ' Device name: ' + szDeviceName );
end;{with FStrings, lpRasEntry^ do}
{$IFDEF HogeHoge}
{* 取得したプロパティを複製する(名は 'HogeHoge' )****************}
Res := RasSetEntryProperties( nil, 'HogeHoge', lpRasEntry,
EntryBufSize, nil, 0 );
CheckRes( Res );
{******************************************************************}
{$ENDIF}
finally
FreeMem( lpRasEntry );
end;{try..finally..}
end;
procedure GetDialParams;
var
RasDialParams: TRasDialParams;
fPassword : BOOL;
Res : DWORD;
begin
FillChar( RasDialParams, SizeOf( TRasDialParams ), 0 );
with FStrings, RasDialParams do begin
dwSize := SizeOf( TRasDialParams );
StrPCopy( szEntryName, EntryStr );
Res := RasGetEntryDialParams( nil, @RasDialParams, @fPassword );
CheckRes( Res );
Add( '' );
Add( ' CallbackNumber: ' + szCallbackNumber );
Add( ' UserName: ' + szUserName );
Add( ' Password: ' + szPassword );
Add( ' Domain: ' + szDomain );
{$IFDEF HogeHoge}
{* 取得した DialParams を HogeHoge にセットする *******************}
StrPCopy( szEntryName, 'HogeHoge' );
FillChar( szPhoneNumber, SizeOf( SzPhoneNumber ), 0 );
FillChar( szCallbackNumber, SizeOf( szCallbackNumber ), 0 );
FillChar( szDomain, SizeOf( szDomain ), 0 );
Res := RasSetEntryDialParams( nil, @RasDialParams, False );
CheckRes( Res );
{******************************************************************}
{$ENDIF}
end;{with FStrings, RasDialParams do}
end;
begin
FStrings.Clear;
GetProperties;
GetDialParams;
end;
{*************************************************************************
Button1 OnClick
//***********************************************************************}
procedure TForm1.Button1Click(Sender: TObject);
begin
GetEntryProperties( Edit1.Text, Memo1.Lines );
end;
{...略...}
//=========================================================================
01/02/12(Mon) 10:14pm Fermion [KHF03264]
Original document by Fermion 氏 ID:(KHF03264)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|