获取当前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", "", "计算器");
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;