通过程序来更改本机的工作级名称!高手高高手一定要相助啊(附源码)

SJSOFT 2004-04-18 07:41:01
我了解要设置本机的工作组要用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;
...全文
114 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
aiirii 2004-04-18
  • 打赏
  • 举报
回复
function NetWkstaGetInfo(ServerName: LPTSTR; Level: DWORD;
var Buffer: Pointer): NetAPIStatus;
function NetWkstaSetInfo(ServerName: LPTSTR; Level: DWORD;
Buffer: Pointer; var Parm_Err: DWORD): NetAPIStatus;

implementation

const
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.
hwz_119 2004-04-18
  • 打赏
  • 举报
回复
up
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧