OSDN Git Service

わからなくなってもとへ少し戻す master
authoryamat0jp <terukohietori@gmail.com>
Wed, 29 Apr 2020 09:40:33 +0000 (18:40 +0900)
committeryamat0jp <terukohietori@gmail.com>
Wed, 29 Apr 2020 09:40:33 +0000 (18:40 +0900)
Unit1.pas
Unit2.pas

index 10aac26..c77bc8c 100644 (file)
--- a/Unit1.pas
+++ b/Unit1.pas
@@ -67,7 +67,7 @@ begin
   begin
     dwType := RESOURCETYPE_DISK;
     lpLocalName := nil;
-    lpRemoteName := PChar(ListBox1.Items[ListBox1.ItemIndex]+'\IPC$');
+    lpRemoteName := PChar(ListBox1.Items[ListBox1.ItemIndex]);
     lpProvider := nil;
   end;
   password := PChar('');
index 945a21a..e816aac 100644 (file)
--- a/Unit2.pas
+++ b/Unit2.pas
@@ -79,6 +79,8 @@ var
 begin
   dwResult := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
     RESOURCEUSAGE_CONTAINER, lpnr, hEnum);
+  if dwResult <> NO_ERROR then
+    Exit;
   lpnrLocal := AllocMem(cbBuffer);
   try
     repeat
@@ -87,19 +89,22 @@ begin
       nEntries := cEntries;
       nBuffer := cbBuffer;
       dwResultEnum := WNetEnumResource(hEnum, nEntries, lpnrLocal, nBuffer);
-      for i := 0 to nEntries - 1 do
-      begin
-        with lpnrLocal^[i] do
-          if Copy(lpRemoteName, 1, 2) = '\\' then
-            Synchronize(
-              procedure
-              begin
-                NetrStr.Add(lpRemoteName);
-              end);
-        if Boolean(lpnrLocal^[i].dwUsage and RESOURCEUSAGE_CONTAINER) then
-          EnumNet(NetrStr, @lpnrLocal^[i]);
-      end;
-    until (dwResultEnum <> NO_ERROR) or (dwResultEnum = ERROR_NO_MORE_ITEMS);
+      if dwResultEnum = NO_ERROR then
+        for i := 0 to nEntries - 1 do
+        begin
+          with lpnrLocal^[i] do
+            if Copy(lpRemoteName, 1, 2) = '\\' then
+              Synchronize(
+                procedure
+                begin
+                  NetrStr.Add(lpRemoteName);
+                end);
+          if Boolean(lpnrLocal^[i].dwUsage and RESOURCEUSAGE_CONTAINER) then
+            EnumNet(NetrStr, @lpnrLocal^[i]);
+        end
+      else if dwResultEnum <> ERROR_NO_MORE_ITEMS then
+        Exit;
+    until dwResultEnum = ERROR_NO_MORE_ITEMS;
   finally
     FreeMem(lpnrLocal);
     WNetCloseEnum(hEnum);