お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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