Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

NetWkstaUserGetInfo - как правильно использовать? [D7, WinXP]


tytus ©   (2008-04-24 17:17:00) 

Доброго дня всем.
Вот пытаюсь разобраться с сией ф-ей.
Что получилось:
описание структуры
type
 PWKSTA_USER_INFO_1 = ^TWKSTA_USER_INFO_1;
 TWKSTA_USER_INFO_1 = record
   wkui1_username:LPWSTR;
   wkui1_logon_domain:LPWSTR;
   wkui1_oth_domains:LPWSTR;
   wkui1_logon_server:LPWSTR;
  end;

Описание функций:
functionNetWkstaUserGetInfo(reserved:PWChar; level:DWORD;
 bufptr:Pointer):DWORD;stdcall;external 'Netapi32.dll' Name 'NetWkstaUserGetInfo';
f unctionNetApiBufferAllocate(ByteCount:DWORD;
 Buffer:Pointer):DWORD;stdcall;external 'Netapi32.dll' Name 'NetApiBufferAllocate';
functionNetApiBufferFree(Buffer:Pointer):DWORD;stdcall;external 'Netapi32.dll' Name 'NetApiBufferFree';


procedureTForm1.Button1Click(Sender: TObject);
var
 WkUInfo:PWKSTA_USER_INFO_1;
begin
NetAPIBufferAllocate(1000,WkUInfo);
try
 NetWkstaUserGetInfo(nil,1,WkUInfo);
  RE1.Lines.Add(WideCharToString(WkUInfo^.wkui1_username));
finally
 NetApiBufferFree(WkUInfo);
end;

end;

... где RE1 - TRichEdit, так вот вылетает AV на строке RE1.Lines.Add(WideCharToString....

Подскажите, что неправильно делаю...


tytus   (2008-04-24 17:59:00) [1]

>han_malign ©   (24.04.08 17:53) [1]
... спасибо.
Читал MSDN2 - там нету строчки чтобы указатель= nil;
А так в принципе - почтивсе правильно...
насчет @WkUInfo - забыл...


han_malign   (2008-04-24 17:53:00) [2]


> Подскажите, что неправильно делаю..

если судить по примеру из MSDN - то все...
WkUInfo:= nil;
if( NetWkstaUserGetInfo(nil,1,@WkUInfo) = 0 )then begin
  if(WkUInfo <> nil)then
     RE1.Lines.Add(WideCharToString(WkUInfo^.wkui1_username));
end;
if(WkUInfo <> nil)then NetApiBufferFree(WkUInfo);


Наверх

Титульная страница Поиск, карта сайта Написать письмо