「Win32API」(2006/09/02 (土) 11:06:05) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*Win32API
#contents
**ネットリソースの検出
以下の3つのAPIを用いてネットリソースの検出を行う。
WNetOpenEnum()
WNetEnumResource()
WNetCloseEnum()
APIで使用される構造体のポインタも定義しておく。
type
PNetResources = ^TNetResources;
TNetResources = array [0..MaxInt div
sizeof(TNetResource) - 1] of TNetResource;
API用の作業領域を確保する。
crdBufsize := Sizeof(TNetResource) * 50;
crdEntries := $FFFFFFFF;
GetMem(recNetResources, crdBufsize);
検索情報を設定する。
with recNetResource do
begin
dwScope := RESOURCE_GLOBALNET;
dwType := RESOURCETYPE_DISK;
dwDisplayType := RESOURCEDISPLAYTYPE_GENERIC;
dwUsage := RESOURCEUSAGE_CONNECTABLE;
lpLocalName := '';
lpRemoteName := 検索するネットリソース(\\hogehoge);
lpComment := '';
lpProvider := '';
end;
検索開始~検索終了まで。
// ネットリソース検索開始
if WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0,
@recNetResource, hdlEnum) <> NO_ERROR then
begin
WNetCloseEnum(hdlEnum);
Exit;
end;
// ネットリソース検索
if WNetEnumResource(hdlEnum, crdEntries, recNetResources,
crdBufsize) <> NO_ERROR then
begin
WNetCloseEnum(hdlEnum);
FreeMem(recNetResources, crdBufsize);
Exit;
end;
// ネットリソース検索完了
WNetCloseEnum(hdlEnum);
ネットワーク上のコンピュータを発見した後、それらに目的のフォルダがあるかどうかを確認する処理。コンピュータを発見する事だけが目的ならこの処理はいらない。
// 画面ステータス更新
for i := 0 to crdEntries - 1 do
if StrPas(recNetResources^[i].lpRemoteName)
= '\\hogehoge\hagehage' then
見つかった時の処理
最後は忘れず作業領域を開放しておく。
// 作業領域開放
FreeMem(recNetResources, crdBufsize);
*Win32API
#contents
**ネットリソースの検出
***WNet系APIを用いた検出
以下の3つのAPIを用いてネットリソースの検出を行う。
WNetOpenEnum()
WNetEnumResource()
WNetCloseEnum()
APIで使用される構造体のポインタも定義しておく。
type
PNetResources = ^TNetResources;
TNetResources = array [0..MaxInt div
sizeof(TNetResource) - 1] of TNetResource;
API用の作業領域を確保する。
crdBufsize := Sizeof(TNetResource) * 50;
crdEntries := $FFFFFFFF;
GetMem(recNetResources, crdBufsize);
検索情報を設定する。
with recNetResource do
begin
dwScope := RESOURCE_GLOBALNET;
dwType := RESOURCETYPE_DISK;
dwDisplayType := RESOURCEDISPLAYTYPE_GENERIC;
dwUsage := RESOURCEUSAGE_CONNECTABLE;
lpLocalName := '';
lpRemoteName := 検索するネットリソース(\\hogehoge);
lpComment := '';
lpProvider := '';
end;
検索開始~検索終了まで。
// ネットリソース検索開始
if WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0,
@recNetResource, hdlEnum) <> NO_ERROR then
begin
WNetCloseEnum(hdlEnum);
Exit;
end;
// ネットリソース検索
if WNetEnumResource(hdlEnum, crdEntries, recNetResources,
crdBufsize) <> NO_ERROR then
begin
WNetCloseEnum(hdlEnum);
FreeMem(recNetResources, crdBufsize);
Exit;
end;
// ネットリソース検索完了
WNetCloseEnum(hdlEnum);
ネットワーク上のコンピュータを発見した後、それらに目的のフォルダがあるかどうかを確認する処理。コンピュータを発見する事だけが目的ならこの処理はいらない。
// 画面ステータス更新
for i := 0 to crdEntries - 1 do
if StrPas(recNetResources^[i].lpRemoteName)
= '\\hogehoge\hagehage' then
見つかった時の処理
最後は忘れず作業領域を開放しておく。
// 作業領域開放
FreeMem(recNetResources, crdBufsize);
表示オプション
横に並べて表示:
変化行の前後のみ表示: