例子:几个API函数示例
优质
小牛编辑
135浏览
2023-12-01
OutFile "常用API函数集.EXE" Name "常用API函数集" Section ;获得安装程序所在目录 System::Call 'kernel32::GetCurrentDirectory(i 1024,t .R1)' MessageBox MB_OK '安装程序所在目录:$R1' ;获得当前安装程序进程PID System::Call 'kernel32::GetCurrentProcessId()i .R0' MessageBox MB_OK '安装程序进程PID:$R0' ;获得磁盘卷标 StrCpy $R0 "C:\" System::Call 'kernel32::GetVolumeInformationA(t R0,t .R1,i 100,i .R3,i .R4,i .R5,t .R6,i 100)' MessageBox MB_OK '盘符:$R0$\n卷标:$R1$\n文件格式:$R6' ;设置磁盘卷标 StrCpy $R0 "C:\" ;盘符 StrCpy $R1 "系统" ;卷标 System::Call 'kernel32::SetVolumeLabelA(t R0,t R1)' ;对比两个文件的时间,如两个时间相等,就返回0;如R0小于R1,返回-1;如R1小于R0,返回1 StrCpy $R0 "C:\boot.ini" StrCpy $R1 "C:\AUTOEXEC.BAT" System::Call 'kernel32::CompareFileTime(t R0,t R1) i.R2' MessageBox MB_OK '文件$R0与$R1时间比较结果$R2' ;获取分区数目,结果显示是十进制,转换成二进制后 ;二进制位标志着存在哪些驱动器。其中,位0设为1表示驱动器A:存在于系统中; ;位1设为1表示存在B:驱动器;以次类推 System::Call 'kernel32::GetLogicalDrives()i.R1' MessageBox MB_OK '分区数目对应数:$R1' ;移动文件堆栈模式 Push "D:\1.txt" ;目标文件 Push "C:\1.txt" ;来源文件 System::Call "Kernel32::MoveFileExA(t s,t s,i 2)" ;移动文件变量模式 StrCpy $R0 "C:\A\1.txt" ;来源文件 StrCpy $R1 "C:\1.txt" ;目标文件 System::Call 'Kernel32::MoveFileA(t R1,t R0)' ;设置文件属性 StrCpy $R0 "C:\1.EXE" ;文件 StrCpy $R1 0x20 ;属性 System::Call 'kernel32::SetFileAttributesA(t R0,i 0x100)' ;属性表 ;0x20 FILE_ATTRIBUTE_ARCHIVE,存档 ;0x2 FILE_ATTRIBUTE_HIDDEN,隐藏 ;0x80 FILE_ATTRIBUTE_NORMAL,正常 ;0x2000 FILE_ATTRIBUTE_NOT_CONTENT_INDEXED,不索引 ;0x1000 FILE_ATTRIBUTE_OFFLINE,离线 ;0x1 FILE_ATTRIBUTE_READONLY,只读 ;0x4 FILE_ATTRIBUTE_SYSTEM,系统 ;0x100 FILE_ATTRIBUTE_TEMPORARY,;临时属性(一般无效) SectionEnd