winApi Sample

  获取当前Windows用户的登录名

function GetCurrentUserName : string;

 const
  cnMaxUserNameLen = 254;
 var
  sUserName : string;
  dwUserNameLen : Dword;
 begin
  dwUserNameLen := cnMaxUserNameLen-1;
  SetLength( sUserName, cnMaxUserNameLen );
  GetUserName(Pchar( sUserName ), dwUserNameLen );
  SetLength( sUserName, dwUserNameLen );
  Result := sUserName;
 end;

   Windows控制面板的访问

//在窗体的Private节中作ExecuteFile函数声明,并在实现部分书写如下代码:

 function TForm1.ExecuteFile(const Params: String): Thandle;
 var
  zFileName, zParams, zDir: array[0..79] of Char;
 begin
  Result := ShellExecute(Application.MainForm.Handle,
       nil,StrPCopy(zFileName, "c:/windows/rundll32.exe"),
       StrPCopy(zParams, Params),
       StrPCopy(zDir, "c:/windows/"),
       SW_SHOW);
 end;

  调用:

打开控制面板:ExecuteFile("shell32.dll,Control_RunDLL");
日期/时间设置:ExecuteFile("shell32.dll,Control_RunDLL timedate.cpl");
时区: ExecuteFile("shell32.dll,Control_RunDLL timedate.cpl,,/f");
ODBC: ExecuteFile("shell32.dll,Control_RunDLL odbccp32.cpl");
Outlook传真/电子邮件: ExecuteFile("shell32.dll,Control_RunDLL mlcfg32.cpl");
JoyStick: ExecuteFile("shell32.dll,Control_RunDLL joy.cpl,,0");
文件检索: ExecuteFile("shell32.dll,Control_RunDLL findfast.cpl");
区域设置: ExecuteFile("shell32.dll,Control_RunDLL intl.cpl,,0");
参数:0—区域设置页,1---数字页,2---货币页,3---时间页,4---日期页
打印机: ExecuteFile("shell32.dll,Control_RunDLL main.cpl @2");
字体: ExecuteFile("shell32.dll,Control_RunDLL main.cpl @3");
多媒体属性: ExecuteFile("shell32.dll,Control_RunDLL mmsys.cpl,,0");
参数0:取值[0..4],代表不同的选项页。
网络: ExecuteFile("shell32.dll,Control_RunDLL netcpl.cpl");
拨号网络: ExecuteFile("rnaui.dll,RnaWizard");
安装TCP/IP: ExecuteFile("setupapi.dll,InstallHinfSection MSTCP.Install 4 nettrans.inf");
显示属性: ExecuteFile("shell32.dll,Control_RunDLL desk.cpl,,0"); //取值[0..5]
添加删除程序: ExecuteFile("shell32.dll,Control_RunDLL appwiz.cpl,,1"); //取值[1,2,3]
Internet属性: ExecuteFile(,"shell32.dll,Control_RunDLL inetcpl.cpl,,0"); //取值[0..5]

  创建快捷方式

 uses ShlObj, ActiveX, ComObj, Registry;

 ...........................

 Procedure SetLink(FolderNo: Integer; ACmdFile, Parameter, LinkName: string);

 const
  Folder: array[0..2] of string = ("Desktop", "Start Menu", "Programs");
 var

  MyObject : Iunknown;
  MySLink : IShellLink;
  MyPFile : IPersistFile;
  FileName : string;
  Directory : string;
  WFileName : WideString;
  MyReg : TRegIniFile;

 begin

  MyObject := CreateComObject(CLSID_ShellLink);
  MySLink := MyObject as IShellLink;
  MyPFile := MyObject as IPersistFile;
  FileName := ACmdFile;
  with MySLink do

 begin

  SetArguments(Pchar(Parameter));
  SetPath(Pchar(FileName));
  SetWorkingDirectory(Pchar(ExtractFilePath(FileName)));
 end;

  MyReg := TRegIniFile.Create(
  "Software/MicroSoft/Windows/CurrentVersion/Explorer");
  if ((FolderNo $#@60; 0) or (FolderNo $#@62; 2)) then
  FolderNo := 0;
  Directory := MyReg.ReadString("Shell Folders", Folder[FolderNo],"");
  //CreateDir(Directory);
  WFileName := Directory + "/" + LinkName + ".lnk";
  MyPFile.Save(PWChar(WFileName),False);
  MyReg.Free;
 end;

例如:在桌面、开始菜单、程序菜单中添加计算器的快捷方式:

 SetLink(0, "c:/windows/calc.exe", "", "计算器");
 SetLink(1, "c:/windows/calc.exe", "", "计算器");
 SetLink(2, "c:/windows/calc.exe", "", "计算器");

通过IP地址得到机器名

function iptoname(ip:string):string;
var
  WSAData:TWSAData;
  p:PHostEnt;
  InetAddr:dword;
begin
  WSAStartup(2, WSAData);
  InetAddr:= inet_addr(PChar(IP));
try
   p:=GetHostByAddr(@InetAddr, Length(IP), PF_Inet);
   result:=p^.h_name;
  except
   result:=';
  end;
end;


 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值