お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"[D4] パスワード設定とパスワード入力"




Windows標準スクリーンセーバーで使われている
スクリーンセーバーのパスワード設定とパスワード入力

FormにButton1とButton2を配置して下さい。

Button1でパスワード設定
Button2でパスワード入力

です               

                                                      KHE00221 t.matsui

======================================
以下サンプルプログラム
======================================

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;
  p : TFarProc;
  hPASSWORD : Integer;
  hMPR : Integer;
  PwdChangePasswordA : 
procedure(lpcregkeyname:LPCSTR;hwnd:HWND;uiReserved1:UINT;uiReserved2:UINT); 
stdcall;
  VerifyScreenSavePwd : function (hwnd:HWND):Boolean;stdcall;

implementation

{$R *.DFM}

{初期設定}
procedure TForm1.FormCreate(Sender: TObject);
begin
    //MPR.DLL のロード
    hMPR := LoadLibrary('MPR.DLL');
    p := GetProcAddress(hMPR,'PwdChangePasswordA');
    if p <> Nil then @PwdChangePasswordA := p;

    //PASSWORD.CPL のロード
    hPASSWORD := LoadLibrary('PASSWORD.CPL');
    p := GetProcAddress(hPASSWORD, 'VerifyScreenSavePwd');
    if p <> Nil then @VerifyScreenSavePwd := p;
    Exit;
end;

{終了処理}
procedure TForm1.FormDestroy(Sender: TObject);
begin
    //開放
    if hPASSWORD <> 0 then FreeLibrary (hPASSWORD);
    if hMPR <> 0 then FreeLibrary (hMPR);
    Exit;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    //パスワード設定フォーム
    PwdChangePasswordA('SCRSAVE',Application.Handle,0,0);
    Exit;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
    B : Boolean;
    S : String;
begin
    //パスワード入力フォーム
    B := VerifyScreenSavePwd(Application.Handle);

    if B=True  then S:='正しいパスワードが入力されました' else
    if B=False then S:='キャンセルされました';
    MessageDlg(S, mtInformation,[mbOk], 0);
    Exit;
end;

end.

Original document by t.matsui        氏 ID:(KHE00221)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum