Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

поиск по сети   Найти похожие ветки 

 
Ден   (2004-08-10 07:26) [0]

Как и с помощью каких компонентов можно осуществить поиск файлов по сети


 
Rouse_ ©   (2004-08-10 10:15) [1]

WNetOpenEnum + WNetEnumResource + WNetCloseEnum + FindFirst + FindNext + FindClose + Руки + Голова


 
Vovochka   (2004-08-10 11:44) [2]

unit netunit;
interface
uses Windows, Classes;
function GetContainerList(ListRoot:PNetResource):TList;
Type  {$H+}
  PNetRes = ^TNetRes;
  TNetRes = Record
       dwScope       : Integer;
            dwType        : Integer;
            dwDisplayType : Integer;
            dwUsage       : Integer;
            LocalName     : String;
            RemoteName    : String;
            Comment       : String;
            Provider      : String;
            End;  {H-}
            implementation
uses SysUtils;
type PnetResourceArr = ^TNetResource;
{TNetResource - это запись,
     эквивалентная TNetRes, за исключением того, что
                     вместо типов string там типы PChar. }
function GetContainerList(ListRoot:PNetResource):TList;
{возвращает список сетевых имён с подуровня ListRoot, каждый
элемент списка TList - это PNetRes, где поле RemoteName определяет
соответственно сетевое имя элемента списка. Если ListRoot=nil, то
возвращается самый верхний уровень типа:1. Microsoft Windows Network
2. Novell Netware Network
Чтобы получить список доменов/рабочих групп сети Microsoft, нужно
вызвать эту функцию второй раз, передав ей в качестве параметра,
соответствующий элемент списка, полученного при первом её вызове.
Чтобы получить список компьютеров домена - вызвать третий раз...}
{Единственное, я не знаю как узнать имя текущего домена.}
Var
 TempRec     : PNetRes;
 Buf         : Pointer;
 Count,BufSize, Res : DWORD;
 lphEnum     : THandle;
 p           : PNetResourceArr;
 i,j           : SmallInt;
 NetworkList : TList;
Begin
 NetworkList := TList.Create;
 Result:=nil;
 BufSize := 8192;
 GetMem(Buf, BufSize);
Try
Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_disk,
RESOURCEUSAGE_CONTAINER{0}, ListRoot,lphEnum);
   {в результате получаем ссылку lphEnum}
If Res <> 0 Then Raise Exception(Res);
for j:=1 to 100 do
begin
   Count := $FFFFFFFF; {требуем выдать столько записей в список, сколько есть}
   Res := WNetEnumResource(lphEnum, Count, Buf, BufSize);
    {в буфере Buf - списочек
    в виде массива указателей на структуры типа TNetResourceArr
    а в Count - число этих структур}
   If Res = ERROR_NO_MORE_ITEMS Then break;
   If (Res <> 0) Then Raise Exception(Res);
   P := PNetResourceArr(Buf);
   For I := 0 To Count - 1 Do
   Begin            //Требуется копирование из буфера, так как он
     New(TempRec); //действителен только до следующего  вызова функций группы
{WNet}
     TempRec^.dwScope := P^.dwScope;
     TempRec^.dwType := P^.dwType ;
     TempRec^.dwDisplayType := P^.dwDisplayType ;
     TempRec^.dwUsage := P^.dwUsage ;
     TempRec^.LocalName := StrPas(P^.lpLocalName);  {имеются  ввиду вот эти указатели}
     TempRec^.RemoteName := StrPas(P^.lpRemoteName); {в смысле  - строки PChar}
     TempRec^.Comment := StrPas(P^.lpComment);
     TempRec^.Provider := StrPas(P^.lpProvider);
     NetworkList.Add(TempRec);
     Inc(P);
      End;
//моя дописка

end;
   Res := WNetCloseEnum(lphEnum);
   {а следующий вызов - вот он!}
If Res <> 0 Then Raise Exception(Res);
   Result:=NetWorkList;
 Finally
FreeMem(Buf);
end;
 End;
 end.

основной модуль (отрывок)
procedure TForm1.FindFile(Dir:String);
Var SR:TSearchRec;
   FindRes:Integer;
begin
try
FindRes:=FindFirst(Dir+"*.*",faAnyFile,SR);
While FindRes=0 do
  begin
     if ((SR.Attr and faDirectory)=faDirectory) and
     ((SR.Name=".")or(SR.Name="..")) then
        begin
           FindRes:=FindNext(SR);
           Continue; // запустить с новым dir
        end;

     if ((SR.Attr and faDirectory)=faDirectory) then // если найден каталог, то
        begin
          FindFile(Dir+SR.Name+"\"); // входим в процедуру поиска с параметрами текущего каталога + каталог, что мы нашли
           FindRes:=FindNext(SR); // после осмотра вложенного каталога мы продолжаем поиск в этом каталоге
           Continue; // продолжить цикл
        end;
    if sr.Name="WIN.INI" then
    begin
    pppp:=dir;
    exit;
    end;
   FindRes:=FindNext(SR);
  end;
finally;
FindClose(SR);
end;
end;


 
Ден   (2004-08-11 10:18) [3]

Так какие компоненты надо использовать


 
DeadMeat ©   (2004-08-11 12:37) [4]

Один мужик объясняет другому как работает троллейбус. Там, мол, у него рога, по ним подается ток на вот этот движок, потом с помощью вот этих шестеренок движутся вот эти колеса и т.п. Второй слушал, слушал и в конце сказал: "Я все это понимаю, но вот чего я понять не могу, так куда бензин заливают?"

Анекдот старый, но почти в тему...

---
...Death Is Only The Begining...


 
Rouse_ ©   (2004-08-11 12:51) [5]

Орех :)



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.041 c
1-1096964908
Fishka
2004-10-05 12:28
2004.10.17
"Не показывать больше это окно"


3-1095541416
Distortion
2004-09-19 01:03
2004.10.17
Работа с базами данных, как?


14-1096276126
WondeRu
2004-09-27 13:08
2004.10.17
Конец демократии или проблема 2008 года решена!


3-1095769368
analyser
2004-09-21 16:22
2004.10.17
Опять наследуемые формы и Ehlib (DBEditEh.Buttons)


14-1096530739
1008
2004-09-30 11:52
2004.10.17
Есть возомжность обзавестись, не знаю надо ли





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский