EnumCDs plug-in: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
m (Enumerate CD-ROM Drives moved to EnumCDs plug-in) |
(System plug-in alternative) |
||
Line 29: | Line 29: | ||
EnumCDs::next | EnumCDs::next | ||
Pop $0 | Pop $0 | ||
</highlight-nsis> | |||
== System plug-in alternative == | |||
<highlight-nsis> | |||
!include LogicLib.nsh | |||
!define /IfNDef DRIVE_CDROM 5 | |||
Section | |||
System::Call 'KERNEL32::GetLogicalDrives()i.r3' | |||
${ForEach} $2 0 26 + 1 | |||
IntOp $1 1 << $2 | |||
${If} $3 & $1 | |||
IntOp $1 65 + $2 | |||
IntFmt $1 "%c:\" $1 | |||
System::Call 'KERNEL32::GetDriveType(tr1)i.r4' | |||
${If} $4 = ${DRIVE_CDROM} | |||
DetailPrint "Drive $1" | |||
${EndIf} | |||
${EndIf} | |||
${Next} | |||
SectionEnd | |||
</highlight-nsis> | </highlight-nsis> | ||
[[Category:Plugins]] | [[Category:Plugins]] |
Latest revision as of 21:48, 7 June 2021
Author: cube (talk, contrib) |
EnumCDs.zip (3 KB)
Plug-in originally written by cube. Tweaked, compiled and uploaded by KiCHiK
Description
This plug-in will return every available CD-ROM drive on the user's machine one by one.
This plug-in requires NSIS 2.
Put EnumCDs.dll in the Plugins directory under the directory where you installed NSIS.
How To Use
To use it call EnumCDs::next with the /NOUNLOAD flag, and keep popping the results, the CD-ROM drive letters, one by one until the plug-in pushes "done". Then call EnumCDs::next once more without the /NOUNLOAD flag, pop the second "done" and you're done.
Example
again: EnumCDs::next /NOUNLOAD Pop $0 StrCmp $0 "error" done DetailPrint $0 StrCmp $0 "done" done again done: EnumCDs::next Pop $0
System plug-in alternative
!include LogicLib.nsh !define /IfNDef DRIVE_CDROM 5 Section System::Call 'KERNEL32::GetLogicalDrives()i.r3' ${ForEach} $2 0 26 + 1 IntOp $1 1 << $2 ${If} $3 & $1 IntOp $1 65 + $2 IntFmt $1 "%c:\" $1 System::Call 'KERNEL32::GetDriveType(tr1)i.r4' ${If} $4 = ${DRIVE_CDROM} DetailPrint "Drive $1" ${EndIf} ${EndIf} ${Next} SectionEnd