|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"WindowsNTローカルグループの一覧"
{
WindowsNTのローカルグループの一覧を表示します。
WindowsNT専用です。
NET〜APIの使用方法と、APIヘッダの定義方法のサンプル(のつもり)
処理するサーバ名を引数に指定して起動します。
}
program lgrplst;
uses
Windows, SysUtils;
type
//コメント部分は元の宣言部分です
//typedef struct _LOCALGROUP_INFO_1 {
//LPWSTRlgrpi1_name;
//LPWSTRlgrpi1_comment;
//} LOCALGROUP_INFO_1, *PLOCALGROUP_INFO_1, LPLOCALGROUP_INFO_1;
PLOCALGROUP_INFO_1_Array = ^TLOCALGROUP_INFO_1_Array;
TLOCALGROUP_INFO_1 = record
lgrpi1_name: PWideChar;
lgrpi1_comment: PWideChar;
end;
TLOCALGROUP_INFO_1_Array = array [0..65535] of TLOCALGROUP_INFO_1;
const
netapi32 = 'netapi32.dll';
//#define NET_API_STATUS DWORD
//NET_API_STATUS
//NetApiBufferFree (
// LPVOID Buffer
// );
function NetApiBufferFree(buffer: pointer): DWORD; stdcall;
external netapi32 name 'NetApiBufferFree';
//NET_API_STATUS
//NetLocalGroupEnum (
// LPWSTR servername,
// DWORD level,
// LPBYTE * bufptr,
// DWORD prefmaxlen,
// LPDWORD entriesread,
// LPDWORD totalentries,
// LPDWORD resumehandle
// );
function NetLocalGroupEnum(servername: PWideChar; level: DWORD;
var bufptr: PLOCALGROUP_INFO_1_Array; prefmaxlen: DWORD;
var entriesread, totalentries, resumehandle:DWORD): DWORD; stdcall;
external netapi32 name 'NetLocalGroupEnum';
{$R *.RES}
var
flRet: DWORD;
servername: array [0..31] of WideChar;
bufptr: PLOCALGROUP_INFO_1_Array;
entriesread,
totalentries,
resumehandle:DWORD;
i: integer;
begin
StringToWideChar('\\' + ParamStr(1), servername, 32);
resumehandle := 0;
repeat
flRet := NetLocalGroupEnum(servername,
1,
bufptr,
4096, // 根拠のない値です
entriesread,
totalentries,
resumehandle);
if (flRet = 0) or (flRet = ERROR_MORE_DATA) then
begin
for i := 0 to entriesread - 1 do
begin
Writeln(WideCharToString(bufptr[i].lgrpi1_name));
Writeln(' ' + WideCharToString(bufptr[i].lgrpi1_comment));
end;
end
else
begin
Writeln('ERROR:' + IntToStr(flRet));
Halt(flRet);
end;
if bufptr <> nil then
begin
NetApiBufferFree(bufptr);
bufptr := nil;
end;
until flRet <> ERROR_MORE_DATA;
end.
{
久しぶりに、変わったコードを書いてみたのでアップしてみました。
ここへは初めてのアップなので、問題があったらご指摘ください。
}
98/6/22(Mon) 09:15pm CXJ04762 仁義偉王
Original document by 仁義偉王 氏 ID:(CXJ04762)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|