Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перебросить файл на Net Shared Resource...

367
22 марта 2007 года
Meatcoins
303 / / 18.01.2006
 
Код:
.data
file db "\\Second\My2 (D)\Folder\2.txt",0h
..........
invoke CreateFile,offset file,GENERIC_WRITE,0h,0h,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0h
mov ebx,eax
mov edi,offset length
mov eax,[edi]
invoke WriteFile,ebx,offset buffer,eax,offset length2,0h
invoke CloseHandle,ebx

Требуется перекинуть файл в папку, открытую на общий доступ, причём точно не извесно имя компа, зато извесно название папки куда надо кинуть - Folder...
Second - это имя компа.
My2 (D) - это папка, открытая на общий доступ.
В таком виде всё работает, но надо автоматизировать...

Я правильно копаю???
WNetEnumResource
WNetOpenEnum
WNetCloseEnum
Или есть какие-то другие более нормальные способы???
367
22 марта 2007 года
Meatcoins
303 / / 18.01.2006
Код:
.data
net_buffer_size dd 400h
.data?
net_buffer NETRESOURCE <?,?,?,?,?,?,?,?>
...........
invoke WNetOpenEnum,RESOURCE_CONNECTED,RESOURCETYPE_DISK,0h,0h,offset net_handle
.if eax ==  NO_ERROR

mov esi,offset net_handle
mov ebx,[esi]
invoke WNetEnumResource,ebx,0FFFFFFFFh,offset net_buffer,offset net_buffer_size

.if eax == NO_ERROR        
invoke Beep,100h,400h
.endif
invoke MessageBox,0h,offset net_buffer.lpRemoteName,offset net_buffer.lpLocalName,MB_OK

;invoke MessageBox,0h,offset file,offset file,MB_OK
invoke WNetCloseEnum,ebx
.if eax == NO_ERROR        
invoke Beep,100h,100h
.endif
.endif

invoke ExitProcess,0h


Функция WNetEnumResource не работает!!! Почему?
367
23 марта 2007 года
Meatcoins
303 / / 18.01.2006
Сам себе вопросы задаю - сам на них и отвечаю! Забавно!
Нашёл в Internet'е:
Код:
unit NetShare;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    procedure FormCreate(Sender: TObject);
    procedure FindNet(root: ttreenode; res: PNetResource);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

 

procedure TForm1.FindNet(root: ttreenode; res: PNetResource);
var
  enum: cardinal;
  data: array[0..99] of TNetResource;
  cnt:cardinal;
  size: cardinal;
  i:integer;
begin
  i:=WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, res, enum);
  if i<>0 then exit;
  cnt:=$ffffffff;
  size:=sizeof(data);
  WNetEnumResource(enum, cnt, @data[0], size);
  for i:=0 to cnt-1 do begin
    FindNet(TreeView1.Items.AddChild(root, data.lpRemoteName), @data);
  end;
  WNetCloseEnum(enum);
  TreeView1.FullExpand;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FindNet(nil, nil);
end;

end.

Если кому понадобится, то вот как оно делается! А дальше анализируем имена - короче работа со строчками... Вобщем находим тот комп и ту паку которая нам нужна, а дальше:
 
Код:
.data
file db "\\Second\My2 (D)\Folder\2.txt",0h ;Пример...
..........
invoke CreateFile,offset file,GENERIC_WRITE,0h,0h,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0h
mov ebx,eax
mov edi,offset length
mov eax,[edi]
invoke WriteFile,ebx,offset buffer,eax,offset length2,0h
invoke CloseHandle,ebx

Вот и всё!
Только на форме надо нарисовать ещё TreeView! И всё будет работать!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог