Главная страница
    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.037 c
8-1089642570
ИМХО
2004-07-12 18:29
2004.10.17
PCL


3-1095332375
RavenD
2004-09-16 14:59
2004.10.17
В TQuery самозаменяются параметры, почему?


1-1096898402
Wish
2004-10-04 18:00
2004.10.17
Про формы


3-1095789377
Maverick
2004-09-21 21:56
2004.10.17
PL SQL


1-1096652804
UserUserov
2004-10-01 21:46
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский