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

Вниз

Не могу получить список всех компьютеров сети!   Найти похожие ветки 

 
Борис   (2002-11-13 12:48) [0]

Уважаемые господа! Взял из FAQ такой код. Вроде разобрался.
Но выскакивает ошибка

[Error] Unit1.pas(198): Types of actual and formal var parameters must be identical

Код

procedure TForm1.FindAllComputers(Workgroup: String);
Var EnumHandle : THandle;
WorkgroupRS : TNetResource;
Buf : Array[1..500] of TNetResource;
BufSize : Integer;
Entries : Integer;
Result : Integer;
begin
ComputerCount := 0;
Workgroup := Workgroup + #0;
FillChar(WorkgroupRS, SizeOf(WorkgroupRS) , 0);
With WorkgroupRS do
begin
dwScope := 2;
dwType := 3;
dwDisplayType := 1;
dwUsage := 2;
lpRemoteName := @Workgroup[1];
end;
WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @WorkgroupRS, EnumHandle );

Repeat
Entries := 1;
BufSize := SizeOf(Buf);
Result := WNetEnumResource(EnumHandle,Entries,@Buf,BufSize);

If (Result = NO_ERROR) and (Entries = 1) then
begin
Inc( ComputerCount );
Computer[ ComputerCount ] := StrPas(Buf[1].lpRemoteName);
end;
Until (Entries <> 1) or (Result <> NO_ERROR);

WNetCloseEnum( EnumHandle );
end;
{ Find All Computers }

end.


 
savva   (2002-11-13 15:37) [1]

ну ты бы хоть строку выделил, а то цфра 198 мне ни о чем не говорит.. максимум что могу посоветовать - проверь типы параметров для функций:))


 
Lord Warlock   (2002-11-13 15:40) [2]

Я содрал из того же источника :)))

BufSize : Cardinal;
Entries : Cardinal;

и все заработает. Внимательнее смотри при отладке.


 
Борис   (2002-11-13 16:06) [3]

Большое спасибо, сейчас буду пробывать!


 
Mirag   (2002-11-14 11:28) [4]

Лови исходник - рабочий, я его компилил на D6-D7:
*************************************************
unit Net;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, Buttons, ImgList, ExtCtrls;

type
TNetForm = class(TForm)
ListView1: TListView;
ImageList1: TImageList;
Button1: TButton;
Edit1: TEdit;
Timer: TTimer;
Label1: TLabel;
Button2: TButton;
{ procedure FormShow(Sender: TObject);}
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure TimerTimer(Sender: TObject);
procedure FormCreate(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
Function FillNetLevel(xxx: PNetResource; list: TListItems) : Word;
function GetComputer:String;
end;

var
NetForm: TNetForm;
name_server:integer;
implementation
uses main,Info,Network_connect;
{$R *.DFM}

function TNetForm.FillNetLevel(xxx: PNetResource; List:TListItems): Word;
Type
PNRArr = ^TNRArr;
TNRArr = array[0..59] of TNetResource;
Var
x: PNRArr;
tnr: TNetResource;
I : integer;
EntrReq,
SizeReq,
twx: THandle;
WSName: string;
LI:TListItem;
begin

Result :=WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER, xxx, twx);
If Result = ERROR_NO_NETWORK Then Exit;
if Result = NO_ERROR then
begin
New(x);
EntrReq := 1;
SizeReq := SizeOf(TNetResource)*59;
while (twx <> 0) and
(WNetEnumResource(twx, EntrReq, x, SizeReq) <> ERROR_NO_MORE_ITEMS) do
begin
For i := 0 To EntrReq - 1 do
begin
Move(x^[i], tnr, SizeOf(tnr));
case tnr.dwDisplayType of
RESOURCEDISPLAYTYPE_SERVER:
begin
if tnr.lpRemoteName <> "" then
WSName:= tnr.lpRemoteName
else WSName:= tnr.lpComment;
LI:=list.Add;
LI.Caption:=copy(WSName,3,length(WSName)-2);
//list.Add(WSName);


end;
else FillNetLevel(@tnr, list);
end;
end;
end;
//Dispose(x);
WNetCloseEnum(twx);
end;
end;


{procedure TNetForm.FormShow(Sender: TObject);
begin
ListView1.Items.Clear;
FillNetLevel(nil,ListView1.Items);
end;}

function TNetForm.GetComputer: String;
begin
result:="";
if (ShowModal=mrok)and(ListView1.Selected<>nil) then result:=ListView1.Selected.Caption;
end;

procedure TNetForm.BitBtn2Click(Sender: TObject);
begin
ModalResult:=mrcancel;
end;

procedure TNetForm.BitBtn1Click(Sender: TObject);
begin
modalresult:=mrok;
end;



procedure TNetForm.Button1Click(Sender: TObject);
var i:integer;
j:integer;
name,k:string;
begin
try
ListView1.Items.Clear;
FillNetLevel(nil,ListView1.Items);
i:=ListView1.Items.Count;
edit1.Text:=IntToStr(i);
i:=ListView1.Items.Count;
edit1.Text:=IntToStr(i);



//i:=0;
if i=0 then begin
Messagebox(0,"Не найден ни один сетевой ресурс!"+#13#10+"Вероятно ваша сеть неисправна!"+#13#10+"Попробуйте перезагрузить компьютер.","Внимание!",MB_OK);
Main_form.Edit1.Text:="FALSE";
end;

if i>0 then begin
Messagebox(0,"Найдены сетевые ресурсы!"+#13#10+"Ваша сеть исправна!","Внимание!",MB_OK);
Main_form.Edit1.Text:="TRUE";
end;
button1.Enabled:=false;
except
messagebox(0,"Невозможно выполнить задачу","Внимание",MB_OK);
end;

end;



procedure TNetForm.Button2Click(Sender: TObject);
begin
close;
end;

procedure TNetForm.TimerTimer(Sender: TObject);
begin
if ListView1.Items.Count=0 then close;
end;

procedure TNetForm.FormCreate(Sender: TObject);
begin
button1.Enabled:=true;
end;

end.
*************************************************************



 
kalishenko stas   (2002-11-14 19:24) [5]

>>Mirag

А что за формы main,Info,Network_connect и что они делают?



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

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

Наверх





Память: 0.47 MB
Время: 0.007 c
8-37226
Aric
2002-09-25 15:44
2003.01.13
Как определить цвет пикселя в десятичном виде.


3-36946
Matvey
2002-12-18 11:54
2003.01.13
Запрос к БД выборка от начала месяца


4-37435
exchoper
2002-11-22 14:16
2003.01.13
пароль текущего пользователя


4-37422
maxim2
2002-11-22 13:24
2003.01.13
Почему не работает PlaySound


14-37364
Prooksius
2002-12-24 21:32
2003.01.13
Не могу поставить FIBPlus 4.77 под Delphi 7





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский