关于autorun.inf,能者请进(100分)

  • 主题发起人 主题发起人 xaojgu
  • 开始时间 开始时间
X

xaojgu

Unregistered / Unconfirmed
GUEST, unregistred user!
OPEN =install.exe /autorun
ICON = ufhis.ico
1
 我现在想把光盘放到光驱后,打开光驱的盘符
(假设F盘为光驱的盘符,我想用资源管理器将它打开就可以),
问题是怎么获得光驱的盘符,具体应该怎么样写,怎样打开?
2
 如果我想当光盘放到光驱后,自动打开光盘中的一个文件夹,而不是一个可执行文件!
怎么办!
   请指点,谢谢


 

1.
写一个搜索驱动器的过程
function GetDrives : TDriveBits;
var
E,ct : Integer;
begin
E := SetErrorMode ( SEM_FAILCRITICALERRORS );
try
Integer ( Result ) := GetLogicalDrives;

// now check if each present drive is allowed to show

for ct := 0 to 25
do
if ct in Result
then
case GetDriveType ( PChar (Char (ct+Ord('A'))+':/'))
of
DRIVE_UNKNOWN : if not (drtUnknown in fDriveTypes)
then
Exclude ( Result , ct );
DRIVE_REMOVABLE : if not (drtRemovable in fDriveTypes)
then
Exclude ( Result , ct );
DRIVE_FIXED : if not (drtFixed in fDriveTypes)
then
Exclude ( Result , ct );
DRIVE_REMOTE : if not (drtRemote in fDriveTypes)
then
Exclude ( Result , ct );
DRIVE_CDROM : if not (drtCDRom in fDriveTypes)
then
Exclude ( Result , ct );
DRIVE_RAMDISK : if not (drtRamDisk in fDriveTypes)
then
Exclude ( Result , ct );
end;

finally
SetErrorMode ( E );
end;

end;

2.比如要打开 F:/Test目录
执行 winexec('explorer.exe F:/Test',sw_Show);


 
start .
主要这个“.”
 
因为你的程序就是在光盘上是不是?所以只需要将程序运行路径得到然后从中取得盘符即
可。

var
MainForm: TMainForm;
CDDisk: string;

procedure TMainForm.FormCreate(Sender: TObject);
begin
cddisk := ExtractFileDrive(extractfilepath(Paramstr(0)));
end;

cddisk变量存贮的即是光盘盘符。

然后,运行某程序,或是打开某文件,或是目录,你都可以用shellexecute函数。
(要在use中加入shellapi)
shellexecute(self.handle, nil, pchar(cddisk + '/Record-Server/Setup.exe'), nil, nil, SW_NORMAL);
这是一个例子目录是一样的。
这个函数是调用系统关联的程序来打开。所以,不管是程序、目录、或是一个类似于rtf,
txt之类的文件都是可以打开的。

 
多人接受答案了。
 

Similar threads

后退
顶部