我了解要设置本机的工作组要用API: NetWkstaSetInfo
看了MSDN的演示程序,也模仿做了,但运行结果始终不成功!
不知道哪位高手做过此例,助小弟一臂之力啊!
//设置工作组名称================================================================
function TKZNetwork.kzSetWorkGroupName(WorkGroupName: string): Integer;
var
PWorkInfo: ^WKSTA_INFO_102;
PWorkGroupName: PWideChar;
begin
GetMem(PWorkInfo, SizeOf(WKSTA_INFO_102));
GetMem(PWorkGroupName, SizeOf(PWorkGroupName)); StringToWideChar(WorkGroupName, PWorkGroupName, SizeOf(WorkGroupName)); PWorkInfo.wki102_platform_id := 0;
PWorkInfo.pwki102_computername := nil;
PWorkInfo.pwki102_langroup := 'kk';
PWorkInfo.wki102_ver_major := 0;
PWorkInfo.wki102_ver_minor := 0;
PWorkInfo.pwki102_lanroot := nil;
PWorkInfo.wki102_logged_on_users := 0; Result := NetWkstaSetInfo(nil, 102, PWorkInfo, nil); FreeMem(PWorkInfo);
FreeMem(PWorkGroupName);
end;
看了MSDN的演示程序,也模仿做了,但运行结果始终不成功!
不知道哪位高手做过此例,助小弟一臂之力啊!
//设置工作组名称================================================================
function TKZNetwork.kzSetWorkGroupName(WorkGroupName: string): Integer;
var
PWorkInfo: ^WKSTA_INFO_102;
PWorkGroupName: PWideChar;
begin
GetMem(PWorkInfo, SizeOf(WKSTA_INFO_102));
GetMem(PWorkGroupName, SizeOf(PWorkGroupName)); StringToWideChar(WorkGroupName, PWorkGroupName, SizeOf(WorkGroupName)); PWorkInfo.wki102_platform_id := 0;
PWorkInfo.pwki102_computername := nil;
PWorkInfo.pwki102_langroup := 'kk';
PWorkInfo.wki102_ver_major := 0;
PWorkInfo.wki102_ver_minor := 0;
PWorkInfo.pwki102_lanroot := nil;
PWorkInfo.wki102_logged_on_users := 0; Result := NetWkstaSetInfo(nil, 102, PWorkInfo, nil); FreeMem(PWorkInfo);
FreeMem(PWorkGroupName);
end;
解决方案 »
- 哪有 TChromium控件下载,或者请教怎么使用delphichromiumembedded?
- ODBC访问Access数据库,
- dbgrid问题
- 在TreeView(二级树)中查找所有相同的节点(假定Text相同)
- bmp图形旋转保存问题,要求处理速度要尽可能快的。
- access数据库中怎么样对图片进行存储和读出,而不是存取路径等方法,希望能直接存到数据库内,并尽量减小数据库大小?
- 简单问题?
- 喜欢去MOP看帖子,可不知道为什么最近上不去了....
- 怎么样保证应用程序不能重复启动。
- 关于自己编写控件的,哪位大侠做过,指点一下啊!
- 关于李维的《Delphi 5.x 分布式多层应用系统篇》中例子的问题(简单)
- 关于软件开发提成的事情。
var Buffer: Pointer): NetAPIStatus;
function NetWkstaSetInfo(ServerName: LPTSTR; Level: DWORD;
Buffer: Pointer; var Parm_Err: DWORD): NetAPIStatus;implementationconst
NetApi32 = 'netapi32.dll';{ Declare prototypes for the functions. }
type
TNetWkstaGetInfo = function (ServerName: LPTSTR; Level: DWORD;
var Buffer: Pointer): NetAPIStatus; stdcall;
TNetWkstaSetInfo = function (ServerName: LPTSTR; Level: DWORD;
Buffer: Pointer; var Parm_Err: DWORD): NetAPIStatus; stdcall;{ Variables to hold the pointers to the function entry points. }
var
FDllHandle: THandle = 0;
FNetWkstaGetInfo: TNetWkstaGetInfo;
FNetWkstaSetInfo: TNetWkstaSetInfo;{ Finds the function entry point, loading the library if required. }
function NetGetProc(ProcName: String): Pointer;
begin
Result := nil;
if FDllHandle = 0 then
begin
{ Check for Windows NT. }
if not IsWinNT then
Exit;
FDllHandle := LoadLibrary(NetApi32);
if FDllHandle = 0 then
raise Exception.CreateFmt('NetGetProc: Error loading library %s error
code %d', [NetApi32, GetLastError]);
end;
if Length(ProcName) > 0 then
begin
Result := GetProcAddress(FDllHandle, ProcName);
if Result = nil then
raise Exception.CreateFmt('NetGetProc: Procedure %s not found in %s
error code %d', [ProcName, NetApi32, GetLastError]);
end;
end;function NetWkstaGetInfo(ServerName: LPTSTR; Level: DWORD;
var Buffer: Pointer): NetAPIStatus;
begin
{ If this is the first time we call this function, then
find the function entry point in the library. }
if @FNetWkstaGetInfo = nil then
@FNetWkstaGetInfo := NetGetProc('NetWkstaGetInfo');
Result := FNetWkstaGetInfo(ServerName, Level, Buffer);
end;function NetWkstaSetInfo(ServerName: LPTSTR; Level: DWORD;
Buffer: Pointer; var Parm_Err: DWORD): NetAPIStatus;
begin
if @FNetWkstaSetInfo = nil then
@FNetWkstaSetInfo := NetGetProc('NetWkstaSetInfo');
Result := FNetWkstaSetInfo(ServerName, Level, Buffer, Parm_Err);
end;end.