type
USER_INFO_0 = record
usri0_name: PWideChar;
end;
uBuf0 = ^USER_INFO_0;procedure TForm2.Button2Click(Sender: TObject);
var
buf: uBuf0;
begin
GetMem(buf, sizeof(USER_INFO_0));
try
NetUserGetInfo(nil, 'administrator', 0, buf);
Label1.Caption:=WideCharToStringbuf^.usri0_name);//<=============
//運行結果不對,應顯示administrator,但前面有些'??'之類的符號。
//不知為何...
finally
FreeMem(buf);
end;
end;
USER_INFO_0 = record
usri0_name: PWideChar;
end;
uBuf0 = ^USER_INFO_0;procedure TForm2.Button2Click(Sender: TObject);
var
buf: uBuf0;
begin
GetMem(buf, sizeof(USER_INFO_0));
try
NetUserGetInfo(nil, 'administrator', 0, buf);
Label1.Caption:=WideCharToStringbuf^.usri0_name);//<=============
//運行結果不對,應顯示administrator,但前面有些'??'之類的符號。
//不知為何...
finally
FreeMem(buf);
end;
end;
解决方案 »
- excelquerytable控件使用
- 如何把TCanvas的一部分复制到另外一个TCanvas里面, 此外如何把TCanvas的一部分输出到一个TBitmap里面
- 关于用Qreport显示dbgrid中的信息的问题
- 求助
- 如何共享Internet或者是局域网上的服务器上的Access数据库?
- Table或ADOTable 中属性中Filter 和Filtered的用法???
- 怎么能在table打开之后不提取数据库中的数据呢
- 怎么判断在服务器上是否在运行另一个EXE程序了
- 关于记录查找locate的用法
- 李维系统篇第二章MdDemo打不开(在windows2000下),出现如下提示:
- 如何批量更改文件名?
- TComboBox得奇怪问题
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
USER_INFO_0 = record
usri0_name: PWideChar;
end;
uBuf0 = ^USER_INFO_0; TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Result: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1; //釋放內存
function NetApiBufferFree(
Buffer: Pointer
): DWORD; stdcall; external 'netapi32.dll';//分配內存
//NetApiBufferAllocate(sizeof(USER_INFO_0),@buf);
function NetApiBufferAllocate(
ByteCount: dword;
Buffer: Pointer): DWORD; stdcall; external 'netapi32.dll';//取得用戶信息
//0/1/2/3/10/11/20
function NetUserGetInfo(
Server: PWideChar;
UserName: PWideChar;
Level: DWORD;
Buf: Pointer): Longint; stdcall; external 'netapi32.dll';
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
buf: uBuf0;
begin
//NetApiBufferAllocate(sizeof(USER_INFO_0),@buf );
GetMem(buf, sizeof(USER_INFO_0));
try
NetUserGetInfo(nil, pwidechar(WideString(Edit1.Text)), 0, buf);
Result.Caption := WideCharToString(buf^.usri0_name);
finally
FreeMem(buf);
//NetApiBufferFree(buf);
end;
end;end.
Label1.Caption := uinfo^.usri0_name
用user_info_1或其它格式也一樣。
我的OS是tra windows 2000+sp3
里面的函数就可以直接用了
没有出现你说的错误
執行果是:administrator前有'??'或其它亂碼字符,即
'?? administrator'或'?3 administrator'等
每次執行結果不一樣.那我再試試...
問題解決了,
NetUserGetInfo(nil, 'administrator', 0, buf);
改為
NetUserGetInfo(nil, 'administrator', 0, @buf);