📄 setupapi.inc
字号:
ERROR STFERR
END IF
END SUB
'*************************************************************************
SUB AddToBillboardList (szDll$, idDlg%, szProc$, lTicks&) STATIC
'$ifdef DEBUG
if szDll$ = "" then
n% = 1
elseif idDlg% = 0 then
n% = 2
elseif szProc$ = "" then
n% = 3
elseif lTicks& <= 0 then
n% = 4
else
n% = 0
end if
if n% > 0 then
BadArgErr n%, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
end if
'$endif ''DEBUG
IF FAddToBillboardList(szDll$, idDlg%, szProc$, lTicks&) = 0 THEN
'$ifdef DEBUG
StfApiErr saeFail, "AddToBillboardList", szDll$+", "+STR$(idDlg%)+", "+szProc$+", "+STR$(lTicks&)
'$endif ''DEBUG
ERROR STFERR
END IF
END SUB
'*************************************************************************
SUB AddBlankToBillboardList (lTicks&) STATIC
'$ifdef DEBUG
if lTicks& <= 0 then
BadArgErr 1, "AddBlankToBillboardList", STR$(lTicks&)
end if
'$endif ''DEBUG
IF FAddToBillboardList(NULL, 0, NULL, lTicks&) = 0 THEN
'$ifdef DEBUG
StfApiErr saeFail, "AddBlankToBillboardList", STR$(lTicks&)
'$endif ''DEBUG
ERROR STFERR
END IF
END SUB
'*************************************************************************
SUB ClearBillboardList STATIC
IF FClearBillboardList = 0 THEN
'$ifdef DEBUG
StfApiErr saeFail, "ClearBillboardList", ""
'$endif ''DEBUG
ERROR STFERR
END IF
END SUB
'*************************************************************************
SUB OpenLogFile (szFile$, fAppend%) STATIC
'$ifdef DEBUG
if FValidFATPath(szFile$) = 0 then
BadArgErr 1, "OpenLogFile", szFile$+", "+STR$(fAppend%)
end if
'$endif ''DEBUG
IF FOpenLogFile(szFile$, fAppend%) = 0 THEN
'$ifdef DEBUG
StfApiErr saeFail, "OpenLogFile", szFile$+", "+STR$(fAppend%)
'$endif ''DEBUG
ERROR STFERR
END IF
END SUB
'*************************************************************************
SUB CloseLogFile STATIC
IF FCloseLogFile() = 0 THEN
'$ifdef DEBUG
StfApiErr saeFail, "CloseLogFile", ""
'$endif ''DEBUG
ERROR STFERR
END IF
END SUB
'*************************************************************************
SUB WriteToLogFile (szStr$) STATIC
IF FWriteToLogFile(szStr$, 1) = 0 THEN
'$ifdef DEBUG
StfApiErr saeFail, "WriteToLogFile", szStr$
'$endif ''DEBUG
ERROR STFERR
END IF
END SUB
''' -1 in either parameter will mean 'center in frame client area'
'*************************************************************************
SUB SetCopyGaugePosition (x%, y%) STATIC
ProSetPos x%, y%
END SUB
'*************************************************************************
FUNCTION FindFileUsingFileOpen (szFile$) STATIC AS STRING
szBuf$ = STRING$(512, 32)
wRet% = WFindFileUsingFileOpen(szFile$, szBuf$, len(szBuf$))
IF wRet% = 0 THEN
FindFileUsingFileOpen = szBuf$
ELSEIF wRet% = 1 THEN
FindFileUsingFileOpen = ""
ELSE
'$ifdef DEBUG
StfApiErr saeFail, "FindFileUsingFileOpen", szFile$
'$endif ''DEBUG
ERROR STFERR
END IF
szBuf$ = ""
END FUNCTION
'*************************************************************************
FUNCTION IsDirWritable (szDir$) STATIC AS INTEGER
IsDirWritable = FIsDirWritable(szDir$)
END FUNCTION
'*************************************************************************
FUNCTION IsFileWritable (szFile$) STATIC AS INTEGER
'$ifdef DEBUG
if FValidFATDir(szFile$) = 0 then
BadArgErr 1, "IsFileWritable", szFile$
end if
'$endif ''DEBUG
IsFileWritable = FIsFileWritable(szFile$)
END FUNCTION
'*************************************************************************
FUNCTION GetNthFieldFromIniString (szLine$, iField%) STATIC AS STRING
IF iField% < 1 THEN
'$ifdef DEBUG
StfApiErr saeFail, "GetNthFieldFromIniString", szLine$+", "+STR$(iField%)
'$endif ''DEBUG
ERROR STFERR
END IF
szStart$ = szLine$
IF iField% <> 1 THEN
FOR i% = 2 TO iField% STEP 1
iNew% = INSTR(szStart$, ",")
IF iNew% = 0 THEN
GetNthFieldFromIniString = ""
GOTO _GNFFIS_END
END IF
szStart$ = MID$(szStart$, (iNew% + 1))
NEXT
END IF
iNew% = INSTR(szStart$, ",")
IF iNew% <> 0 THEN
szStart$ = MID$(szStart$, 1, (iNew% - 1))
END IF
GetNthFieldFromIniString = LTRIM$(RTRIM$(szStart$))
_GNFFIS_END:
END FUNCTION
'*************************************************************************
FUNCTION GetWindowsMajorVersion STATIC AS INTEGER
GetWindowsMajorVersion = GetVersion() MOD 256
END FUNCTION
'*************************************************************************
FUNCTION GetWindowsMinorVersion STATIC AS INTEGER
GetWindowsMinorVersion = GetVersion() / 256
END FUNCTION
'*************************************************************************
FUNCTION GetWindowsMode STATIC AS INTEGER
GetWindowsMode = 0
longTmp& = GetWinFlags()
IF longTmp& AND WF_STANDARD THEN
GetWindowsMode = 1
ELSEIF longTmp& AND WF_ENHANCED THEN
GetWindowsMode = 2
END IF
END FUNCTION
'*************************************************************************
FUNCTION GetWindowsDir STATIC AS STRING
szBuf$ = string$(256, 32)
cbBuf% = GetWindowsDirectory(szBuf$, 256)
IF cbBuf% = 0 THEN
GetWindowsDir = ""
'$ifdef DEBUG
StfApiErr saeFail, "GetWindowsDir", ""
'$endif ''DEBUG
ERROR STFERR
ELSE
IF cbBuf% > 255 THEN
res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
ERROR STFERR
END IF
szBuf$ = RTRIM$(szBuf$)
IF MID$(szBuf$, 1, 1) = "\" THEN
'szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
szBuf$ = MID$(GetWindowsSysDir, 1, 2) + szBuf$
ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
szBuf$ = MID$(GetWindowsSysDir, 1, 3) + szBuf$
END IF
IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
szBuf$ = szBuf$ + "\"
END IF
GetWindowsDir = szBuf$
END IF
szBuf$ = ""
END FUNCTION
'*************************************************************************
FUNCTION GetWindowsSysDir STATIC AS STRING
szBuf$ = string$(256, 32)
cbBuf% = GetSystemDirectory(szBuf$, 256)
IF cbBuf% = 0 THEN
'$ifdef DEBUG
StfApiErr saeFail, "GetWindowsSysDir", ""
'$endif ''DEBUG
ERROR STFERR
ELSE
IF cbBuf% > 255 THEN
res% = DoMsgBox("Buffer Overflow", "MS-Setup Error", MB_ICONHAND+MB_OK)
ERROR STFERR
END IF
szBuf$ = RTRIM$(szBuf$)
IF MID$(szBuf$, 1, 1) = "\" THEN
szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
END IF
IF MID$(szBuf$, LEN(szBuf$), 1) <> "\" THEN
szBuf$ = szBuf$ + "\"
END IF
GetWindowsSysDir = szBuf$
END IF
szBuf$ = ""
END FUNCTION
'*************************************************************************
FUNCTION IsWindowsShared STATIC AS INTEGER
szWin$ = UCASE$(GetWindowsDir())
szSys$ = UCASE$(GetWindowsSysDir())
IF len(szWin$) = 0 THEN
'$ifdef DEBUG
StfApiErr saeFail, "IsWindowsShared", ""
'$endif ''DEBUG
ERROR STFERR
END IF
IF len(szSys$) <= len(szWin$) THEN
IsWindowsShared = 1
ELSE
szSys$ = MID$(szSys$, 1, len(szWin$))
IF szWin$ = szSys$ THEN
IsWindowsShared = 0
ELSE
IsWindowsShared = 1
END IF
END IF
END FUNCTION
'*************************************************************************
FUNCTION GetScreenWidth STATIC AS INTEGER
GetScreenWidth = GetSystemMetrics(SM_CXSCREEN)
END FUNCTION
'*************************************************************************
FUNCTION GetScreenHeight STATIC AS INTEGER
GetScreenHeight = GetSystemMetrics(SM_CYSCREEN)
END FUNCTION
'*************************************************************************
SUB SetRestartDir (szDir$) STATIC
'$ifdef DEBUG
if FValidFATDir(szDir$) = 0 then
BadArgErr 1, "SetRestartDir", szDir$
end if
'$endif ''DEBUG
IF FSetRestartDir(szDir$) = 0 THEN
'$ifdef DEBUG
StfApiErr saeFail, "SetRestartDir", szDir$
'$endif ''DEBUG
ERROR STFERR
END IF
END SUB
'*************************************************************************
FUNCTION RestartListEmpty STATIC AS INTEGER
IF FRestartListEmpty() = 0 THEN
RestartListEmpty = 0
ELSE
RestartListEmpty = 1
END IF
END FUNCTION
'*************************************************************************
FUNCTION ExitExecRestart STATIC AS INTEGER
ExitExecRestart = FExitExecRestart
END FUNCTION
'*************************************************************************
SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%) STATIC
'$ifdef DEBUG
if (FValidFATPath(szSrc$) = 0) AND (szSrc$ <> "") then
n% = 1
elseif FValidFATPath(szDst$) = 0 then
n% = 2
elseif FValidFATDir(szDir$) = 0 then
n% = 3
else
n% = 0
end if
if n% > 0 then
BadArgErr n%, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
end if
'$endif ''DEBUG
IF FPrependToPath (szSrc$, szDst$, szDir$, cmo%) = 0 THEN
'$ifdef DEBUG
StfApiErr saeFail, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
'$endif ''DEBUG
ERROR STFERR
END IF
END SUB
'**************************************************************************
'*************************** Error Handlers *****************************
'**************************************************************************
'$ifdef DEBUG
'**************************************************************************
SUB StfApiErr (nMsg%, szApi$, szArgs$) STATIC ''DEBUG only
select case nMsg%
case saeFail
lpText$ = "Failed"
case saeInit
lpText$ = "Already Initialized"
case saeNYI
lpText$ = "NYI"
case else
lpText$ = "Bad Arg "+LTRIM$(STR$(nMsg% - saeArg))
end select
lpText$ = lpText$ + ": "+ szApi$
if szArgs$ <> "" then
lpText$ = lpText + " (" + szArgs$ + ")"
end if
lpCaption$ = "MS-Setup Toolkit API Error"
res% = DoMsgBox(lpText$, lpCaption$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
print lpText$
lpText$ = ""
lpCaption$ = ""
END SUB
'**************************************************************************
SUB BadArgErr (nArg%, szApi$, szArgs$) STATIC ''DEBUG only
StfApiErr nArg%+saeArg, szApi$, szArgs$
ERROR STFERR
END SUB
'** REVIEW: Move this function into common lib (we'll need it there too)
'**************************************************************************
FUNCTION FValidInfSect (szSect$) STATIC AS INTEGER
if (szSect$ = "") OR (INSTR(1,szSect$,"]") <> 0) then
FValidInfSect = 0
else
FValidInfSect = 1
end if
END FUNCTION
'** REVIEW: Move this function into common lib (we'll need it there too)
'**************************************************************************
FUNCTION FValidIniFile (szFile$) STATIC AS INTEGER
if (FValidFATPath(szFile$) = 0) AND (UCASE$(szFile$) <> "WIN.INI") then
FValidIniFile = 0
else
FValidIniFile = 1
end if
END FUNCTION
'**************************************************************************
FUNCTION FValidDrive (szDrive$) STATIC AS INTEGER
if szDrive$ = "" then
FValidDrive = 0
elseif INSTR(1,szDrive$,"\\") = 1 then ' UNC path
FValidDrive = 1
elseif ASC(UCASE$(szDrive$)) - ASC("A") < 0 then
FValidDrive = 0
elseif ASC(UCASE$(szDrive$)) - ASC("A") > 25 then
FValidDrive = 0
elseif LEN(szDrive$) = 1 then
FValidDrive = 1
elseif INSTR(2,szDrive$,":\") = 2 then
FValidDrive = 1
elseif INSTR(1,szDrive$,":") = 2 then
FValidDrive = 1
else
FValidDrive = 0
end if
END FUNCTION
'$endif ''DEBUG
TRAP CleanupTrap From "MSSHLSTF.DLL"
End Trap
hSetup = InitSetup(COMMAND$)
ON ERROR GOTO QUIT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -