home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 April A / Pcwk4a98.iso / Lotus / Notes46 / INSTALL.DSK / SETUPAPI.LSS < prev    next >
Text File  |  1996-12-03  |  138KB  |  3,763 lines

  1. ''/*********************************************************************
  2. ''
  3. ''   Module Name:   setupapi.lss
  4. ''
  5. ''   Module Code:   TOOLKIT
  6. ''
  7. ''   Author:              
  8. ''
  9. ''   Creation Date:  Aug 31, 1993
  10. ''
  11. ''   Copyright Lotus Development Corporation, (c) 1991
  12. ''
  13. ''
  14. ''  
  15. ''   Description: 
  16. ''     Lotus script file for common install
  17. ''   
  18. ''   
  19. ''   Additional authors:
  20. ''
  21. ''   Change History:
  22. ''   $Log:   //CIT/VOL1/CFLOG/logfiles/cominst/toolkit/setupapi.l@s  $
  23. '' 
  24. ''    Rev 1.95.2.1   15 Nov 1995 17:15:22   mhishinu
  25. '' Merged GC5 into FE5
  26. '' 
  27. ''    Rev 1.95.2.0   Oct 19 1995 14:18:12   cmoy
  28. '' merged fe3 to fe5
  29. '' 
  30. ''    Rev 1.95   22 Sep 1995 12:52:56   jdonohue
  31. '' Changed LdString string size limit back to 255 because of RED limitation
  32. '' 
  33. ''    Rev 1.94   22 Sep 1995 12:17:40   amontalv
  34. '' Check for focus before making change to Program Folder entry in tree from edit line.
  35. '' 
  36. ''    Rev 1.93   15 Sep 1995 17:02:38   glutz
  37. '' SetSybolValue will error out if the symbol name string is empty.
  38. '' 
  39. ''    Rev 1.92   13 Sep 1995 17:09:18   amontalv
  40. '' Moved Lot_RegAppPath from setupapi.lss to toolkit.lss and also added a parameter.
  41. '' Lot_RegAppPath now register the registry entry .
  42. '' 
  43. ''    Rev 1.91   06 Sep 1995 14:07:30   amontalv
  44. '' Have NT create App path entries in Windows so that when the new shell comes along
  45. '' this will be already set.
  46. '' 
  47. ''    Rev 1.90   02 Sep 1995 15:30:32   amontalv
  48. '' Added definition of Lot_CheckPrivileges() which lives in regwrap.c of lotussrc.
  49. '' 
  50. ''    Rev 1.89   31 Aug 1995 12:16:18   jdonohue
  51. '' Added GetDriveType prototype
  52. '' 
  53. ''    Rev 1.88   30 Aug 1995 19:10:42   amontalv
  54. '' Added code to create environment key if it is missing.  Also deal with existing
  55. '' path more intelligently.
  56. '' 
  57. ''    Rev 1.87   29 Aug 1995 08:35:42   jdonohue
  58. '' Fix WEDS2VENXL: Reg_AppPath use SYM_NETCOMPONENT for node
  59. '' 
  60. ''    Rev 1.86   24 Aug 1995 10:24:10   glutz
  61. '' Added function IsLongDirPath to check for long directory names.
  62. '' 
  63. ''    Rev 1.85   23 Aug 1995 16:42:08   amontalv
  64. '' Put a wrapper around EnableWindow to prevent trying to enable null window.
  65. '' 
  66. ''    Rev 1.84   22 Aug 1995 14:04:38   glutz
  67. '' IsDirWritable no longer gets the short path name.
  68. '' 
  69. ''    Rev 1.83   21 Aug 1995 15:41:52   amontalv
  70. '' Put name of registry keys into globals.lss
  71. '' 
  72. ''    Rev 1.82   16 Aug 1995 20:33:10   amontalv
  73. '' Added code to do error messages for registry.
  74. '' 
  75. ''    Rev 1.81   14 Aug 1995 16:47:16   mmeth
  76. '' Modified the functions:
  77. '' SetRegKeyValueEx-->SetRegKeyValueExS  and SetRegKeyValueExD
  78. '' and
  79. '' CreateRegKeyValueEx-->CreateRegKeyValueExS and CreateRegKeyValueExD
  80. '' therefroe the two places where these functions are called have been 
  81. '' modified accordingly.
  82. '' 
  83. ''    Rev 1.80   11 Aug 1995 16:47:50   mmeth
  84. '' FindWindows has changed on WIndows 32 to FindWindowsA
  85. '' 
  86. ''    Rev 1.79   11 Aug 1995 15:04:30   glutz
  87. '' DoesFileExist now calls Lot_DoesFileExist.
  88. '' 
  89. ''    Rev 1.78   09 Aug 1995 16:11:12   jdonohue
  90. '' Added GetLastError declaration
  91. '' 
  92. ''    Rev 1.77   09 Aug 1995 14:46:56   glutz
  93. '' DoesDirExist now calls Lot_DoesDirExist.
  94. '' 
  95. ''    Rev 1.76   08 Aug 1995 17:30:32   jdonohue
  96. '' Added declaration of FGetNameForResourceDLL
  97. '' 
  98. ''    Rev 1.75   03 Aug 1995 15:22:36   amontalv
  99. '' Checked in changes for setting system path on NT.
  100. '' 
  101. ''    Rev 1.74   01 Aug 1995 17:10:40   amontalv
  102. '' Added comments
  103. '' 
  104. ''    Rev 1.73   01 Aug 1995 14:21:44   amontalv
  105. '' Added Lot_RegAppPath().
  106. '' 
  107. ''    Rev 1.72   31 Jul 1995 18:28:24   amontalv
  108. '' Added routine to add App Paths to registry.
  109. '' 
  110. ''    Rev 1.71   27 Jul 1995 11:03:48   amontalv
  111. '' Added call Lot_AddLinkIconToFolder so that icon information can be sent
  112. '' when creating a shortcut.
  113. '' 
  114. ''    Rev 1.70   25 Jul 1995 10:32:04   amontalv
  115. '' Moved ShortPath check to inside of GetShortPathName.
  116. '' 
  117. ''    Rev 1.69   25 Jul 1995 10:16:36   amontalv
  118. '' Put in a check to make sure we got back a value from GetShortPath.
  119. '' 
  120. ''    Rev 1.68   20 Jul 1995 12:57:58   jdonohue
  121. '' Changed CopyFile to FCopyFile, which calls Win32 CopyFile instead of MS-Setup
  122. '' FCopyOneFile
  123. '' 
  124. ''    Rev 1.67   20 Jul 1995 10:50:00   glutz
  125. '' GetFreeSpaceForDrive now returns free space in K bytes, also accepts full
  126. '' paths with either drive letter or UNC volume.
  127. '' 
  128. ''    Rev 1.66   17 Jul 1995 12:17:10   jdonohue
  129. '' Removed trailing blanks from FOpen/CloseLogFile declaration
  130. '' 
  131. ''    Rev 1.65   17 Jul 1995 10:24:52   pdonahue
  132. '' changed registry functions to take variant type buffer.
  133. '' 
  134. ''    Rev 1.64   13 Jul 1995 15:50:14   jdonohue
  135. '' Changed Lot_CleanPath MBCS handling
  136. '' 
  137. ''    Rev 1.63   10 Jul 1995 12:03:54   glutz
  138. '' IsDirWritable now calls Lot_IsDirWritable
  139. '' 
  140. ''    Rev 1.62   29 Jun 1995 11:56:34   glutz
  141. '' Added wrappers for Lot_GetShortPath, Lot_regedit, Lot_CreateIniKeyValue
  142. '' 
  143. ''    Rev 1.61   26 Jun 1995 13:29:12   glutz
  144. '' Added wrapper for Lot_createDirectory
  145. '' 
  146. ''    Rev 1.60   23 Jun 1995 14:39:34   jdonohue
  147. '' Added declaration of FGetHandleForResourceDLL
  148. '' 
  149. ''    Rev 1.59   23 Jun 1995 08:22:16   jdonohue
  150. '' ShowWaitCursor and RestoreCursor does nothing
  151. '' 
  152. ''    Rev 1.58   22 Jun 1995 12:41:26   jdonohue
  153. '' Added FindResource Windows call
  154. '' 
  155. ''    Rev 1.57   21 Jun 1995 21:55:20   amontalv
  156. '' Added GetUserName to get network name as a last resort.
  157. '' 
  158. ''    Rev 1.56   19 Jun 1995 11:20:22   tveerapp
  159. '' Fixed InitFrame. When InitializeFrame returns a 0 , the cmd line
  160. '' processing failed on an argument. Quit script whern InitializeFRame returns
  161. '' 0.
  162. '' 
  163. ''    Rev 1.55   19 Jun 1995 10:27:32   amontalv
  164. '' Put in code to add function to New Folder button and Remove Folder button.  Also
  165. '' fixed some of the selection problems in the tree list.
  166. '' 
  167. ''    Rev 1.54   15 Jun 1995 19:40:46   amontalv
  168. '' Checked for and changed integers passed to C functions.  Changed to longs.
  169. '' 
  170. ''    Rev 1.53   14 Jun 1995 16:31:32   amontalv
  171. '' Fixed problem with NT Program Groups.  Look through the registry for
  172. '' program groups and display them for the user.  Most of the code
  173. '' is in C in lotusui.c.  Put calls to registry functions in regwrap.
  174. '' 
  175. ''    Rev 1.52   13 Jun 1995 11:21:30   jdonohue
  176. '' Fixed typos
  177. '' 
  178. ''    Rev 1.51   08 Jun 1995 16:37:08   jdonohue
  179. '' Added IDCANCEL constant
  180. '' 
  181. ''    Rev 1.50   08 Jun 1995 14:28:50   tveerapp
  182. '' Fixed SendlDlgItemMessageLb declaration.
  183. '' 
  184. ''    Rev 1.49   08 Jun 1995 14:20:36   tveerapp
  185. '' Added SendDlgItemMessageLb which is an alias to SendDlgItemMessage
  186. '' to fix spr # TVEN2PXSJ2.
  187. '' 
  188. ''    Rev 1.48   07 Jun 1995 13:03:24   jdonohue
  189. '' Added prototype for WhatPlatform for calling from script
  190. '' 
  191. ''    Rev 1.47   06 Jun 1995 15:59:16   amontalv
  192. '' We are experiencing problems with LotusScript when we fill buffers with
  193. '' nulls and then pass them to C routines.  For the time being, it is suggested
  194. '' that we fill our buffers with spaces.  To this end (and to make it
  195. '' easier to change back later) I have created a small LotusScript routine
  196. '' named CreateBuffer.  You use it any time you ordinarily would use
  197. '' STRING$(num, 0).  CreateBuffer() just needs the num, it decides what to
  198. '' fill the buffer with (sorry about the grammer).  Right now it fill the
  199. '' buffer with spaces.  Later we will change it back to nulls.  Also look
  200. '' at the routine NullTrim().  It will get rid of final nulls and spaces.
  201. '' You can use this when getting a buffer that has been changed or filled
  202. '' in a external C routine.
  203. '' 
  204. ''    Rev 1.46   05 Jun 1995 16:37:06   amontalv
  205. '' Made changes for migrating to LotusScript version 3.0.37.
  206. '' 
  207. ''    Rev 1.45   01 Jun 1995 15:23:12   pdonahue
  208. '' changed createregkeyvalue to check for 1 if the key exist rather than 0.
  209. '' 
  210. ''    Rev 1.44   01 Jun 1995 14:00:28   amontalv
  211. '' Needed to change the size of the passed arguments to correspond to 4 args
  212. '' no that's 5 args instead of 3.
  213. '' 
  214. ''    Rev 1.43   01 Jun 1995 13:13:14   amontalv
  215. '' Added CreateLink to create shortcuts.
  216. '' 
  217. ''    Rev 1.42   01 Jun 1995 12:39:00   jdonohue
  218. '' Added call to FKillNdialogs3 to replace Microsoft function
  219. '' 
  220. ''    Rev 1.41   01 Jun 1995 11:11:34   pdonahue
  221. '' modified Lot_GetRegKeyValue to pass dwtype,lpbuff and cbuf by reference.
  222. '' 
  223. ''    Rev 1.40   31 May 1995 14:55:56   pdonahue
  224. '' Removed invalid byval references in registry functions
  225. '' 
  226. ''    Rev 1.39   30 May 1995 15:24:56   mzgripce
  227. '' add some ByVal to the reg arguments, add headers to the reg functions and
  228. '' add _ in the name of two Reg functions declarations 
  229. '' 
  230. ''    Rev 1.38   30 May 1995 12:56:32   jdonohue
  231. '' Call to FdoDialog3 for multiple DLLs
  232. '' 
  233. ''    Rev 1.37   30 May 1995 09:26:02   amontalv
  234. '' Added back my changes.  Had not made changes to setupapi.lss to declare
  235. '' functions.
  236. '' 
  237. ''    Rev 1.36   26 May 1995 15:07:40   cmoy
  238. '' added A to regsetkey functions
  239. '' 
  240. ''    Rev 1.35   26 May 1995 14:15:42   pdonahue
  241. '' fixed lot_createregkey.
  242. '' 
  243. ''    Rev 1.34   22 May 1995 23:32:12   amontalv
  244. '' Added browse for Win 95 program folder.
  245. '' 
  246. ''    Rev 1.33   19 May 1995 14:43:42   pdonahue
  247. '' fixed registry function api.
  248. '' 
  249. ''    Rev 1.32   15 May 1995 17:33:24   amontalv
  250. '' Fixed SPR JHOH2RWGQX and JMOY2RXNKM.  Had wrong case on 'b' of function
  251. '' declaration of IsDlgButtonChecked().
  252. '' 
  253. ''    Rev 1.31   15 May 1995 11:38:50   jdonohue
  254. '' Added LdStringInit function to initialize SYM_CUIDLL with list of DLLs and
  255. '' make sure libraries loaded
  256. '' 
  257. ''    Rev 1.31   15 May 1995 11:16:10   jdonohue
  258. '' Added LdStringInit function to initialize SYM_CUIDLL with list of DLLs and 
  259. '' make sure libraries loaded
  260. '' 
  261. ''    Rev 1.30   11 May 1995 17:05:26   tveerapp
  262. '' Changed WriteToFile to a sub.
  263. '' 
  264. ''    Rev 1.29   02 May 1995 17:49:22   mzgripce
  265. '' fix syntax errors in the new feature code
  266. '' 
  267. ''    Rev 1.28   02 May 1995 12:53:02   cmoy
  268. '' Merged c2 into cf build
  269. '' 
  270. ''    Rev 1.29   19 Apr 1995 14:54:56   mheerman
  271. '' Changed the prototype for WinHelp to include the new suffix A to indicate
  272. '' the ASCII version of the call.
  273. '' 
  274. ''    Rev 1.27   21 Apr 1995 10:11:52   pdonahue
  275. '' added Registry wrappers
  276. '' 
  277. ''    Rev 1.28   14 Apr 1995 16:04:06   amontalv
  278. '' Delete space from FRestoreCursor name so that LotusScript could find it in the DLL.
  279. '' 
  280. ''    Rev 1.27   10 Apr 1995 17:54:54   amontalv
  281. '' Had to change some function definitions for script to find functions.
  282. '' 
  283. ''    Rev 1.26F  19 Apr 1995 14:56:58   jdonohue
  284. '' Changed LdString to look in a list of DLLs for string SYM_CUIDLL$
  285. '' Moved Lot_GetNthFieldFromIniString from toolkit.lss
  286. '' 
  287. ''    Rev 1.25   06 Apr 1995 21:02:52   amontalv
  288. '' Changed the exported functions parameters to match those of the new
  289. '' 32 bit functions.  I changed as little as I thought possible.
  290. '' 
  291. '' LSS 32 bit port merge changes.
  292. '' 
  293. ''    Rev 1.24   05 Apr 1995 19:52:54   amontalv
  294. '' Porting to 32 bit.
  295. '' 
  296. ''    Rev 1.23   31 Mar 1995 18:47:32   amontalv
  297. '' Had to make Script file names into Unicode before LotusScript would read
  298. '' them.
  299. '' 
  300. ''    Rev 1.22   07 Jan 1995 16:09:58   jplump
  301. '' 
  302. '' In InitFrame, commented out display of error message
  303. '' (SID_ERR_COMMANDLINE). This message is no longer 
  304. '' needed, especially since we now have a usage screen
  305. '' that will be displayed.
  306. '' SPR JHOH2MPJ6X
  307. '' 
  308. ''    Rev 1.21   05 Dec 1994 16:23:18   mzgripce
  309. '' added FWriteToFile() declaration and WriteToFile()wrapper.
  310. '' 
  311. ''    Rev 1.20   18 Nov 1994 16:12:48   amontalv
  312. '' Japan DBCS: Added some resources to
  313. '' 
  314. ''    Rev 1.19   26 Sep 1994 16:30:44   cmoy
  315. '' No change.
  316. '' 
  317. ''    Rev 1.18   10 Jun 1994 15:19:46   ddupre
  318. '' Removed MB_SYSTEMMODAL flag from ErrorMsg.
  319. '' 
  320. ''    Rev 1.17   10 Jun 1994 14:35:06   ddupre
  321. '' 
  322. '' Added MB_SYSTEMMODAL flag to ErrorMsg subroutine.
  323. '' 
  324. ''    Rev 1.16   03 Jun 1994 12:09:46   cmoy
  325. '' Modified CreateProgmanItem to accept accented characters.
  326. '' 
  327. ''    Rev 1.15   26 May 1994 18:35:18   cmoy
  328. '' 
  329. '' Added ProgmanManageGroup declaration.
  330. '' 
  331. ''    Rev 1.14   25 May 1994 17:05:06   mzgripce
  332. '' suppress the remove failed message 
  333. '' 
  334. ''    Rev 1.13   25 May 1994 14:39:38   cmoy
  335. '' 
  336. '' added FindWindow declaration
  337. '' 
  338. ''    Rev 1.12   12 May 1994 11:25:38   mmeth
  339. '' Adding Icons for Lic and Install and using DoMsgBox instead of MessageBox
  340. '' 
  341. ''    Rev 1.11   02 May 1994 16:09:52   ddupre
  342. '' Removed debug comments from PopAll subroutine. -- JGreene
  343. '' 
  344. '' 
  345. ''    Rev 1.10   02 May 1994 13:57:08   mmeth
  346. '' SetFoxu & GetParent are public
  347. '' 
  348. ''    Rev 1.8   24 Apr 1994 14:41:18   cmoy
  349. '' Fixed problem of "vanishing" Error Msg Box.
  350. '' Added MB_SYSTEMMODAL to specification of type of message box
  351. '' to put up in SUB ErrorMsg
  352. '' 
  353. ''    Rev 1.7   13 Apr 1994 09:43:02   cmoy
  354. '' 
  355. '' Added Rebooting return codes and declarations used in 
  356. '' the modification of AUTOEXEC.BAT
  357. '' 
  358. ''    Rev 1.6   08 Apr 1994 11:34:20   mmeth
  359. '' cleanedup error messages
  360. '' 
  361. ''    Rev 1.5   28 Mar 1994 17:03:48   thangv
  362. '' Added the ASSERT statement to LdString function. Removed the if.
  363. '' 
  364. ''    Rev 1.4   26 Mar 1994 16:33:18   p3
  365. '' Datalens Install changes for ODBC driver
  366. '' 
  367. ''    Rev 1.3   22 Mar 1994 12:37:00   mmeth
  368. '' added some more error handling for GetListItem and SetListItem
  369. '' 
  370. ''    Rev 1.2   17 Mar 1994 16:49:08   mmeth
  371. '' added check for LOTUS_DEBUG in shell
  372. '' 
  373. ''    Rev 1.1   16 Mar 1994 17:30:12   mmeth
  374. '' Mariana & Marcel Code Review
  375. '' 
  376. ''    Rev 1.0   11 Feb 1994 10:56:30   jbrodeur
  377. '' Initial Revision
  378. ''----------------------------------------------------------------------
  379. ''   Date     Vers. Pgmr  SPR#  Change
  380. ''----------------------------------------------------------------------
  381. '' 02-06-94   0047  MMETH       Added STFTOGGLE and MsgBox-> MessageB
  382. '' 02-03-94   0046  MMETH       Added logging facilities
  383. ''!
  384. '' 01-26-94   0045  MMETH       changed all string inits to string(...,0)
  385. '' 01-25-94   0044  DND         Move SetRestartDir, RestartListEmpty,
  386. ''                              and ExitExecRestart to toolkit.
  387. '' 01-24-94   0043  TQI              Capture all function returns (lsi36)
  388. '' 01-18-94   0042  MZ          move Lot_CleanPath() from toolkit.lss
  389. '' 01-18-94   0041  DND         Fix any functions that use paths. Also,
  390. ''                              always check for FALSE instead of 0.
  391. '' 01-11-94   0040  TQI         option declare
  392. '' 01-10-94   0039  MZ          Make all symbols Constants and put them
  393. ''                              in GLOBALS.LSS
  394. '' 01-07-94   0038  DND/MZ      Removed lots of functions
  395. '' 12-20-93   0037  tqi         Changes for LSI 34
  396. '' 12-07-93   0036  MZ          replace FRemoveDir() with Dave's function
  397. '' 12-06-93   0035  DND   25705 IsPathWritable Will now look backwards
  398. ''                              for a writable directory. The first directory
  399. ''                              it finds that exists will be the one that
  400. ''                              will be asked to be writable.      
  401. '' 12-05-93   0034  MMETH       Added IDYES & IDNO from windows.h
  402. '' 12-03-93   0033  DND         Fixed the fatal errors. Most all the ERROR
  403. ''                              statements were changed to STFQUIT
  404. '' 12-01-93   0032  DND         Added gStrK and gStrMB. Removed LdStr.
  405. ''                              MakePath returns lower case path. Commented
  406. ''                              out debug error messages in a bunch of
  407. ''                              Lot_ wrappers.
  408. '' 12-01-93   0031  DND         Moved some functions over from new.lss.
  409. ''                              No longer call DoErrMsg. Removed DoErrMsg.
  410. '' 11-24-93   0030  MMETH       Modified GetChapterFromKeyword parm list
  411. '' 11-24-93   0029  MMETH       Removed chptsize% param from Lot_GetChapterFromKeyword
  412. '' 11-22-93   0028  JKEDIA      Defined FIsKeywordInCopyList & FGetChapterFrom
  413. ''                              Keyword and wrote a wrapper for FGetChapterFromKeyWord.
  414. '' 11-19-93   0027  DND         Added the HELP_ constants for WinHelp
  415. '' 11-19-93   0026  MMETH       Replaced LdStrS with LdString
  416. '' 11-19-93   0025  MMETH       Added LdStrS: LdStr will go away soon
  417. '' 11-18-93   0024  JKK         Modified Lot_CheckPath to call FCleanFatPath
  418. ''                              instead of FValidFatPath.
  419. '' 11-17-93   0023  MZ          Added Lot_Dir()
  420. '' 11-15-93   0022  DND         Added F_KEYWORD
  421. '' 11-15-93   0021  JKEDIA      defined NULLSTROK,INVALIDSTROK,NULLSTRERR,INVALIDSTRERR.
  422. ''                              Defined a function called GetAbsPathFromIni.
  423. '' 11-11-93   0020  MMETH       change all Left$ -> RTRIM$ & inited all 
  424. ''                              bufs to 0 insetad of 32s; This fixes Soraya's bug!
  425. '' 11-09-93   0019  Jkedia      took out debugging print statements.
  426. '' 11-09-93   0018  JKEDIA      modified GetWindowsDir & GetWindowsSysdir to
  427. ''                              call FCleanFatPath.
  428. '' 11-08-93   0017  JKEDIA      modified IsWindowsShared to call FcleanFatPath.
  429. '' 11-08-93   0016  JKEDIA      added FCleanFatPath.
  430. '' 11-05-93   0015  MMETH       Uncommented prototype for SetCopyGaugePosition
  431. '' 11-04-93   0014  MMETH       Don't send a help dialog in PopupModelessDialog
  432. '' 11-03-93   0013  DND         Don't send a help dialog in PopupModalDialog
  433. '' 10-25-93   0012  DND         Fixed modeless dialogs. Added UM_PAINTMODELESS
  434. ''                              Added SendMessage prototype.
  435. '' 10-24-93   0011 JKEDIA       changed the value of USERNAME & COMPANYNAME.
  436. '' 10-23-93   0010 Jkedia       Added GetModuleHandle.
  437. '' 10-20-93   0009 Jkedia       Added 3 new prototype for reading and writing
  438. ''                              from .ri file. ReadUserRegistration,WriteUserRegistration,
  439. ''                              ReadSerialNumber. Alse added 2 new Public Const.
  440. ''                              Username & company name.
  441. '' 10-20-93   0010  MMETH      Added Call to FLotusInitialze(LSIRUN(4))
  442. '' 10-20-93   0009  MZ         Add protptype fpr BcfMod()
  443. '' 10-20-93   0009  MMETH       Added Some Window Prototypes
  444. ''                              also added FLotusInitialze LIB "lcomstf.dll"
  445. '' 10-19-93   0008  Jkedia      Added prototype for WinExec and IsdlgButtonChecked.
  446. '' 10-18-93   0007  CHyland     Added SID_ERR.... a whole bunch of them
  447. ''                              All ERrors, now resourced
  448. '' 10-15-93   0006  DND         Changed all the krnl386's to kernel.
  449. ''                              Make sure to only reference the windows
  450. ''                              DLL's by library name - NOT by filename!!!
  451. ''                              If you reference by filename then you will
  452. ''                              not work when krnl386.exe or os2k386.exe
  453. ''                              is loaded.
  454. '' 10-14-93   0005  DND         Added Lot_GetDriveFreeSpaceList
  455. '' 10-11-93   0003    MZ        OpenBookShelfFile,CloseBookShelfFile 
  456. ''                              AddBook
  457. ''  9-17-93   0002   JKK/TV     defined a prototype for LcbGetChapterCost.
  458. ' ' 9-9-93    0001    JKK       changed LSI(4) TO LSI_INFO(4) in RegisterCallBack.
  459. ''  8-12-93   0000              Initial Check-In
  460. ''  9-08-93                     add Lot_SetDateOfFile()
  461. ''
  462. ''----------------------------------------------------------------------
  463. ''
  464. ''*********************************************************************/
  465.  
  466. '**************************************************************************
  467. '*******************************  Windows API's  **************************
  468. '**************************************************************************
  469.  
  470. USE "RESOURCE"
  471. USE "GLOBALS"
  472. OPTION DECLARE
  473.  
  474. '**************************CONSTANTS************************************
  475. 'MS CONSTANTS
  476. '*************
  477. PUBLIC CONST LOGPIXELSY    = 90
  478. PUBLIC CONST SM_CXSCREEN   = 0
  479. PUBLIC CONST SM_CYSCREEN   = 1
  480. PUBLIC CONST WF_80x87      = 1024
  481. PUBLIC CONST PROCESSOR_INTEL_PENTIUM    = 586
  482. PUBLIC CONST PROCESSOR_INTEL_486        = 486
  483. PUBLIC CONST PROCESSOR_INTEL_386        = 386
  484. PUBLIC CONST PROCESSOR_INTEL_860        = 860
  485. PUBLIC CONST WF_STANDARD   = 16
  486. PUBLIC CONST WF_ENHANCED   = 32
  487. PUBLIC CONST USERNAME      = 514
  488. PUBLIC CONST COMPANYNAME   = 515
  489. PUBLIC CONST NULLSTROK     = 0           
  490. PUBLIC CONST INVALIDSTROK  = 0
  491. PUBLIC CONST NULLSTRERR    = 1
  492. PUBLIC CONST INVALIDSTRERR = 1
  493.  
  494. '' TRANSLATED FROM WINDOWS.H for WinHelp
  495. PUBLIC CONST HELP_CONTEXT      = 1
  496. PUBLIC CONST HELP_QUIT         = 2
  497. PUBLIC CONST HELP_INDEX        = 3
  498. PUBLIC CONST HELP_CONTENTS     = 3
  499. PUBLIC CONST HELP_HELPONHELP   = 4
  500. PUBLIC CONST HELP_SETINDEX     = 5
  501. PUBLIC CONST HELP_SETCONTENTS  = 5
  502. PUBLIC CONST HELP_CONTEXTPOPUP = 8
  503. PUBLIC CONST HELP_FORCEFILE    = 9
  504. PUBLIC CONST HELP_KEY          = 257   '0x0101
  505. PUBLIC CONST HELP_COMMAND      = 258   '0x0102
  506. PUBLIC CONST HELP_PARTIALKEY   = 261   '0x0105
  507. PUBLIC CONST HELP_MULTIKEY     = 513   '0x0201
  508. PUBLIC CONST HELP_SETWINPOS    = 515   '0x0203
  509.  
  510. '' DoMsgBox Flags
  511. PUBLIC CONST MB_SYSTEMMODAL      = 4096
  512. PUBLIC CONST MB_TASKMODAL        = 8192
  513. PUBLIC CONST MB_OK                            = &H0000
  514. PUBLIC CONST MB_OKCANCEL                   = &H0001
  515. PUBLIC CONST MB_ABORTRETRYIGNORE = &H0002
  516. PUBLIC CONST MB_YESNOCANCEL             = &H0003
  517. PUBLIC CONST MB_YESNO                      = &H0004
  518. PUBLIC CONST MB_RETRYCANCEL             = &H0005
  519. PUBLIC CONST MB_TYPEMASK                   = &H000F
  520.  
  521. PUBLIC CONST MB_ICONHAND                   = &H0010
  522. PUBLIC CONST MB_ICONQUESTION            = &H0020
  523. PUBLIC CONST MB_ICONEXCLAMATION = &H0030
  524. PUBLIC CONST MB_ICONASTERISK            = &H0040
  525. PUBLIC CONST MB_ICONMASK                   = &H00F0
  526.  
  527. PUBLIC CONST MB_ICONINFORMATION  = MB_ICONASTERISK
  528. PUBLIC CONST MB_ICONSTOP         = MB_ICONHAND
  529.  
  530. PUBLIC CONST IDCANCEL  = 2
  531. PUBLIC CONST IDYES     = 6
  532. PUBLIC CONST IDNO      = 7
  533.  
  534. '************MS Setup Constants 
  535. '
  536. ''Command Option Flags
  537.  
  538. PUBLIC CONST cmoVital       = 1
  539. PUBLIC CONST cmoCopy        = 2
  540. PUBLIC CONST cmoUndo        = 4
  541. PUBLIC CONST cmoRoot        = 8
  542. PUBLIC CONST cmoDecompress  = 16
  543. PUBLIC CONST cmoTimeStamp   = 32
  544. PUBLIC CONST cmoReadOnly    = 64
  545. PUBLIC CONST cmoBackup      = 128
  546. PUBLIC CONST cmoForce       = 256
  547. PUBLIC CONST cmoRemove      = 512
  548. PUBLIC CONST cmoOverwrite   = 1024
  549. PUBLIC CONST cmoAppend      = 2048
  550. PUBLIC CONST cmoPrepend     = 4096
  551. PUBLIC CONST cmoNone        = 0
  552. PUBLIC CONST cmoAll         = 65535
  553.  
  554. ''File Exist Modes
  555.  
  556. PUBLIC CONST femExists     = 0
  557. PUBLIC CONST femRead       = 1
  558. PUBLIC CONST femWrite      = 2
  559. PUBLIC CONST femReadWrite  = 3
  560.  
  561.  
  562. ''Read-Only Return Code
  563.  
  564. PUBLIC CONST ynrcNo         = 0
  565. PUBLIC CONST ynrcYes        = 1
  566. PUBLIC CONST ynrcErr1       = 2
  567. PUBLIC CONST ynrcErr2       = 3
  568. PUBLIC CONST ynrcErr3       = 4
  569. PUBLIC CONST ynrcErr4       = 5
  570. PUBLIC CONST ynrcErr5       = 6
  571. PUBLIC CONST ynrcErr6       = 7
  572. PUBLIC CONST ynrcErr7       = 8
  573. PUBLIC CONST ynrcErr8       = 9
  574. PUBLIC CONST ynrcErr9       = 10
  575.  
  576. ''Rebooting Return Codes
  577. PUBLIC CONST EW_RESTARTWINDOWS = 66 '0x42
  578. PUBLIC CONST EW_REBOOTSYSTEM   = 67 '0x43
  579.  
  580. ''Program Manager Configuration Codes
  581. PUBLIC CONST ADD_GRP = 0
  582.  
  583. ''General Return Codes
  584.  
  585. PUBLIC CONST grcOkay       = 0
  586. PUBLIC CONST grcNotOkay    = 1
  587. PUBLIC CONST grcUserQuit   = 48
  588.  
  589.  
  590. ''Ranges
  591.  
  592. ''CONST cbSymValMax = 8192
  593. PUBLIC CONST cbSymValMax = 512
  594.     ''REVIEW: symbol table will allow strings up to 8192 bytes
  595.     '' but we get Out of String Space wattdrvr error if we alloc
  596.     '' STR$() that big. (See GetSymbolValue and GetListItem)
  597.     '' We should look into using dynamic far alloc instead of
  598.     '' STR$ for large buffers.
  599.     '' NOTE: 8192 works okay with runtime wattdrvr, however.
  600.  
  601.  
  602. ''ON ERROR Error Codes
  603. PUBLIC CONST STFERR      = 1024   ''setup system error
  604. PUBLIC CONST STFQUIT     = 1025   ''user quit
  605. PUBLIC CONST STFTOGGLE  = 1026   ''Toggle Error; not fatal at all, just means couldn't toggle
  606.  
  607. PUBLIC CONST scmOff      = 0
  608. PUBLIC CONST scmOnIgnore = 1
  609. PUBLIC CONST scmOnFatal  = 2
  610.  
  611. 'Registration Database Constants
  612. PUBLIC CONST ERROR_SUCCESS        = 0
  613. PUBLIC CONST GRC_API_FAILED       = 104
  614. PUBLIC CONST REG_NONE&                       =    0    '* No value type
  615. PUBLIC CONST REG_SZ&                         =    1     '* Unicode nul terminated string
  616. PUBLIC CONST REG_EXPAND_SZ&                  =    2    '* Unicode nul terminated string
  617.                           '* (with environment variable references)
  618. PUBLIC CONST REG_BINARY&                     =    3     '* Free form binary
  619. PUBLIC CONST REG_DWORD&                      =    4     '* 32-bit number
  620. PUBLIC CONST REG_DWORD_LITTLE_ENDIAN&        =    4     '* 32-bit number (same as REG_DWORD)
  621. PUBLIC CONST REG_DWORD_BIG_ENDIAN&           =    5     '* 32-bit number
  622. PUBLIC CONST REG_LINK&                       =    6     '* Symbolic Link (unicode)
  623. PUBLIC CONST REG_MULTI_SZ&                   =    7     '* Multiple Unicode strings
  624. PUBLIC CONST REG_RESOURCE_LIST&              =   8     '* Resource list in the resource map
  625. PUBLIC CONST REG_FULL_RESOURCE_DESCRIPTOR&   =   9   '* Resource list in the hardware description
  626. PUBLIC CONST REG_RESOURCE_REQUIREMENTS_LIST& =   10 
  627.  
  628. PUBLIC CONST PRIVILEDGE_CHECKFLAG_REGSYSTEMPATH    = 1  '* flag passed to priviledge checking routine
  629.  
  630. PUBLIC CONST HKEY_CLASSES_ROOT&           =    &h80000000
  631. PUBLIC CONST HKEY_CURRENT_USER&           =    &h80000001
  632. PUBLIC CONST HKEY_LOCAL_MACHINE&          =    &h80000002
  633. PUBLIC CONST HKEY_USERS&                  =    &h80000003
  634. PUBLIC CONST HKEY_PERFORMANCE_DATA&       =    &h80000004
  635. PUBLIC CONST HKEY_PERFORMANCE_TEXT&       =    &h80000050
  636. PUBLIC CONST HKEY_PERFORMANCE_NLSTEXT&    =    &h80000060
  637.                                                              
  638.                                                              
  639. '* Registry Specific Access Rights.
  640.  
  641. PUBLIC CONST KEY_QUERY_VALUE         =  &h0001
  642. PUBLIC CONST KEY_SET_VALUE&          =  &h0002
  643. PUBLIC CONST KEY_CREATE_SUB_KEY&     =  &h0004
  644. PUBLIC CONST KEY_ENUMERATE_SUB_KEYS& =  &h0008
  645. PUBLIC CONST KEY_NOTIFY&             =  &h0010
  646. PUBLIC CONST KEY_CREATE_LINK&        =  &h0020
  647. PUBLIC CONST SYNCHRONIZE&            =  &h00100000
  648.  
  649. PUBLIC CONST REG_OPTION_RESERVED&    =      &h00000000  '* Parameter is reserved
  650.  
  651. PUBLIC CONST REG_OPTION_NON_VOLATILE&  =    &h00000000   '* Key is preserved
  652.                              '* when system is rebooted
  653.                                                    
  654. PUBLIC CONST REG_CREATED_NEW_KEY&      =    &h00000001   '* New Registry Key created
  655.  
  656. PUBLIC CONST REG_OPENED_EXISTING_KEY&  =    &h00000002   '* Existing Key opened
  657.  
  658. PUBLIC CONST REG_OPTION_VOLATILE&      =    &h00000001   '* Key is not preserved
  659.                                                                         '* when system is rebooted
  660.                                                   
  661. PUBLIC CONST REG_OPTION_CREATE_LINK&    =    &h00000002     '* Created key is a
  662.                                 '* symbolic link
  663.  
  664. PUBLIC CONST REG_OPTION_BACKUP_RESTORE& =    &h00000004     '* open for backup or restore
  665.                                '* special access rules
  666.                                '* privilege required
  667.  
  668. PUBLIC CONST REG_WHOLE_HIVE_VOLATILE&  =     &h00000001     '* Restore whole hive volatile
  669. PUBLIC CONST REG_REFRESH_HIVE&         =     &h00000002     '* Unwind changes to last flush
  670. PUBLIC CONST REG_NOTIFY_CHANGE_NAME&   =     &h00000001     '* Create or delete (child)
  671. PUBLIC CONST REG_NOTIFY_CHANGE_ATTRIBUTES& =  &h00000002    
  672. PUBLIC CONST REG_NOTIFY_CHANGE_LAST_SET&   =  &h00000004     '* time stamp
  673. PUBLIC CONST REG_NOTIFY_CHANGE_SECURITY&   =  &h00000008 
  674.  
  675. PUBLIC CONST STANDARD_RIGHTS_ALL& = &h001F0000
  676.  
  677.  
  678. PUBLIC CONST KEY_ALL_ACCESS  =   ((STANDARD_RIGHTS_ALL        OR _
  679.                   KEY_QUERY_VALUE            OR _
  680.                   KEY_SET_VALUE              OR _
  681.                   KEY_CREATE_SUB_KEY         OR _
  682.                   KEY_ENUMERATE_SUB_KEYS     OR _
  683.                   KEY_NOTIFY                 OR _
  684.                   KEY_CREATE_LINK)           AND _ 
  685.                  (NOT SYNCHRONIZE))
  686.  
  687.  
  688. ''LOGO
  689. PUBLIC CONST LOGO = 2
  690.  
  691. ''TEMP
  692. PUBLIC CONST SW_HIDE  =  0
  693. PUBLIC CONST SW_SHOW  =  5
  694. PUBLIC CONST SW_SHOWNORMAL = 1
  695. PUBLIC CONST SW_NORMAL = 1
  696. PUBLIC CONST SW_SHOWMINIMIZED= 2
  697. PUBLIC CONST SW_SHOWMAXIMIZED =  3
  698. PUBLIC CONST SW_MAXIMIZE =  3
  699. PUBLIC CONST SW_SHOWNOACTIVATE = 4
  700. PUBLIC CONST SW_MINIMIZE =  6
  701. PUBLIC CONST SW_SHOWMINNOACTIVE = 7
  702. PUBLIC CONST SW_SHOWNA =  8
  703. PUBLIC CONST SW_RESTORE = 9
  704.  
  705.  
  706. '************************GLOBAL VARIABLES*******************************
  707. 'MS GLOBAL VARIABLES
  708.  
  709. DIM     hSetup                  AS INTEGER
  710. %rem
  711. DIM     fFrameInit              AS INTEGER
  712. DIM     fInstallInit    AS INTEGER
  713. %endrem 
  714.  
  715. 'LOTUS GLOBAL VARIABLES
  716. DIM      g_strbuf               AS STRING
  717. PUBLIC gStrK         AS STRING
  718. PUBLIC gStrMB        AS STRING
  719. DIM fLdStringInit       AS INTEGER
  720.  
  721. '**************************C STRUCTS *************************
  722.  
  723. TYPE SysInfoType
  724.     dwOemId AS LONG
  725.     dwPageSize AS LONG
  726.     lpMinimumApplicationAddress AS LONG 
  727.     lpMaximumApplicationAddress AS LONG
  728.     dwActiveProcessorMask AS LONG
  729.     dwNumberOfProcessors AS LONG
  730.     dwProcessorType AS LONG
  731.     dwAllocationGranularity AS LONG
  732.     dwReserved AS LONG
  733. END TYPE
  734.  
  735. '**************************C CALLOUT PROTOTYPES*************************
  736.  
  737. '' SHOULD BE IN 123.LSS, but LotusScript BUG Prevented this!
  738. DECLARE PUBLIC FUNCTION OpenBookShelfFile LIB "FIXBOOK.DLL" ALIAS "_OpenBookShelfFile" (ByVal bookshelfname$) AS INTEGER
  739. DECLARE PUBLIC FUNCTION CloseBookShelfFile LIB "FIXBOOK.DLL" ALIAS "_CloseBookShelfFile" () AS INTEGER
  740. DECLARE PUBLIC FUNCTION AddBook LIB "FIXBOOK.DLL" ALIAS "_AddBook" (ByVal bookpath$, ByVal bookcaption$) AS INTEGER
  741.  
  742. ''this is a call into bcfmod.dll
  743. DECLARE PUBLIC FUNCTION BcfMod LIB "BCFMOD.DLL" ALIAS "_BcfMod@24" (ByVal BcfFilepath$, ByVal DNarg$, ByVal DLarg$, ByVal DCarg$, ByVal ACarg$, ByVal DDarg$) AS LONG
  744. '' NEW!! add call to modify ODBC.INI
  745. DECLARE PUBLIC FUNCTION FixODBCiniSources LIB "BCFMOD.DLL" ALIAS "_FixODBCiniSources@28" (ByVal IniFile$, ByVal Sect1$, ByVal Match1$, ByVal Repl1$, ByVal Sect2$, ByVal Match2$, ByVal Repl2$) AS LONG
  746. '' End NEW!!
  747.  
  748. '** Do to a limitation in LotusScript, these Lotus declarations needed
  749. '** to be here.
  750. DECLARE PUBLIC FUNCTION FCleanFATPath LIB "lcomstf.dll" ALIAS "_FCleanFATPath@4" (ByVal szPath$) AS INTEGER
  751. DECLARE PUBLIC FUNCTION FLotusInitialize LIB "lcomstf.dll" ALIAS "_FLotusInitialize@4" (ByVal sess&) AS INTEGER 
  752. DECLARE PUBLIC FUNCTION WhatPlatform LIB "lcomstf.dll" ALIAS "?WhatPlatform@@YGHXZ" () AS INTEGER 
  753. DECLARE PUBLIC FUNCTION Lot_IsDirWritable LIB "lcomstf.dll" ALIAS "_Lot_IsDirWritable@4" (ByVal szDir$) AS LONG
  754. DECLARE PUBLIC FUNCTION Lot_DoesDirExist LIB "lcomstf.dll" ALIAS "_Lot_DoesDirExist@4" (ByVal szDir$) AS LONG
  755. DECLARE PUBLIC FUNCTION Lot_DoesFileExist LIB "lcomstf.dll" ALIAS "_Lot_DoesFileExist@4" (ByVal szDir$) AS LONG
  756.  
  757. ''DBCS support partially from Japan
  758. DECLARE PUBLIC FUNCTION IsDBCSFirstAtOffset LIB "lcomstf.dll" ALIAS "_IsDBCSFirstAtOffset@8" (ByVal szStr$, ByVal cnt&) AS LONG
  759. DECLARE PUBLIC FUNCTION FDBCSCharLen LIB "lcomstf.dll" ALIAS "_FDBCSCharLen@8" (ByVal szStr$, ByVal offset&) AS LONG
  760.  
  761. ''Functions to configure AUTOEXEC.BAT
  762. DECLARE PUBLIC FUNCTION IsShareInstalled LIB "lcomstf.dll" ALIAS "_IsShareInstalled@0" () AS INTEGER
  763. DECLARE PUBLIC FUNCTION ExitWindows LIB "user32" ALIAS "ExitWindows" (ByVal dwReturnCode&, ByVal wReserved&) AS LONG
  764. DECLARE PUBLIC FUNCTION FindWindow LIB "user32" ALIAS "FindWindowA" (ByVal lpszClassName$, ByVal lpszWindow$) AS INTEGER
  765. DECLARE PUBLIC FUNCTION GetUserName LIB "advapi32" ALIAS "GetUserNameA" (ByVal lpszClassName$, wLength&) AS INTEGER
  766.  
  767. ''Functions to configure Program Manager
  768. DECLARE PUBLIC FUNCTION ProgmanManageGroup LIB "mscuistf.dll" ALIAS "_ProgmanManageGroup@8" (ByVal szName$, ByVal fDelete&) AS INTEGER 
  769. DECLARE PUBLIC FUNCTION FAddProgramGroupsToList LIB "mscuistf.dll" ALIAS "_FAddProgramGroupsToList@16" (ByVal hkeyRoot&, ByVal pszKeyName$, ByVal pszListName$, ByVal pszSuppressName$) AS LONG
  770. DECLARE PUBLIC FUNCTION FAddItemToTree LIB "mscuistf.dll" ALIAS "_FAddItemToTree@8" (ByVal hDlg&, ByVal szNewName$) AS INTEGER
  771. DECLARE PUBLIC FUNCTION FDeleteCurrTreeItem LIB "mscuistf.dll" ALIAS "_FDeleteCurrTreeItem@4" (ByVal hDlg&) AS INTEGER
  772. DECLARE PUBLIC FUNCTION FChangeNameCurrTreeItem LIB "mscuistf.dll" ALIAS "_FChangeNameCurrTreeItem@8" (ByVal hDlg&, ByVal NewName$) AS INTEGER
  773.  
  774. '********************** Microsoft DLL Api ***********************************
  775.  
  776. DECLARE PUBLIC FUNCTION FDoDialog LIB "msuilstf.dll" ALIAS "FDoDialogExt" (ByVal hwnd&, ByVal szDll$, ByVal Dlg&, ByVal szDlgProc$, _
  777.     ByVal HelpDlg&, ByVal szHelpProc$) AS INTEGER
  778. 'JMD
  779. DECLARE PUBLIC FUNCTION FDoDialog3 LIB "msshlstf.dll" ALIAS "_FDoDialog3@16" (ByVal hwnd&, ByVal szDll$, ByVal Dlg&, ByVal szDlgProc$ ) AS INTEGER
  780. DECLARE PUBLIC FUNCTION FKillNDialogs3 LIB "msshlstf.dll" ALIAS "_FKillNDialogs3@4" (ByVal n&) AS INTEGER
  781. DECLARE PUBLIC FUNCTION FKillNDialogs LIB "msuilstf.dll" ALIAS "FKillNDialogs" (ByVal n&) AS INTEGER
  782. DECLARE PUBLIC FUNCTION FGetHandleForResourceDLL LIB "msshlstf.dll" ALIAS "_FGetHandleForResourceDLL@8" (ByVal id%, ByVal t%) AS LONG
  783. DECLARE PUBLIC FUNCTION FGetNameForResourceDLL LIB "msshlstf.dll" ALIAS "_FGetNameForResourceDLL@16" (ByVal id%, ByVal t%, ByVal buffer$, ByVal bufsize&) AS LONG
  784.  
  785. DECLARE PUBLIC FUNCTION FCreateDir LIB "msinsstf.dll" ALIAS "FCreateDir" (ByVal szDir$, ByVal cmo&) AS LONG
  786. DECLARE PUBLIC FUNCTION FRemoveIniSection LIB "msinsstf.dll" ALIAS "FRemoveIniSection" (ByVal szFile$, ByVal szSect$, ByVal cmo&) AS LONG
  787. DECLARE PUBLIC FUNCTION FCreateIniKeyValue LIB "msinsstf.dll" ALIAS "FCreateIniKeyValue" (ByVal szFile$, ByVal szSect$, ByVal szKey$, ByVal szValue$, ByVal cmo&) AS LONG
  788. DECLARE PUBLIC FUNCTION FRemoveIniKey LIB "msinsstf.dll" ALIAS "FRemoveIniKey" (ByVal szFile$, ByVal szSect$, ByVal szKey$, ByVal cmo&) AS INTEGER
  789. DECLARE PUBLIC FUNCTION FCreateSysIniKeyValue LIB "msinsstf.dll" ALIAS "FCreateSysIniKeyValue" (ByVal szFile$, ByVal szSect$, ByVal szKey$, ByVal szValue$, ByVal cmo&) AS LONG
  790. DECLARE PUBLIC FUNCTION FCreateProgManGroup LIB "msinsstf.dll" ALIAS "FCreateProgManGroup" (ByVal szGroup$, ByVal szPath$, ByVal cmo&) AS INTEGER
  791. DECLARE PUBLIC FUNCTION FCreateProgManItem LIB "msinsstf.dll" ALIAS "FCreateProgManItem" (ByVal szGroup$, ByVal szItem$, ByVal szCmd$, ByVal cmo&) AS LONG
  792. DECLARE PUBLIC FUNCTION FShowProgManGroup LIB "msinsstf.dll" ALIAS "FShowProgManGroup" (ByVal szGroup$, ByVal szCmd$, ByVal cmo&) AS LONG
  793. DECLARE PUBLIC FUNCTION FStampResource LIB "msinsstf.dll" ALIAS "FStampResource" (ByVal szSect$, ByVal szKey$, ByVal szDst$,_
  794.     ByVal  wResType&, ByVal wResId&, ByVal szData$, ByVal cbData&) AS LONG
  795. DECLARE PUBLIC FUNCTION FAddDos5Help LIB "msinsstf.dll" ALIAS "FAddDos5Help" (ByVal szProgName$, ByVal szProgHelp$, ByVal cmo&) AS LONG
  796. 'JMD: obsolete: DECLARE PUBLIC FUNCTION FCopyOneFile LIB "msinsstf.dll" ALIAS "FCopyOneFile" (ByVal szSrc$, ByVal szDest$, ByVal cmo&, ByVal fAppend&) AS LONG
  797. DECLARE PUBLIC FUNCTION YnrcRemoveFile LIB "msinsstf.dll" ALIAS "YnrcRemoveFile" (ByVal szFullPathSrc$, ByVal cmo&) AS LONG
  798. DECLARE PUBLIC FUNCTION YnrcBackupFile LIB "msinsstf.dll" ALIAS "YnrcBackupFile" (ByVal szFullPath$, ByVal szBackup$, ByVal cmo&) AS LONG
  799. DECLARE PUBLIC FUNCTION FInitializeInstall LIB "msinsstf.dll" ALIAS "FInitializeInstall" ( ByVal hinst&, ByVal hwndFrame&) AS LONG
  800. DECLARE PUBLIC FUNCTION WFindFileUsingFileOpen LIB "msinsstf.dll" ALIAS "WFindFileUsingFileOpen" (ByVal szFile$, ByVal szBuf$, ByVal cbBuf&) AS LONG
  801. DECLARE PUBLIC FUNCTION FIsDirWritable LIB "msinsstf.dll" ALIAS "FIsDirWritable" (ByVal szDir$) AS LONG
  802. DECLARE PUBLIC FUNCTION FIsFileWritable LIB "msinsstf.dll" ALIAS "FIsFileWritable" (ByVal szFile$) AS LONG
  803. DECLARE PUBLIC FUNCTION SetDecompMode LIB "msinsstf.dll" ALIAS "SetDecompMode" (ByVal fMode&) AS LONG
  804. DECLARE PUBLIC FUNCTION GetDecompMode LIB "msinsstf.dll" ALIAS "GetDecompMode" () AS LONG
  805. DECLARE PUBLIC FUNCTION FPrependToPath LIB "msinsstf.dll" ALIAS "FPrependToPath" (ByVal szSrc$, ByVal szDst$, ByVal szDir$, ByVal cmo&) AS LONG
  806. DECLARE PUBLIC FUNCTION SetTimeValue LIB "msinsstf.dll" ALIAS "SetTimeValue" (ByVal usHours&, ByVal usMinutes&, ByVal usSeconds&) AS LONG
  807.  
  808. DECLARE PUBLIC FUNCTION HShowWaitCursor LIB "msshlstf.dll" ALIAS "HShowWaitCursor" () AS LONG
  809. DECLARE PUBLIC FUNCTION FRestoreCursor  LIB "msshlstf.dll" ALIAS "FRestoreCursor" (ByVal hPrev&) AS LONG
  810. DECLARE PUBLIC FUNCTION FSetBitmap LIB "msshlstf.dll" ALIAS "FSetBitmap" (ByVal szDll$, ByVal Bitmap&) AS LONG
  811. DECLARE PUBLIC FUNCTION FSetAbout LIB "msshlstf.dll" ALIAS "FSetAbout" (ByVal szAbout1$, ByVal szAbout2$) AS LONG
  812. DECLARE PUBLIC FUNCTION FSetSymbolValue LIB "msshlstf.dll" ALIAS "FSetSymbolValue" (ByVal szSymbol$,ByVal szValue$) AS LONG
  813. DECLARE PUBLIC FUNCTION InitializeFrame LIB "msshlstf.dll" ALIAS "InitializeFrame" (ByVal szCmdLine$) AS LONG
  814. DECLARE PUBLIC FUNCTION HwndFrame LIB "msshlstf.dll" ALIAS "HwndFrame" () AS LONG
  815. DECLARE PUBLIC FUNCTION HinstFrame LIB "msshlstf.dll" ALIAS "HinstFrame" () AS LONG
  816. DECLARE PUBLIC FUNCTION FWriteToFile LIB "msshlstf.dll" ALIAS "FWriteToFile" (ByVal szFile$, ByVal sz$) AS INTEGER
  817. DECLARE PUBLIC FUNCTION CreateRegKeyEx LIB "msshlstf.dll" ALIAS "CreateRegKeyEx" (ByVal hKey&, ByVal szKey$) AS LONG
  818. DECLARE PUBLIC FUNCTION CreateRegKeyValueExD LIB "msshlstf.dll"ALIAS "CreateRegKeyValueExD" (ByVal hKey&,ByVal szSubKey$,ByVal szValueName$,ByVal dwType&, ByVal dwDataLen&, ByVal dwValueData&) AS LONG
  819. DECLARE PUBLIC FUNCTION CreateRegKeyValueExS LIB "msshlstf.dll"ALIAS "CreateRegKeyValueExS" (ByVal hKey&,ByVal szSubKey$,ByVal szValueName$,ByVal dwType&, ByVal dwDataLen&, ByVal szValueData$) AS LONG
  820.  
  821. DECLARE PUBLIC FUNCTION DeleteRegKeyEx LIB "msshlstf.dll" ALIAS "DeleteRegKeyEx" (ByVal hKey&,ByVal szKey$) AS LONG
  822. DECLARE PUBLIC FUNCTION DeleteAllSubKeys LIB "msshlstf.dll" ALIAS "DeleteAllSubKeys" (ByVal hKey&, ByVal szKey$) AS LONG
  823. DECLARE PUBLIC FUNCTION DoesRegKeyExistEx LIB "msshlstf.dll" ALIAS "DoesRegKeyExistEx" (ByVal hKey&, ByVal szKey$) AS LONG
  824. DECLARE PUBLIC FUNCTION GetRegKeyValueEx LIB "msshlstf.dll" ALIAS "GetRegKeyValueEx" (ByVal hKey&,ByVal szSubKey$,ByVal szValueName$, dwType&, ByVal cbBuf&, lpdwBuf&, ByVal lpBuf$) AS LONG
  825. DECLARE PUBLIC FUNCTION SetRegKeyValueExD LIB "msshlstf.dll" ALIAS "SetRegKeyValueExD" (ByVal hKey&,ByVal szSubKey$,ByVal szValueName$, dwType&, ByVal dwValueData&, ByVal dwDataLen& ) AS LONG
  826. DECLARE PUBLIC FUNCTION SetRegKeyValueExS LIB "msshlstf.dll" ALIAS "SetRegKeyValueExS" (ByVal hKey&,ByVal szSubKey$,ByVal szValueName$, dwType&, ByVal szValueData$, ByVal dwDataLen& ) AS LONG
  827.  
  828. DECLARE PUBLIC FUNCTION Lot_CheckPriviledges LIB "msshlstf.dll" ALIAS "Lot_CheckPriviledges" (ByVal checkflags&) AS LONG
  829.  
  830. DECLARE PUBLIC FUNCTION FValidDir LIB "mscomstf.dll" ALIAS "FValidDir" (ByVal szDir$) AS INTEGER
  831. DECLARE PUBLIC FUNCTION FValidFATDir LIB "mscomstf.dll" ALIAS "FValidDir" (ByVal szDir$) AS INTEGER
  832. DECLARE PUBLIC FUNCTION CchlValidSubPath LIB "mscomstf.dll" ALIAS "CchlValidSubPath" (ByVal szPath$) AS LONG
  833. DECLARE PUBLIC FUNCTION CchlValidFATSubPath LIB "mscomstf.dll" ALIAS "CchlValidSubPath" (ByVal szPath$) AS LONG
  834. DECLARE PUBLIC FUNCTION EercErrorHandler LIB "mscomstf.dll" ALIAS "EercErrorHandler" (ByVal grc&,ByVal fVital&,ByVal  sz1$,ByVal  sz2$,ByVal  sz3$) AS INTEGER
  835. DECLARE PUBLIC FUNCTION FValidFATPath LIB "mscomstf.dll" ALIAS "FValidPath" (ByVal szPath$) AS INTEGER
  836. DECLARE PUBLIC FUNCTION FValidPath LIB "mscomstf.dll" ALIAS "FValidPath" (ByVal szPath$) AS INTEGER
  837. DECLARE PUBLIC FUNCTION FAddSpecialFileToCopyList LIB "mscomstf.dll" ALIAS "FAddSpecialFileToCopyList" (ByVal szSect$, ByVal szKey$, ByVal szSrc$, ByVal szDest$) AS LONG
  838. DECLARE PUBLIC FUNCTION FRemoveSymbol LIB "mscomstf.dll" ALIAS "FRemoveSymbol" (ByVal szSym$) AS LONG
  839. DECLARE PUBLIC FUNCTION CbGetSymbolValue LIB "mscomstf.dll" ALIAS "CbGetSymbolValue" (ByVal szSymbol$, ByVal szValue$,ByVal Length&) AS LONG
  840. DECLARE PUBLIC FUNCTION UsGetListLength LIB "mscomstf.dll" ALIAS "UsGetListLength" (ByVal szSymbol$) AS INTEGER
  841. DECLARE PUBLIC FUNCTION CbGetListItem LIB "mscomstf.dll" ALIAS "CbGetListItem" (ByVal szListSymbol$, ByVal n&, ByVal szListItem$, ByVal cbMax&) AS LONG
  842. DECLARE PUBLIC FUNCTION FAddListItem LIB "mscomstf.dll" ALIAS "FAddListItem" (ByVal szListSymbol$,ByVal szListItem$) AS LONG
  843. DECLARE PUBLIC FUNCTION FReplaceListItem LIB "mscomstf.dll" ALIAS "FReplaceListItem" (ByVal szListSymbol$, ByVal n&, ByVal szListItem$) AS LONG
  844. DECLARE PUBLIC FUNCTION FOpenLogFile    LIB "mscomstf.dll" ALIAS "FOpenLogFile" (ByVal szFile$, ByVal fAppend&) AS LONG
  845. DECLARE PUBLIC FUNCTION FCloseLogFile   LIB "mscomstf.dll" ALIAS "FCloseLogFile" () AS LONG
  846. DECLARE PUBLIC FUNCTION FWriteToLogFile LIB "mscomstf.dll" ALIAS "FWriteToLogFile" (ByVal sz$, ByVal fRequire&) AS LONG
  847. DECLARE PUBLIC FUNCTION DoMsgBox LIB "lcomstf.dll" ALIAS "_DoMsgBox@12" (ByVal lpText$,ByVal lpCaption$,ByVal wType&) AS LONG
  848. DECLARE PUBLIC FUNCTION FParseFATPathIntoPieces LIB "mscomstf.dll" ALIAS "FParsePathIntoPieces" (ByVal szPath$, ByVal szVol$, ByVal cbVol&, ByVal szDir$, ByVal cbDir&, ByVal szFile$, ByVal cbFile&) AS INTEGER
  849. DECLARE PUBLIC FUNCTION FParsePathIntoPieces LIB "mscomstf.dll" ALIAS "FParsePathIntoPieces" (ByVal szPath$, ByVal szVol$, ByVal cbVol&, ByVal szDir$, ByVal cbDir&, ByVal szFile$, ByVal cbFile&) AS INTEGER
  850.  
  851. DECLARE PUBLIC FUNCTION CbGetVersionOfFile LIB "msdetstf.dll" ALIAS "CbGetVersionOfFile" (ByVal szFile$,ByVal  szBuf$,ByVal cbBuf&) AS LONG
  852. DECLARE PUBLIC FUNCTION LGetVersionNthField LIB "msdetstf.dll" ALIAS "LGetVersionNthField" (ByVal szVersion$,ByVal nField&) AS LONG
  853. DECLARE PUBLIC FUNCTION LcbGetSizeOfFile LIB "msdetstf.dll" ALIAS "LcbGetSizeOfFile" (ByVal szFile$) AS LONG
  854. DECLARE PUBLIC FUNCTION FGetValidDrivesList LIB "msdetstf.dll" ALIAS "FGetValidDrivesList" (ByVal szSymbol$) AS LONG
  855. DECLARE PUBLIC FUNCTION FGetLocalHardDrivesList LIB "msdetstf.dll" ALIAS "FGetLocalHardDrivesList" (ByVal szSymbol$) AS LONG
  856. DECLARE PUBLIC FUNCTION FGetRemovableDrivesList LIB "msdetstf.dll" ALIAS "FGetRemovableDrivesList" (ByVal szSymbol$) AS LONG
  857. DECLARE PUBLIC FUNCTION FGetNetworkDrivesList LIB "msdetstf.dll" ALIAS "FGetNetworkDrivesList" (ByVal szSymbol$) AS LONG
  858. DECLARE PUBLIC FUNCTION LcbTotalDrive LIB "msdetstf.dll" ALIAS "LcbTotalDrive" (ByVal nDrive&) AS LONG
  859. DECLARE PUBLIC FUNCTION LcbFreeDrive LIB "msdetstf.dll" ALIAS "LcbFreeDrive" (ByVal nDrive&) AS LONG
  860. DECLARE PUBLIC FUNCTION FIsValidDrive LIB "msdetstf.dll" ALIAS "FIsValidDrive" (ByVal nDrive&) AS LONG
  861. DECLARE PUBLIC FUNCTION FIsLocalHardDrive LIB "msdetstf.dll" ALIAS "FIsLocalHardDrive" (ByVal nDrive&) AS LONG
  862. DECLARE PUBLIC FUNCTION FIsRemoveDrive LIB "msdetstf.dll" ALIAS "FIsRemoveDrive" (ByVal nDrive&) AS LONG
  863. DECLARE PUBLIC FUNCTION FIsRemoteDrive LIB "msdetstf.dll" ALIAS "FIsRemoteDrive" (ByVal nDrive&) AS LONG
  864. DECLARE PUBLIC FUNCTION FDirExists LIB "msdetstf.dll" ALIAS "FDirExists" (ByVal szDir$) AS LONG
  865. DECLARE PUBLIC FUNCTION FDoesFileExist LIB "msdetstf.dll" ALIAS "FDoesFileExist" (ByVal szFileName$, ByVal mode&) AS LONG
  866. DECLARE PUBLIC FUNCTION CbGetDateOfFile LIB "msdetstf.dll" ALIAS "CbGetDateOfFile" (ByVal szFile$, ByVal szBuf$, ByVal cbBuf&) AS LONG
  867. DECLARE PUBLIC FUNCTION FDoesIniSectionExist LIB "msdetstf.dll" ALIAS "FDoesIniSectionExist" (ByVal szFile$, ByVal szSect$) AS LONG
  868. DECLARE PUBLIC FUNCTION FDoesIniKeyExist LIB "msdetstf.dll" ALIAS "FDoesIniKeyExist" (ByVal szFile$, ByVal szSect$, ByVal szKey$) AS LONG
  869. DECLARE PUBLIC FUNCTION CbGetIniKeyString LIB "msdetstf.dll" ALIAS "CbGetIniKeyString" (ByVal szFile$, ByVal szSect$, ByVal szKey$, ByVal szBuf$, ByVal cbBuf&) AS LONG
  870. DECLARE PUBLIC FUNCTION WGetDOSMajorVersion LIB "msdetstf.dll" ALIAS "WGetDOSMajorVersion" () AS LONG
  871. DECLARE PUBLIC FUNCTION WGetDOSMinorVersion LIB "msdetstf.dll" ALIAS "WGetDOSMinorVersion" () AS LONG
  872. DECLARE PUBLIC FUNCTION CbGetEnvVariableValue LIB "msdetstf.dll" ALIAS "CbGetEnvVariableValue" (ByVal szEnvVar$, ByVal szBuf$, ByVal cbBuf&) AS LONG
  873. DECLARE PUBLIC FUNCTION WGetNumWinApps LIB "msdetstf.dll" ALIAS "WGetNumWinApps" () AS LONG
  874. DECLARE PUBLIC FUNCTION FGetParallelPortsList LIB "msdetstf.dll" ALIAS "FGetParallelPortsList" (ByVal szSymbol$) AS LONG
  875. DECLARE PUBLIC FUNCTION FGetSerialPortsList LIB "msdetstf.dll" ALIAS "FGetSerialPortsList" (ByVal szSymbol$) AS LONG
  876. DECLARE PUBLIC FUNCTION FHas87MathChip LIB "msdetstf.dll" ALIAS "FHas87MathChip" () AS LONG
  877. DECLARE PUBLIC FUNCTION FHasMonochromeDisplay LIB "msdetstf.dll" ALIAS "FHasMonochromeDisplay" () AS LONG
  878. DECLARE PUBLIC FUNCTION FHasMouseInstalled LIB "msdetstf.dll" ALIAS "FHasMouseInstalled" () AS LONG
  879. DECLARE PUBLIC FUNCTION WGetConfigSmartdrvSize LIB "msdetstf.dll" ALIAS "WGetConfigSmartdrvSize" () AS LONG
  880. DECLARE PUBLIC FUNCTION WGetConfigRamdriveSize LIB "msdetstf.dll" ALIAS "WGetConfigRamdriveSize" () AS LONG
  881. DECLARE PUBLIC FUNCTION WGetConfigNumBuffers LIB "msdetstf.dll" ALIAS "WGetConfigNumBuffers" () AS LONG
  882. DECLARE PUBLIC FUNCTION WGetConfigNumFiles LIB "msdetstf.dll" ALIAS "WGetConfigNumFiles" () AS LONG
  883. DECLARE PUBLIC FUNCTION WGetConfigLastDrive LIB "msdetstf.dll" ALIAS "WGetConfigLastDrive" () AS LONG
  884. DECLARE PUBLIC FUNCTION FIsDriverInConfig LIB "msdetstf.dll" ALIAS "FIsDriverInConfig" (ByVal szDrv$) AS LONG
  885. DECLARE PUBLIC FUNCTION CbFindTargetOnEnvVar LIB "msdetstf.dll" ALIAS "CbFindTargetOnEnvVar" (ByVal szFile$, ByVal szEnvVar$, ByVal szBuf$, ByVal cbBuf&) AS LONG
  886. DECLARE PUBLIC FUNCTION CbFindFileInTree LIB "msdetstf.dll" ALIAS "CbFindFileInTree" (ByVal szFile$, ByVal szDir$, ByVal szBuf$, ByVal cbBuf&) AS LONG
  887. DECLARE PUBLIC FUNCTION GetTypeFaceNameFromTTF LIB "msdetstf.dll" ALIAS "GetTypeFaceNameFromTTF" (ByVal szFile$, ByVal szBuf$, ByVal cbBuf&) AS LONG
  888. DECLARE PUBLIC FUNCTION GetExistingFOTFileForTTF LIB "msdetstf.dll" ALIAS "GetExistingFOTFileForTTF" (ByVal szFile$, ByVal szBuf$, ByVal cbBuf&) AS LONG
  889.  
  890. DECLARE PUBLIC FUNCTION HinstCui LIB "mscuistf.dll" ALIAS "_HinstCui@0" () AS LONG
  891. DECLARE PUBLIC FUNCTION LoadCommonCtl LIB "mscuistf.dll" ALIAS "_LoadCommonCtl@0" () AS INTEGER
  892. DECLARE PUBLIC FUNCTION CreateLink LIB "mscuistf.dll" ALIAS "_CreateLink@20" (ByVal szPathObj$, ByVal szPathLink$, ByVal pszDesc$, ByVal szArgument$, ByVal szWorkingDir$) AS LONG
  893. DECLARE PUBLIC FUNCTION CreateLinkIcon LIB "mscuistf.dll" ALIAS "_CreateLinkIcon@28" (ByVal szPathObj$, ByVal szPathLink$, ByVal pszDesc$, ByVal szArgument$, ByVal szWorkingDir$, ByVal szIconPath$, ByVal Icon&) AS LONG
  894. DECLARE PUBLIC FUNCTION Lot_FreeDrive LIB "mscuistf.dll" ALIAS "_Lot_FreeDrive@4" (ByVal szDrive$) AS LONG
  895.  
  896. '************ Windows Calls ****************************************
  897.  
  898. DECLARE PUBLIC FUNCTION SendDlgItemMessage LIB "user32" ALIAS "SendDlgItemMessage" (ByVal hDlg&,ByVal idCtrl&,ByVal msg&,ByVal w&,ByVal l&) AS LONG
  899. DECLARE PUBLIC FUNCTION SendDlgItemMessageLb LIB "user32" ALIAS "SendDlgItemMessage" (ByVal hDlg&,ByVal idCtrl&,ByVal msg&,ByVal w&,ByVal lParam$) AS LONG
  900. DECLARE PUBLIC FUNCTION SendMessage LIB "user32" ALIAS "SendMessageA" (ByVal hWnd&,ByVal msg&,ByVal w&,ByVal l&) AS LONG
  901. DECLARE PUBLIC FUNCTION GetTickCount LIB "kernel32" ALIAS "GetTickCount" () AS LONG
  902. DECLARE PUBLIC FUNCTION GetDC LIB "user32" ALIAS "GetDC" (ByVal hWnd&) AS LONG
  903. DECLARE PUBLIC FUNCTION ReleaseDC LIB "user32" ALIAS "ReleaseDC" (ByVal hWnd&, ByVal hDC&) AS LONG
  904. DECLARE PUBLIC FUNCTION GetDeviceCaps LIB "GDI32" ALIAS "GetDeviceCaps" (ByVal hDC&, ByVal nIndex&) AS LONG
  905. DECLARE PUBLIC FUNCTION WinHelp LIB "user32" ALIAS "WinHelpA" (ByVal hwndMain&, ByVal helpfile$, ByVal context&, ByVal ID) AS LONG
  906. DECLARE PUBLIC FUNCTION WinExec LIB "kernel32" ALIAS "WinExec" (ByVal path$, ByVal data&) AS LONG
  907. DECLARE PUBLIC FUNCTION IsDlgbuttonChecked LIB "user32" ALIAS "IsDlgButtonChecked" (ByVal hwnd&, ByVal fEnable&) AS LONG
  908. DECLARE PUBLIC FUNCTION GetWindowsDirectory LIB "kernel32" ALIAS "GetWindowsDirectoryA" (ByVal szBuf$,ByVal cbBuf&) AS LONG
  909. DECLARE PUBLIC FUNCTION GetSystemDirectory LIB "kernel32" ALIAS "GetSystemDirectoryA" (ByVal szBuf$, ByVal cbBuf&) AS LONG
  910. DECLARE PUBLIC FUNCTION GetProfileString LIB "kernel32" ALIAS "GetProfileString" (ByVal szSect$,ByVal szKey$,ByVal  szDefault$,ByVal szBuf$,ByVal cbBuf&) AS LONG
  911. DECLARE PUBLIC FUNCTION GetVersion LIB "kernel32" ALIAS "GetVersion" () AS LONG
  912. DECLARE PUBLIC FUNCTION GetSystemMetrics LIB "user32" ALIAS "GetSystemMetrics" (ByVal nIndex&) AS LONG
  913. DECLARE PUBLIC FUNCTION FindResource LIB "kernel32" ALIAS "FindResourceA" (ByVal hDll&, ByVal Id&, ByVal RType& ) AS LONG
  914. DECLARE PUBLIC FUNCTION Win32CopyFile LIB "kernel32" ALIAS "CopyFileA" (ByVal szSrc$, ByVal szDest$, ByVal cmo%) AS INTEGER
  915. DECLARE PUBLIC FUNCTION GetLastError LIB "kernel32" ALIAS "GetLastError" () AS LONG
  916. DECLARE PUBLIC FUNCTION GetDriveType LIB "kernel32" ALIAS "GetDriveTypeA" (ByVal szPath$) AS INTEGER
  917. ''** HISHI - Aug/23/95
  918. ''DECLARE PUBLIC FUNCTION lstrcpyn LIB "kernel32" ALIAS "lstrcpynA" (ByVal sz1$, ByVal sz2$, ByVal cb&) AS LONG
  919.  
  920. '*** This functions isn't available on Win32.
  921. 'DECLARE PUBLIC FUNCTION GetWinFlags LIB "kernel32" () AS LONG
  922.  
  923. DECLARE PUBLIC SUB GetSystemInfo LIB "kernel32" ALIAS "GetSystemInfo" ( rSysInf AS SysInfoType )
  924.  
  925. DECLARE PUBLIC FUNCTION LoadLibrary LIB "kernel32" ALIAS "LoadLibraryA" (ByVal path$) AS LONG
  926. DECLARE PUBLIC FUNCTION GetPrivateProfileString LIB "kernel32" ALIAS "GetPrivateProfileStringA" (ByVal szSect$, ByVal szKey$, ByVal szDef$, ByVal szBuf$, ByVal cbBuf&,ByVal szFile$) AS LONG
  927. DECLARE PUBLIC FUNCTION LoadString LIB "user32" ALIAS "LoadStringA" (ByVal hinst&,ByVal TextID&, ByVal Textbuf$, ByVal BufSize&) AS LONG
  928. DECLARE PUBLIC FUNCTION GetModuleHandle LIB "kernel32" ALIAS "GetModuleHandleA" (ByVal path$) AS LONG
  929. DECLARE PUBLIC FUNCTION GetDlgItem LIB "user32" ALIAS "GetDlgItem" (ByVal hwndDlg&, ByVal idControl&) AS LONG
  930. DECLARE PUBLIC FUNCTION IsWindowVisible LIB "user32" ALIAS "IsWindowVisible" (ByVal hwndDlg&) AS INTEGER
  931. DECLARE PUBLIC FUNCTION UpdateWindow LIB "user32" ALIAS "UpdateWindow" (ByVal hwndDlg&) AS INTEGER
  932. DECLARE PUBLIC FUNCTION SetFocus LIB "user32" ALIAS "SetFocus" (ByVal hwndDlg&) AS LONG
  933. DECLARE PUBLIC FUNCTION GetFocus LIB "user32" ALIAS "GetFocus" () AS LONG
  934. DECLARE PUBLIC FUNCTION GetParent LIB "user32" ALIAS "GetParent" (ByVal hwndDlg&) AS LONG
  935.  
  936. ''shell
  937. DECLARE PUBLIC FUNCTION SetWindowText LIB "user32" ALIAS "SetWindowTextA" (ByVal hwnd&, ByVal lpString$) AS INTEGER
  938. DECLARE PUBLIC FUNCTION EnableWindow (ByVal hwnd&, ByVal fEnable&) AS INTEGER
  939. DECLARE PUBLIC FUNCTION WEnableWindow LIB "user32" ALIAS "EnableWindow" (ByVal hwnd&, ByVal fEnable&) AS INTEGER
  940. DECLARE PUBLIC FUNCTION ShowWindow LIB "user32" ALIAS "ShowWindow" (ByVal hwnd&, ByVal fEnable&) AS INTEGER
  941. DECLARE PUBLIC FUNCTION RegSetValue LIB "advapi32" ALIAS "RegSetValueA" (ByVal hKey&, ByVal szSubKey$, ByVal dwType&, ByVal szValue$, ByVal cbValue&) AS LONG
  942. DECLARE PUBLIC FUNCTION RegCloseKey LIB "advapi32" ALIAS "RegCloseKeyA" (ByVal hKey&) AS LONG
  943.  
  944. '**************************WRAPPRER PROTOTYPES**************************
  945. 'MS WRAPPER PROTOTYPES
  946. 'DECLARE PUBLIC SUB      CreateDir (szDir$, cmo%)
  947. 'DECLARE PUBLIC SUB      RemoveIniSection (szFile$, szSect$, cmo%)
  948. DECLARE PUBLIC SUB       CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
  949. 'DECLARE PUBLIC SUB      RemoveIniKey (szFile$, szSect$, szKey$, cmo%)
  950. 'DECLARE PUBLIC SUB      CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%)
  951. DECLARE PUBLIC SUB      CreateProgmanGroup (szGroup$, szPath$, cmo%)
  952. DECLARE PUBLIC SUB      CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%)
  953. DECLARE PUBLIC SUB      ShowProgmanGroup (szGroup$, Cmd%, cmo%)
  954. 'DECLARE PUBLIC SUB      StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%)
  955. 'DECLARE PUBLIC SUB      AddDos5Help (szProgName$, szProgHelp$, cmo%)
  956. DECLARE PUBLIC SUB      CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%)
  957. DECLARE PUBLIC SUB      RemoveFile (szFullPathSrc$, cmo%)
  958. 'DECLARE PUBLIC SUB      BackupFile (szFullPath$, szBackup$)
  959. 'DECLARE PUBLIC SUB      RenameFile (szFullPath$, szBackup$)
  960. DECLARE PUBLIC SUB       InitInstall
  961. DECLARE PUBLIC SUB      OpenLogFile (szFile$, fAppend%)
  962. DECLARE PUBLIC SUB      CloseLogFile
  963. DECLARE PUBLIC SUB      WriteToLogFile (szStr$)
  964. 'DECLARE PUBLIC FUNCTION FindFileUsingFileOpen (szFile$) AS STRING
  965. DECLARE PUBLIC FUNCTION IsDirWritable (szDir$) AS INTEGER
  966. DECLARE PUBLIC FUNCTION IsFileWritable (szFile$) AS INTEGER
  967. 'DECLARE PUBLIC SUB      PrependToPath (szSrc$, szDst$, szDir$, cmo%)
  968.  
  969. '** Lotus Error functions
  970. DECLARE PUBLIC SUB      ErrorMsg (nMsg%, szErr$)
  971. DECLARE PUBLIC SUB      FatalErrorMsg (nMsg%, szErr$, nErr%)
  972. DECLARE PUBLIC SUB      ErrorMsgNoDlgExit (nMsg%, szErr$)
  973. DECLARE PUBLIC FUNCTION LdString (TextID%) AS STRING
  974. DECLARE PUBLIC SUB LdStringInit () 
  975.  
  976. %rem
  977. DECLARE PUBLIC SUB       StfApiErr (nMsg%, szApi$, szArgs$)
  978. DECLARE PUBLIC SUB       BadArgErr (nArg%, szApi$, szArgs$)
  979.  
  980. '' chk arg
  981. 'DECLARE PUBLIC FUNCTION FValidDrive (szDrive$) AS INTEGER
  982.  
  983. 'DECLARE PUBLIC FUNCTION FValidInfSect (szSect$) AS INTEGER
  984. 'DECLARE PUBLIC FUNCTION FValidIniFile (szFile$) AS INTEGER
  985.  
  986. %endrem ''DEBUG
  987. '' Windows system detect
  988.  
  989. DECLARE PUBLIC FUNCTION GetWindowsMajorVersion () AS INTEGER
  990. DECLARE PUBLIC FUNCTION GetWindowsMinorVersion () AS INTEGER
  991. DECLARE PUBLIC FUNCTION IsNewShell () AS INTEGER
  992. DECLARE PUBLIC FUNCTION GetWindowsMode () AS INTEGER
  993. DECLARE PUBLIC FUNCTION GetWindowsDir  () AS STRING
  994. DECLARE PUBLIC FUNCTION GetWindowsSysDir () AS STRING
  995. DECLARE PUBLIC FUNCTION IsWindowsShared () AS INTEGER
  996. DECLARE PUBLIC FUNCTION GetScreenWidth  () AS INTEGER
  997. DECLARE PUBLIC FUNCTION GetScreenHeight () AS INTEGER
  998.  
  999. '' Detect
  1000. DECLARE PUBLIC FUNCTION IsLongDirPath (szDir$)  AS INTEGER
  1001. DECLARE PUBLIC FUNCTION IsDriveValid (szDrive$) AS INTEGER
  1002. DECLARE PUBLIC FUNCTION IsDriveLocalHard (szDrive$) AS INTEGER
  1003. DECLARE PUBLIC FUNCTION IsDriveRemovable (szDrive$) AS INTEGER
  1004. DECLARE PUBLIC FUNCTION IsDriveNetwork (szDrive$) AS INTEGER
  1005. DECLARE PUBLIC SUB      GetValidDrivesList (szSymbol$)
  1006. DECLARE PUBLIC SUB      GetLocalHardDrivesList (szSymbol$)
  1007. DECLARE PUBLIC SUB      GetRemovableDrivesList (szSymbol$)
  1008. DECLARE PUBLIC SUB      GetNetworkDrivesList (szSymbol$)
  1009. DECLARE PUBLIC FUNCTION GetTotalSpaceForDrive (szDrive$) AS LONG
  1010. DECLARE PUBLIC FUNCTION GetFreeSpaceForDrive (szDrive$) AS LONG
  1011.  
  1012. DECLARE PUBLIC FUNCTION GetDOSMajorVersion () AS INTEGER
  1013. DECLARE PUBLIC FUNCTION GetDOSMinorVersion () AS INTEGER
  1014. DECLARE PUBLIC FUNCTION GetEnvVariableValue (szEnvVar$) AS STRING
  1015. DECLARE PUBLIC FUNCTION GetNumWinApps () AS INTEGER
  1016.  
  1017. DECLARE PUBLIC FUNCTION DoesFileExist (szFile$, mode%) AS INTEGER
  1018. DECLARE PUBLIC FUNCTION GetDateOfFile (szFile$) AS STRING
  1019. DECLARE PUBLIC FUNCTION GetYearFromDate (szDate$) AS INTEGER
  1020. DECLARE PUBLIC FUNCTION GetMonthFromDate (szDate$) AS INTEGER
  1021. DECLARE PUBLIC FUNCTION GetDayFromDate (szDate$) AS INTEGER
  1022. DECLARE PUBLIC FUNCTION GetHourFromDate (szDate$) AS INTEGER
  1023. DECLARE PUBLIC FUNCTION GetMinuteFromDate (szDate$) AS INTEGER
  1024. DECLARE PUBLIC FUNCTION GetSecondFromDate (szDate$) AS INTEGER
  1025. DECLARE PUBLIC FUNCTION GetVersionOfFile (szFile$) AS STRING
  1026. DECLARE PUBLIC FUNCTION GetVersionNthField (szVersion$, nField%) AS LONG
  1027. DECLARE PUBLIC FUNCTION GetSizeOfFile (szFile$) AS LONG
  1028. DECLARE PUBLIC FUNCTION FindTargetOnEnvVar (szFile$, szEnvVar$) AS STRING
  1029. DECLARE PUBLIC FUNCTION FindFileInTree (szFile$, szDir$) AS STRING
  1030. DECLARE PUBLIC FUNCTION DoesDirExist (szDir$) AS INTEGER
  1031.  
  1032. DECLARE PUBLIC FUNCTION DoesIniSectionExist (szFile$, szSect$) AS INTEGER
  1033. DECLARE PUBLIC FUNCTION DoesIniKeyExist (szFile$, szSect$, szKey$) AS INTEGER
  1034. DECLARE PUBLIC FUNCTION GetIniKeyString (szFile$, szSect$, szKey$) AS STRING
  1035.  
  1036. DECLARE PUBLIC FUNCTION GetConfigSmartdrvSize () AS INTEGER
  1037. DECLARE PUBLIC FUNCTION GetConfigRamdriveSize () AS INTEGER
  1038. DECLARE PUBLIC FUNCTION GetConfigNumBuffers () AS INTEGER
  1039. DECLARE PUBLIC FUNCTION GetConfigNumFiles () AS INTEGER
  1040. DECLARE PUBLIC FUNCTION GetConfigLastDrive () AS STRING
  1041. DECLARE PUBLIC FUNCTION IsDriverInConfig (szDrv$) AS INTEGER
  1042.  
  1043. DECLARE PUBLIC FUNCTION GetProcessorType () AS INTEGER
  1044. DECLARE PUBLIC SUB      GetParallelPortsList (szSymbol$)
  1045. DECLARE PUBLIC SUB      GetSerialPortsList (szSymbol$)
  1046. DECLARE PUBLIC FUNCTION Has87MathChip () AS INTEGER
  1047. DECLARE PUBLIC FUNCTION HasMonochromeDisplay () AS INTEGER
  1048. DECLARE PUBLIC FUNCTION HasMouseInstalled () AS INTEGER
  1049. DECLARE PUBLIC SUB      SetBitmap(szDll$, Bitmap%)
  1050. DECLARE PUBLIC SUB      SetAbout(szAbout1$, szAbout2$)
  1051. DECLARE PUBLIC FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$) AS STRING
  1052. DECLARE PUBLIC SUB      UIPop (n%)
  1053. DECLARE PUBLIC SUB      UIPopAll
  1054. DECLARE PUBLIC SUB      SetTitle (sz$)
  1055. DECLARE PUBLIC SUB      SetSymbolValue (szSymbol$, szValue$)
  1056. DECLARE PUBLIC SUB      RemoveSymbol (szSym$)
  1057. DECLARE PUBLIC FUNCTION GetSymbolValue (szSymbol$) AS STRING
  1058. DECLARE PUBLIC FUNCTION GetListLength(szSymbol$) AS INTEGER
  1059. DECLARE PUBLIC FUNCTION GetListItem(szSymbol$, n%) AS STRING
  1060. DECLARE PUBLIC SUB      AddListItem(szSymbol$, szItem$)
  1061. DECLARE PUBLIC SUB      ReplaceListItem(szSymbol$, n%, szItem$)
  1062. DECLARE PUBLIC FUNCTION InitFrame (szCmdLine$) AS INTEGER
  1063. DECLARE PUBLIC FUNCTION InitSetup (szCmdLine$) AS INTEGER
  1064. DECLARE PUBLIC FUNCTION ShowWaitCursor () AS LONG
  1065. DECLARE PUBLIC SUB      RestoreCursor (hPrev&)
  1066. DECLARE PUBLIC SUB WriteToFile(szFile$,sz$) 
  1067.  
  1068. '** these are some functions to deal with 32 bit type dir names
  1069. DECLARE PUBLIC FUNCTION GetShortPathName(ByVal szLong$, szShort$) AS LONG
  1070. DECLARE PUBLIC FUNCTION Lot_Regedit LIB "lcomstf.dll" ALIAS "_Lot_Regedit@8" (ByVal szFile$,ByVal szFile$) AS LONG
  1071. DECLARE PUBLIC FUNCTION Lot_GetShortPathName LIB "lcomstf.dll" ALIAS "_Lot_GetShortPathName@12" (ByVal szLong$,ByVal szShort$,ByVal cchBuffer&) AS LONG
  1072. DECLARE PUBLIC FUNCTION Lot_CreateIniKeyValue LIB "lcomstf.dll" ALIAS "_Lot_CreateIniKeyValue@20" (ByVal szFile$,ByVal szSect$,ByVal szKey$,ByVal szValue$,ByVal cmo&) AS LONG
  1073.  
  1074.  
  1075. DECLARE PUBLIC FUNCTION Lot_CleanPath (path$) AS INTEGER
  1076. DECLARE PUBLIC FUNCTION Lot_GetNthFieldFromIniString (szLine$, iField%, sp$) AS STRING
  1077.  
  1078. DECLARE PUBLIC FUNCTION Lot_RegCreateKeyEx(   ByVal hKey&, ByVal szKey$) AS LONG
  1079. DECLARE PUBLIC FUNCTION Lot_RegDelAllSubKeys( ByVal hKey&, ByVal szKey$) AS LONG
  1080. DECLARE PUBLIC FUNCTION Lot_DoesRegKeyExistEx(ByVal hKey&, ByVal szKey$) AS LONG
  1081. DECLARE PUBLIC FUNCTION Lot_DeleteRegKeyEx(   ByVal hKey&, ByVal szKey$) AS LONG
  1082. DECLARE PUBLIC FUNCTION Lot_CreateRegKeyValueEx(ByVal hKey&,   ByVal szSubKey$,    ByVal szValueName$,_
  1083.                                                 ByVal dwType&, ByVal lpValueData as variant, ByVal dwDataLen& ) AS LONG
  1084. DECLARE PUBLIC FUNCTION Lot_SetRegKeyValueEx(ByVal hKey&,  ByVal szSubKey$,    ByVal szValueName$,_
  1085.                                               dwType&,ByVal lpValueData, ByVal dwDataLen& ) AS LONG
  1086.  
  1087. DECLARE PUBLIC FUNCTION Lot_GetRegKeyValueEx(ByVal hKey&,  ByVal szSubKey$,ByVal szValueName$,_
  1088.                                              dwType&, lpBuf as variant, cbBuf&) AS LONG
  1089.  
  1090.  
  1091. DECLARE PUBLIC FUNCTION Lot_CreateDirectory LIB "mscuistf.dll" ALIAS "_Lot_CreateDirectory@4" (ByVal szDir$) AS LONG
  1092.  
  1093. DECLARE PUBLIC SUB SetListItem (szSymbol$, n%, szListItem$) 
  1094.  
  1095. DECLARE PUBLIC FUNCTION NullTrim (szString$) AS STRING
  1096. DECLARE PUBLIC FUNCTION CreateBuffer (Length&) AS STRING
  1097. ''** HISHI - Aug/23/95
  1098. ''DECLARE PUBLIC FUNCTION LeftBP(sz$, cb%) AS STRING
  1099.  
  1100. ' called from main to start off everything
  1101. DECLARE PUBLIC SUB SetUpAPI
  1102. DECLARE PUBLIC SUB      ASSERT (assertion%, msg$)
  1103.  
  1104. '******************SUPPORT FUNCTIONS ****************************
  1105.  
  1106. %rem
  1107. ''** HISHI - Aug/23/95
  1108. PUBLIC FUNCTION LeftBP(sz$, cb%) AS STRING
  1109. '** Purpose:
  1110. '**    Extracts a specified number of the leftmost BYTES in a string.
  1111. '** Author:    HISHI
  1112. '** Arguments:
  1113. '**    sz$ - string expression
  1114. '**    cb% - count of BYTES
  1115. '** Returns:
  1116. '**    specified number of the leftmost BYTES
  1117. '**     
  1118. '*************************************************************************
  1119. DIM NotUsed&
  1120. LeftBP = STRING$(cb% + 1, 0)
  1121. NotUsed& = lstrcpyn(LeftBP, sz$, CLNG(cb% + 1))
  1122. LeftBP = LEFT$(LeftBP, INSTR(LeftBP, CHR$(0)) - 1)
  1123. END FUNCTION
  1124. ''** END HISHI
  1125. %endrem
  1126.  
  1127. '****************************************************************
  1128. PUBLIC FUNCTION NullTrim (szString$) AS STRING
  1129.    DIM l%
  1130.  
  1131.    l% = INSTR (szString, CHR$(0))
  1132.    IF l% > 0 THEN
  1133.          NullTrim = RTrim$(LEFT$ (szString, l% - 1))
  1134.    ELSEIF l% = 0 THEN
  1135.          NullTrim = RTrim$(szString)
  1136.    ELSE
  1137.       NullTrim = ""
  1138.    END IF
  1139.  
  1140. END FUNCTION
  1141.  
  1142. '****************************************************************
  1143. ' Need this function to allow us to full buffers with anything
  1144. ' Right now we can't fill them with nulls.
  1145. PUBLIC FUNCTION CreateBuffer (Length&) AS STRING
  1146.  
  1147.     CreateBuffer = STRING$(Length&, " ")
  1148.  
  1149. END FUNCTION
  1150.  
  1151. '***************************WRAPPERS FUNCTIONS AND SUBROUTINES***********
  1152. 'MS WRAPPERS FUNCTIONS AND SUBROUTINES
  1153.  
  1154. PUBLIC FUNCTION InitSetup(szCmdLine$)  AS INTEGER
  1155. '** Purpose: calls InitFrame and InitInstall and sets fFrameInit and 
  1156. '**          fInstallInit flags
  1157. '** Author:
  1158. '** Arguments: szCmdLine$
  1159. '** Returns:   the return of InitFrame call
  1160. '**     
  1161. '*************************************************************************
  1162.     DIM  i%
  1163.  
  1164. %rem
  1165.     fFrameInit = FALSE
  1166.     fInstallInit = FALSE
  1167.  
  1168.     IF hSetup > 0 THEN
  1169.     StfApiErr saeInit, "InitSetup", szCmdLine$
  1170.     END IF
  1171.  
  1172.     i% = InitFrame(szCmdLine$)
  1173.     fFrameInit = 1
  1174.  
  1175.     InitInstall
  1176.     fInstallInit = 1
  1177. %endrem ''DEBUG
  1178.  
  1179.     i% = InitFrame(szCmdLine$)
  1180.     InitInstall
  1181.  
  1182.     InitSetup = i%
  1183. END FUNCTION
  1184. '**************************************************************************
  1185.  
  1186. PUBLIC FUNCTION InitFrame(szCmdLine$)  AS INTEGER
  1187. '** Purpose:    Initialize the frame
  1188. '** Author:
  1189. '** Arguments:  szCmdLine$
  1190. '** Returns:
  1191. '*************************************************************************
  1192.       DIM  i&
  1193.  
  1194.     IF hSetup > 0 THEN
  1195. %rem
  1196.     StfApiErr saeInit, "InitFrame", szCmdLine$
  1197. %endrem ''DEBUG
  1198.     ELSE
  1199.     i& = InitializeFrame(szCmdLine$) 
  1200.     IF i& = -1 THEN
  1201. '           FatalErrorMsg SID_ERR_COMMANDLINE_FORMAT, "", STFQUIT
  1202.         ERROR STFQUIT    
  1203.     ELSEIF i& = 0 THEN
  1204. %rem
  1205.         StfApiErr saeFail, "InitFrame", szCmdLine$
  1206. %endrem ''DEBUG
  1207.         '** TV: return value from cmd line parsing was 0. One of the
  1208.         '** cmd line processing failed. 
  1209.         ERROR STFQUIT    
  1210.         END
  1211.     ELSE
  1212.         InitFrame = CInt(i&)
  1213.     END IF
  1214.     END IF
  1215. END FUNCTION
  1216. '**************************************************************************
  1217.  
  1218. PUBLIC SUB SetBitmap(szDll$, Bitmap%) 
  1219. '** Purpose:
  1220. '** Author:
  1221. '** Arguments: szDll$, Bitmap%
  1222. '*************************************************************************
  1223.     
  1224.     IF FSetBitmap(szDll$, CLng(Bitmap%)) = FALSE THEN
  1225.        ASSERT TRUE, ""
  1226.     END IF
  1227. END SUB
  1228. '**************************************************************************
  1229.  
  1230. PUBLIC SUB SetAbout(szAbout1$, szAbout2$) 
  1231. '** Purpose:
  1232. '** Author:
  1233. '** Arguments: szAbout1$, szAbout2$
  1234. '*************************************************************************
  1235.     IF FSetAbout(szAbout1$, szAbout2$) = FALSE THEN
  1236.     ASSERT TRUE, ""
  1237.     END IF
  1238. END SUB
  1239. '*************************************************************************
  1240.  
  1241. PUBLIC SUB SetTitle(sz$) 
  1242. '** Purpose:
  1243. '** Author:
  1244. '** Arguments: sz$
  1245. '*************************************************************************
  1246.     SetWindowText HwndFrame(), sz$
  1247. END SUB
  1248. '*************************************************************************
  1249.  
  1250. PUBLIC FUNCTION UIStartDlg(szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$)  AS STRING
  1251. '** Purpose:
  1252. '** Author:
  1253. '** Arguments: szDll$, Dlg%, szDlgProc$, HelpDlg%, szHelpProc$
  1254. '** Returns: Value of the symbol for the event, e.g. "ID_OK"
  1255. '**     
  1256. '** NOTE: This version calls FDoDialog3, which allows multiple DLLs    
  1257. '**     
  1258. '*************************************************************************
  1259. %rem
  1260.     if szDll$ = "" then
  1261.     n% = 1
  1262.     elseif szDlgProc$ = "" then
  1263.     n% = 3
  1264.     else
  1265.     n% = 0
  1266.     end if
  1267.     if n% > 0 then
  1268.     BadArgErr n%, "UIStartDlg", szDll$+", "+STR$(Dlg%)+", "+szDlgProc$+", "+STR$(HelpDlg%)+", "+szHelpProc$
  1269.     end if
  1270. %endrem ''DEBUG
  1271. '    IF FDoDialog(HwndFrame(), szDll$, CLng(Dlg%), szDlgProc$, CLng(HelpDlg%), szHelpProc$) = FALSE THEN
  1272.     IF FDoDialog3(HwndFrame(), szDll$, CLng(Dlg%), szDlgProc$ ) = FALSE THEN
  1273.     ASSERT TRUE, ""
  1274.     ERROR STFQUIT
  1275.     ELSE
  1276.     UIStartDlg = GetSymbolValue(SYM_DLGEVENT$)
  1277.     END IF
  1278. END FUNCTION
  1279. '*************************************************************************
  1280.  
  1281. PUBLIC SUB UIPop (n%) 
  1282. '** Purpose:
  1283. '** Author:
  1284. '** Arguments: n%
  1285. '*************************************************************************
  1286.     IF FKillNDialogs3(CLng(n%)) = FALSE THEN
  1287.     ASSERT TRUE, ""
  1288.     END IF
  1289. END SUB
  1290. '*************************************************************************
  1291.  
  1292. PUBLIC SUB UIPopAll 
  1293. '** Purpose:
  1294. '** Author:
  1295. '** Arguments: None
  1296. '*************************************************************************
  1297. ' This is not needed if calling FDoDialog3
  1298.     IF FKillNDialogs3(32767) = FALSE THEN
  1299.     ASSERT TRUE, ""
  1300.     END IF
  1301. END SUB
  1302. '*************************************************************************
  1303.  
  1304. PUBLIC FUNCTION GetSymbolValue(szSymbol$)  AS STRING
  1305. '** Purpose:
  1306. '** Author:
  1307. '** Arguments: szSymbol$
  1308. '** Returns:
  1309. '**     
  1310. '*************************************************************************
  1311. %rem
  1312.     if szSymbol$ = "" then
  1313.     BadArgErr 1, "GetSymbolValue", szSymbol$
  1314.     end if
  1315. %endrem ''DEBUG
  1316.  
  1317.     DIM szValue As String : szValue = CreateBuffer(cbSymValMax)
  1318.     DIM Length%
  1319.  
  1320.     Length% = CInt(CbGetSymbolValue(szSymbol$, szValue$, cbSymValMax))
  1321.     IF Length% >= cbSymValMax THEN
  1322.     ErrorMsg SID_ERR_GETSYMBOLVALUE, LSI_INFO(13) & _
  1323.          " : " & LSI_INFO(12) & " : " & LSI_INFO(11)
  1324.     ERROR STFQUIT
  1325.     ELSEIF (Length% = 0) THEN
  1326.     szValue$=""
  1327.     END IF
  1328.  
  1329.     GetSymbolValue = LEFTBP (szValue$, Length%) ''** HISHI - Sept/15/95
  1330.    
  1331. END FUNCTION
  1332. '*************************************************************************
  1333.  
  1334. PUBLIC FUNCTION GetListLength(szSymbol$)  AS INTEGER
  1335. '** Purpose:
  1336. '** Author:
  1337. '** Arguments: szSymbol$
  1338. '** Returns:
  1339. '**     
  1340. '*************************************************************************
  1341. %rem
  1342.     if szSymbol$ = "" then
  1343.     BadArgErr 1, "GetListLength", szSymbol$
  1344.     end if
  1345. %endrem ''DEBUG
  1346.  
  1347.     GetListLength = UsGetListLength(szSymbol$)
  1348.  
  1349.     IF szSymbol$ = "" THEN
  1350.     ErrorMsg SID_ERR_GETLISTLENGTH, LSI_INFO(13) & _
  1351.          " : " & LSI_INFO(12) & " : " & LSI_INFO(11) & CHR(10) &_
  1352.          "GetListLength(" & szSymbol$ & ")"
  1353.     ERROR STFQUIT
  1354.     END IF
  1355. END FUNCTION
  1356. '*************************************************************************
  1357.  
  1358. PUBLIC FUNCTION GetListItem(szListSymbol$, nItem%)  AS STRING
  1359. '** Purpose:
  1360. '** Author:
  1361. '** Arguments: szListSymbol$, nItem%
  1362. '** Returns:
  1363. '**     
  1364. '*************************************************************************
  1365. %rem
  1366.     if szListSymbol$ = "" then
  1367.     BadArgErr 1, "GetListItem", szListSymbol$+", "+STR$(nItem%)
  1368.     end if
  1369.  
  1370.     if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
  1371.     BadArgErr 2, "GetListItem", szListSymbol$+", "+STR$(nItem%)
  1372.     end if
  1373. %endrem ''DEBUG
  1374.       DIM szListItem$, Length&
  1375.  
  1376.     szListItem$ = CreateBuffer(cbSymValMax)
  1377.     Length& = CbGetListItem(szListSymbol$, CLng(nItem%), szListItem$, cbSymValMax)
  1378.     GetListItem = szListItem$
  1379.     IF Length& >= cbSymValMax THEN
  1380.     ErrorMsg SID_ERR_GETLISTITEM, LSI_INFO(13) & _
  1381.          " : " & LSI_INFO(12) & " : " & LSI_INFO(11) & CHR(10) &_
  1382.          "GetListItem(" & szListSymbol$ & ", " & CSTR(nItem%) & ")"
  1383.     ERROR STFQUIT
  1384.     ELSEIF Length& <= 0 THEN
  1385.     szListItem$ = ""
  1386.     Length& = 0 
  1387.     END IF
  1388.     if nItem% <= 0 or nItem% > GetListLength(szListSymbol$) then
  1389.     ErrorMsg SID_ERR_GETLISTITEM2, LSI_INFO(13) & _
  1390.          " : " & LSI_INFO(12) & " : " & LSI_INFO(11) & CHR(10) &_
  1391.          "GetListItem(" & szListSymbol$ & ", " & CSTR(nItem%) & ")"
  1392.     ERROR STFQUIT
  1393.     end if
  1394.     GetListItem = LEFTBP( szListItem$, CInt(Length&) ) ''** HISHI - Sept/15/95
  1395. END FUNCTION
  1396. '*************************************************************************
  1397.  
  1398. PUBLIC SUB AddListItem(szSymbol$, szItem$) 
  1399. '** Purpose:
  1400. '** Author:
  1401. '** Arguments: szSymbol$, szItem$
  1402. '*************************************************************************
  1403. %rem
  1404.     if szSymbol$ = "" then
  1405.     BadArgErr 1, "AddListItem", szSymbol$+", "+szItem$
  1406.     end if
  1407. %endrem ''DEBUG
  1408.     IF FAddListItem(ByVal szSymbol$,ByVal  szItem$) = FALSE THEN
  1409.     ErrorMsg SID_ERR_ADDLISTITEM,_
  1410.          LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & LSI_INFO(11) 
  1411.     ERROR STFQUIT
  1412.     END IF
  1413. END SUB
  1414. '*************************************************************************
  1415.  
  1416. PUBLIC SUB ReplaceListItem(szSymbol$, n%, szItem$) 
  1417. '** Purpose:
  1418. '** Author:
  1419. '** Arguments: szSymbol$, n%, szItem$
  1420. '*************************************************************************
  1421. %rem
  1422.     if szSymbol$ = "" then
  1423.     nArg% = 1
  1424.     elseif (n% <= 0) OR (n% > GetListLength(szSymbol$)) then
  1425.     nArg% = 2
  1426.     else
  1427.     nArg% = 0
  1428.     end if
  1429.     if nArg% > 0 then
  1430.     BadArgErr nArg%, "ReplaceListItem", szSymbol$+", "+STR$(n%)+", "+szItem$
  1431.     end if
  1432. %endrem ''DEBUG
  1433.  
  1434.     IF FReplaceListItem(szSymbol$, CLng(n%), szItem$) = FALSE THEN
  1435.     ErrorMsg SID_ERR_REPLACELISTITEM, _
  1436.          LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & LSI_INFO(11) 
  1437.     ERROR STFQUIT
  1438.     END IF
  1439. END SUB
  1440. '**************************************************************************
  1441.  
  1442.  
  1443. PUBLIC SUB SetSymbolValue(szSymbol$, szValue$) 
  1444. '** Purpose:
  1445. '** Author:
  1446. '** Arguments: szSymbol$, szValue$
  1447. '*************************************************************************
  1448.     DIM LocalValue$
  1449.     LocalValue$ = TRIM$(szValue$)
  1450. %rem
  1451.     if LocalValue$ = "" then
  1452.     BadArgErr 1, "SetSymbolValue", szSymbol$+", "+szValue$
  1453.     end if
  1454. %endrem ''DEBUG
  1455.     IF szSymbol$ = "" THEN
  1456.         ErrorMsg SID_ERR_SETSYMBOLVALUE, "Symbol name empty, value is " &  szValue$
  1457.     EXIT SUB
  1458.     END IF
  1459.     IF FSetSymbolValue(szSymbol$, LocalValue$) = FALSE THEN
  1460.     ErrorMsg SID_ERR_SETSYMBOLVALUE, _
  1461.          LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & LSI_INFO(11) 
  1462.     ERROR STFQUIT
  1463.     END IF
  1464. END SUB
  1465. '*************************************************************************
  1466.  
  1467. PUBLIC SUB RemoveSymbol(szSym$) 
  1468. '** Purpose:
  1469. '** Author:
  1470. '** Arguments: szSym$
  1471. '*************************************************************************
  1472. %rem
  1473.     if szSym$ = "" then
  1474.     BadArgErr 1, "RemoveSymbol", szSym$
  1475.     end if
  1476. %endrem ''DEBUG
  1477.     IF FRemoveSymbol(szSym$) = FALSE THEN
  1478.     ErrorMsg SID_ERR_REMOVESYMBOL, _
  1479.          LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & LSI_INFO(11) 
  1480.     ERROR STFQUIT
  1481.     END IF
  1482. END SUB
  1483. '*************************************************************************
  1484.  
  1485. PUBLIC FUNCTION ShowWaitCursor () AS LONG
  1486. '** Purpose:
  1487. '** Author:
  1488. '** Arguments: None
  1489. '** Returns:
  1490. '**     
  1491. '*************************************************************************
  1492. '    ShowWaitCursor = HShowWaitCursor()
  1493.     ShowWaitCursor = 0
  1494. END FUNCTION
  1495. '*************************************************************************
  1496.  
  1497. PUBLIC SUB RestoreCursor (hPrev&) 
  1498. '** Purpose:
  1499. '** Author:
  1500. '** Arguments: hPrev&
  1501. '*************************************************************************
  1502.     DIM i&
  1503.  
  1504. '  i& = FRestoreCursor(hPrev&)
  1505.   i& = 1
  1506.     IF i& = 0 THEN
  1507.     ErrorMsg SID_ERR_RESTORECURSOR, ""
  1508.     ERROR STFERR
  1509.     END IF
  1510. END SUB
  1511. '*************************************************************************
  1512.  
  1513. PUBLIC SUB InitInstall 
  1514. '** Purpose:
  1515. '** Author:
  1516. '** Arguments: None
  1517. '*************************************************************************
  1518.     IF hSetup > 0 THEN
  1519. %rem
  1520.     StfApiErr saeInit, "InitInstall", ""
  1521. %endrem ''DEBUG
  1522.     ELSEIF FInitializeInstall(HinstFrame(), HwndFrame()) = FALSE THEN
  1523. %rem
  1524.     StfApiErr saeFail, "InitInstall", ""
  1525. %endrem ''DEBUG
  1526.     END
  1527.     END IF
  1528. END SUB
  1529. '*************************************************************************
  1530.  
  1531. PUBLIC SUB CreateDir (szDir$, cmo%) 
  1532. '** Purpose:
  1533. '** Author:
  1534. '** Arguments: szDir$, cmo%
  1535. '*************************************************************************
  1536. DIM logfile$
  1537. %rem
  1538.     if FValidFATDir(szDir$) = FALSE then
  1539.     BadArgErr 1, "CreateDir", szDir$+", "+STR$(cmo%)
  1540.     end if
  1541. %endrem ''DEBUG
  1542.     logfile$ = GetSymbolValue(SYM_LOGFILE$)
  1543. '    IF FCreateDir(szDir$, CLng(cmo%)) = FALSE THEN
  1544.      IF Lot_CreateDirectory(szDir$) <> NO_ERROR THEN
  1545.     ErrorMsg SID_ERR_CREATEDIR, szDir$ & " " & CStr(cmo%) & CHR(10) &_
  1546.          LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & LSI_INFO(11) 
  1547.     ERROR STFQUIT
  1548.     END IF
  1549.     If logfile$ <> "" THEN 
  1550.     OpenLogFile logfile$,1 
  1551.     WriteToLogFile  "** Successfully created " + szDir$+ " ;with cmo% = " + CStr(cmo%)
  1552.     CloseLogFile
  1553.     END IF
  1554.  
  1555. END SUB
  1556. '*************************************************************************
  1557.  
  1558. PUBLIC SUB RemoveIniSection (szFile$, szSect$, cmo%) 
  1559. '** Purpose:
  1560. '** Author:
  1561. '** Arguments: szFile$, szSect$, cmo%
  1562. '*************************************************************************
  1563. DIM logfile$
  1564. %rem
  1565.     if FValidIniFile(szFile$) = FALSE then
  1566.     n% = 1
  1567.     elseif FValidInfSect(szSect$) = FALSE then
  1568.     n% = 2
  1569.     else
  1570.     n% = 0
  1571.     end if
  1572.     if n% > 0 then
  1573.     BadArgErr n%, "RemoveIniSection", szFile$+", "+szSect$+", "+STR$(cmo%)
  1574.     end if
  1575. %endrem ''DEBUG
  1576.  
  1577.     logfile$ = GetSymbolValue(SYM_LOGFILE$)
  1578.     IF FRemoveIniSection(szFile$, szSect$, CLng(cmo%)) = FALSE THEN
  1579.     ErrorMsg SID_ERR_REMOVEINISECTION, "** Failed removing ini entry from " & szFile$ & CHR(10) &_
  1580.          LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & LSI_INFO(11) 
  1581.     ERROR STFERR
  1582.     END IF
  1583.     If logfile$ <> "" THEN 
  1584.     OpenLogFile logfile$,1 
  1585.     WriteToLogFile  "** Successfully removed from " + szFile$+ " ;with cmo% = " + CStr(cmo%)
  1586.     WriteToLogFile  "[" + szSect$ +"]"
  1587.     CloseLogFile
  1588.     END IF
  1589.  
  1590. END SUB
  1591. '*************************************************************************
  1592.  
  1593. PUBLIC SUB CreateIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) 
  1594. '** Purpose:
  1595. '** Author:
  1596. '** Arguments: szFile$, szSect$, szKey$, szValue$, cmo%
  1597. '*************************************************************************
  1598. DIM logfile$
  1599. %rem
  1600.     if FValidIniFile(szFile$) = FALSE then
  1601.     n% = 1
  1602.     elseif FValidInfSect(szSect$) = FALSE then
  1603.     n% = 2
  1604.     else
  1605.     n% = 0
  1606.     end if
  1607.     if n% > 0 then
  1608.     BadArgErr n%, "CreateIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
  1609.     end if
  1610. %endrem ''DEBUG
  1611.  
  1612.     logfile$ = GetSymbolValue(SYM_LOGFILE$)
  1613.  
  1614.     IF Lot_CreateIniKeyValue(szFile$, szSect$, szKey$, szValue$, CLng(cmo%)) = FALSE THEN
  1615.  
  1616. '    IF FCreateIniKeyValue(szFile$, szSect$, szKey$, szValue$, CLng(cmo%)) = FALSE THEN
  1617. '    ErrorMsg SID_ERR_CREATEINIKEYVALUE, "** Failed writing to " & szFile$ & CHR(10) & _
  1618. '         LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & LSI_INFO(11) 
  1619.     ERROR STFQUIT
  1620.     END IF
  1621.     If logfile$ <> "" THEN 
  1622.     OpenLogFile logfile$,1 
  1623.     WriteToLogFile  "** Successfully wrote to " + szFile$+ " ;with cmo% = " + CStr(cmo%)
  1624.     WriteToLogFile  "[" + szSect$ +"]"
  1625.     WriteToLogFile  szKey$ +"="+ szValue$
  1626.     CloseLogFile
  1627.     END IF
  1628. END SUB
  1629. '*************************************************************************
  1630.  
  1631. PUBLIC SUB RemoveIniKey (szFile$, szSect$, szKey$, cmo%) 
  1632. '** Purpose:
  1633. '** Author:
  1634. '** Arguments: szFile$, szSect$, szKey$, cmo%
  1635. '*************************************************************************
  1636. DIM logfile$
  1637. %rem
  1638.     if FValidIniFile(szFile$) = FALSE then
  1639.     n% = 1
  1640.     elseif FValidInfSect(szSect$) = FALSE then
  1641.     n% = 2
  1642.     elseif szKey$ = "" then
  1643.     n% = 3
  1644.     else
  1645.     n% = 0
  1646.     end if
  1647.     if n% > 0 then
  1648.     BadArgErr n%, "RemoveIniKey", szFile$+", "+szSect$+", "+szKey$+", "+STR$(cmo%)
  1649.     end if
  1650. %endrem ''DEBUG
  1651.     logfile$ = GetSymbolValue(SYM_LOGFILE$)
  1652.  
  1653.     IF FRemoveIniKey(szFile$, szSect$, szKey$, CLng(cmo%)) = FALSE THEN
  1654.     ErrorMsg SID_ERR_REMOVEINIKEY, "** Failed removing ini entry from " & szFile$ & CHR(10) &_
  1655.          LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & LSI_INFO(11) 
  1656.     ERROR STFERR
  1657.     END IF
  1658.     If logfile$ <> "" THEN 
  1659.     OpenLogFile logfile$,1 
  1660.     WriteToLogFile "** Successfully Removed from " + szFile$+ " ;with cmo% = " + CStr(cmo%)
  1661.     WriteToLogFile "[" + szSect$ +"]"
  1662.     WriteToLogFile szKey$ +"="
  1663.     CloseLogFile
  1664.     END IF
  1665.  
  1666. END SUB
  1667. '*************************************************************************
  1668.  
  1669. PUBLIC SUB CreateSysIniKeyValue (szFile$, szSect$, szKey$, szValue$, cmo%) 
  1670. '** Purpose:
  1671. '** Author:
  1672. '** Arguments: szFile$, szSect$, szKey$, szValue$, cmo%
  1673. '*************************************************************************
  1674. DIM logfile$
  1675. %rem
  1676.     if FValidFATPath(szFile$) = FALSE then
  1677.     n% = 1
  1678.     elseif FValidInfSect(szSect$) = FALSE then
  1679.     n% = 2
  1680.     elseif szKey$ = "" then
  1681.     n% = 3
  1682.     else
  1683.     n% = 0
  1684.     end if
  1685.     if n% > 0 then
  1686.     BadArgErr n%, "CreateSysIniKeyValue", szFile$+", "+szSect$+", "+szKey$+", "+szValue$+", "+STR$(cmo%)
  1687.     end if
  1688. %endrem ''DEBUG
  1689.  
  1690.     logfile$ = GetSymbolValue(SYM_LOGFILE$)
  1691.     IF FCreateSysIniKeyValue(szFile$, szSect$, szKey$, szValue$, CLng(cmo%)) = FALSE THEN
  1692.     ErrorMsg SID_ERR_CREATESYSINIKEYVALUE,  "** Failed writing to " & szFile$ & CHR(10) & _ 
  1693.          LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & LSI_INFO(11) 
  1694.     ERROR STFQUIT
  1695.     END IF
  1696.     If logfile$ <> "" THEN 
  1697.     OpenLogFile logfile$,1 
  1698.     WriteToLogFile "** Successfully did a CreateSysIniKeyValue to " + szFile$+ " ;with cmo% = " + CStr(cmo%)
  1699.     WriteToLogFile "[" + szSect$ +"]"
  1700.     WriteToLogFile szKey$ +"="+ szValue$
  1701.     CloseLogFile
  1702.     END IF
  1703.  
  1704.  
  1705. END SUB
  1706. '*************************************************************************
  1707.  
  1708. PUBLIC SUB CreateProgmanGroup (szGroup$, szPath$, cmo%) 
  1709. '** Purpose:
  1710. '** Author:
  1711. '** Arguments: szGroup$, szPath$, cmo%
  1712. '*************************************************************************
  1713. %rem
  1714.     if szGroup$ = "" or len(szGroup$) > 24 then
  1715.     BadArgErr 1, "CreateProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
  1716.     end if
  1717. %endrem ''DEBUG
  1718.     IF FCreateProgManGroup(szGroup$, szPath$, CLng(cmo%)) = FALSE THEN
  1719.     ErrorMsg SID_ERR_CREATEPROGMANGROUP, szGroup$ & CHR(10) & _
  1720.          LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & LSI_INFO(11) 
  1721.     END IF
  1722. END SUB
  1723. '*************************************************************************
  1724.  
  1725. PUBLIC SUB ShowProgmanGroup (szGroup$, Cmd%, cmo%) 
  1726. '** Purpose:
  1727. '** Author:
  1728. '** Arguments: szGroup$, Cmd%, cmo%
  1729. '*************************************************************************
  1730. %rem
  1731.     if szGroup$ = "" or len(szGroup$) > 24 then
  1732.     BadArgErr 1, "ShowProgmanGroup", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
  1733.     end if
  1734. %endrem ''DEBUG
  1735.     IF FShowProgManGroup(szGroup$, STR$(Cmd%), CLng(cmo%)) = FALSE THEN
  1736.     ErrorMsg SID_ERR_SHOWPROGMANGROUP, ""
  1737.     END IF
  1738. END SUB
  1739. '*************************************************************************
  1740.  
  1741. PUBLIC SUB StampResource (szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%) 
  1742. '** Purpose:
  1743. '** Author:
  1744. '** Arguments: szSect$, szKey$, szDst$, wResType%, wResId%, szData$, cbData%
  1745. '*************************************************************************
  1746. %rem
  1747.     if FValidInfSect(szSect$) = FALSE then
  1748.     n% = 1
  1749.     elseif szKey$ = "" then
  1750.     n% = 2
  1751.     elseif FValidFATDir(szDst$) = FALSE then
  1752.     n% = 3
  1753.     else
  1754.     n% = 0
  1755.     end if
  1756.     if n% > 0 then
  1757.     BadArgErr n%, "StampResource", szSect$+", "+szKey$+", "+szDst$+", "+STR$(wResType%)+", "+STR$(wResId%)+", "+szData$+", "+STR$(cbData%)
  1758.     end if
  1759. %endrem ''DEBUG
  1760.  
  1761.     IF FStampResource (szSect$, szKey$, szDst$, CLng(wResType%), CLng(wResId%), szData$, CLng(cbData%)) = FALSE THEN
  1762.     ErrorMsg SID_ERR_STAMPRESOURCE, ""
  1763.     ERROR STFQUIT
  1764.     END IF
  1765. END SUB
  1766. '*************************************************************************
  1767.  
  1768.  
  1769. PUBLIC SUB CreateProgmanItem (szGroup$, szItem$, szCmd$, szOther$, cmo%) 
  1770. '** Purpose:
  1771. '** Author:
  1772. '** Arguments: szGroup$, szItem$, szCmd$, szOther$, cmo%
  1773. '*************************************************************************
  1774.     DIM szItemNew$
  1775.  
  1776.     szItemNew$ = szItem$
  1777.     IF szOther$ <> "" THEN
  1778.     szItemNew$ = szItem$ + "," + szOther$
  1779.     END IF
  1780. %rem
  1781.     if szGroup$ = "" or len(szGroup$) > 24 then
  1782.     BadArgErr 1, "CreateProgmanItem", szGroup$+", "+STR$(Cmd%)+", "+STR$(cmo%)
  1783.     end if
  1784. %endrem ''DEBUG
  1785.  
  1786.     IF FCreateProgManItem(CHR$(34)+szGroup$+CHR$(34), szItemNew$, szCmd$, CLng(cmo%)) = FALSE THEN
  1787.     ErrorMsg SID_ERR_CREATEPROGMANITEM, szItemNew$ & CHR(10) & _
  1788.          LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & LSI_INFO(11) 
  1789.     END IF
  1790.     szItemNew$ = ""
  1791. END SUB
  1792. '*************************************************************************
  1793.  
  1794. PUBLIC SUB AddDos5Help (szProgName$, szProgHelp$, cmo%) 
  1795. '** Purpose:
  1796. '** Author:
  1797. '** Arguments:
  1798. '** Returns:
  1799. '**     
  1800. '*************************************************************************
  1801. %rem
  1802.     if szProgName$ = "" OR MID$(szProgName$, 1, 1) = "@" OR LEN(szProgName$) > 8 then
  1803.     n% = 1
  1804.     elseif INSTR(szProgName$, " ") <> 0 OR INSTR(szProgName$, CHR$(9)) <> 0 then
  1805.     n% = 1
  1806.     elseif szProgHelp$ = "" then
  1807.     n% = 2
  1808.     else
  1809.     n% = 0
  1810.     end if
  1811.     if n% > 0 then
  1812.     BadArgErr n%, "AddDos5Help", szProgName$+", "+szProgHelp$+", "+STR$(cmo%)
  1813.     end if
  1814. %endrem ''DEBUG
  1815.     IF FAddDos5Help (szProgName$, szProgHelp$, CLng(cmo%)) = FALSE THEN
  1816.     ErrorMsg SID_ERR_ADDDOS5HELP, ""
  1817.     ERROR STFQUIT
  1818.     END IF
  1819. END SUB
  1820. '*************************************************************************
  1821.  
  1822.  
  1823. PUBLIC SUB CopyFile (szFullPathSrc$, szFullPathDst$, cmo%, fAppend%) 
  1824. '** Purpose:
  1825. '** Author:
  1826. '** Arguments:
  1827. '** Returns:
  1828. '**     
  1829. '*************************************************************************
  1830.     dim rc%
  1831. %rem
  1832.     if FValidFATPath(szFullPathSrc$) = FALSE then
  1833.     n% = 1
  1834.     elseif FValidFATPath(szFullPathDst$) = FALSE then
  1835.     n% = 2
  1836.     else
  1837.     n% = 0
  1838.     end if
  1839.     if n% > 0 then
  1840.     BadArgErr n%, "CopyFile", szFullPathSrc$+", "+szFullPathDst$+", "+STR$(cmo%)+", "+STR$(fAppend%)
  1841.     end if
  1842. %endrem ''DEBUG
  1843.  
  1844.     rc% = Win32CopyFile(szFullPathSrc$, szFullPathDst$, 0)  
  1845.     IF rc%  = FALSE THEN
  1846.         ErrorMsg SID_ERR_COPYFILE, szFullPathSrc$ & LdString(SID_TO) & szFullPathDst$ & CHR(10) & _
  1847.          LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & LSI_INFO(11) 
  1848.         ERROR STFQUIT
  1849.     END IF
  1850. END SUB
  1851. '*************************************************************************
  1852.  
  1853. PUBLIC SUB RemoveFile (szFullPathSrc$, cmo%) 
  1854. '** Purpose:
  1855. '** Author:
  1856. '** Arguments:
  1857. '** Returns:
  1858. '**     
  1859. '*************************************************************************
  1860. %rem
  1861.     if FValidFATPath(szFullPathSrc$) = FALSE then
  1862.     BadArgErr 1, "RemoveFile", szFullPathSrc$+", "+STR$(cmo%)
  1863.     end if
  1864. %endrem ''DEBUG
  1865.     IF  YnrcRemoveFile(szFullPathSrc$, CLng(cmo%)) = ynrcNo THEN
  1866.     'ErrorMsg SID_ERR_REMOVEFILE, szFullPathSrc$
  1867.     END IF
  1868. END SUB
  1869. '*************************************************************************
  1870.  
  1871. PUBLIC SUB BackupFile (szFullPath$, szBackup$) 
  1872. '** Purpose:
  1873. '** Author:
  1874. '** Arguments:
  1875. '** Returns:
  1876. '**     
  1877. '*************************************************************************
  1878. %rem
  1879.     if FValidFATPath(szFullPath$) = FALSE then
  1880.     n% = 1
  1881.     elseif szBackup$ = "" then
  1882.     n% = 2
  1883.     else
  1884.     n% = 0
  1885.     end if
  1886.     if n% > 0 then
  1887.     BadArgErr n%, "BackupFile", szFullPath$+", "+szBackup$
  1888.     end if
  1889. %endrem ''DEBUG
  1890.  
  1891.     IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
  1892.     ErrorMsg SID_ERR_BACKUPFILE, szFullPath$ + LdString(SID_TO) + szBackup$
  1893.     ERROR STFQUIT
  1894.     END IF
  1895. END SUB
  1896. '*************************************************************************
  1897.  
  1898. PUBLIC SUB RenameFile (szFullPath$, szBackup$) 
  1899. '** Purpose:
  1900. '** Author:
  1901. '** Arguments:
  1902. '** Returns:
  1903. '**     
  1904. '*************************************************************************
  1905. %rem
  1906.     if FValidFATPath(szFullPath$) = FALSE then
  1907.     n% = 1
  1908.     elseif szBackup$ = "" then
  1909.     n% = 2
  1910.     else
  1911.     n% = 0
  1912.     end if
  1913.     if n% > 0 then
  1914.     BadArgErr n%, "RenameFile", szFullPath$+", "+szBackup$
  1915.     end if
  1916. %endrem ''DEBUG
  1917.  
  1918.     IF YnrcBackupFile(szFullPath$, szBackup$, cmoNone) = ynrcNo THEN
  1919.     ErrorMsg SID_ERR_RENAMEFILE, szFullPath$ + LdString(SID_TO) + szBackup$
  1920.     ERROR STFQUIT
  1921.     END IF
  1922. END SUB
  1923. '*************************************************************************
  1924.  
  1925.  
  1926. %rem
  1927.  
  1928. PUBLIC SUB AddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) 
  1929. '** Purpose:
  1930. '** Author:
  1931. '** Arguments:
  1932. '** Returns:
  1933. '**     
  1934. '*************************************************************************
  1935.     if FValidInfSect(szSect$) = FALSE then
  1936.     n% = 1
  1937.     elseif szKey$ = "" then
  1938.     n% = 2
  1939.     elseif FValidFATDir(szSrc$) = FALSE then
  1940.     n% = 3
  1941.     elseif FValidFATPath(szDest$) = FALSE then
  1942.     n% = 4
  1943.     else
  1944.     n% = 0
  1945.     end if
  1946.     if n% > 0 then
  1947.     BadArgErr n%, "AddSpecialFileToCopyList", szSect$+", "+szKey$+", "+szSrc$+", "+szDest$
  1948.     end if
  1949.  
  1950.     IF FAddSpecialFileToCopyList (szSect$, szKey$, szSrc$, szDest$) = FALSE THEN
  1951.     ErrorMsg SID_ERR_ADDSPECIALFILETOCOPYLIST, szSect$ + " , " + szKey$
  1952.     ERROR STFQUIT
  1953.     END IF
  1954. END SUB
  1955.  
  1956. %endrem
  1957.  
  1958. PUBLIC SUB OpenLogFile (szFile$, fAppend%) 
  1959. '** Purpose:
  1960. '** Author:
  1961. '** Arguments:
  1962. '** Returns:
  1963. '**     
  1964. '*************************************************************************
  1965. %rem
  1966.     if FValidFATPath(szFile$) = FALSE then
  1967.     BadArgErr 1, "OpenLogFile", szFile$+", "+STR$(fAppend%)
  1968.     end if
  1969. %endrem ''DEBUG
  1970.     IF FOpenLogFile(szFile$, CLng(fAppend%)) = FALSE THEN
  1971.     ErrorMsg SID_ERR_OPENLOGFILE, szFile$
  1972.     END IF
  1973. END SUB
  1974. '*************************************************************************
  1975.  
  1976. PUBLIC SUB CloseLogFile 
  1977. '** Purpose:
  1978. '** Author:
  1979. '** Arguments:
  1980. '** Returns:
  1981. '**     
  1982. '*************************************************************************
  1983.     IF FCloseLogFile() = FALSE THEN
  1984.     ErrorMsg SID_ERR_CLOSELOGFILE, ""
  1985.     ERROR STFQUIT
  1986.     END IF
  1987. END SUB
  1988. '*************************************************************************
  1989.  
  1990. PUBLIC SUB WriteToLogFile (szStr$) 
  1991. '** Purpose:
  1992. '** Author:
  1993. '** Arguments:
  1994. '** Returns:
  1995. '**     
  1996. '*************************************************************************
  1997.     IF FWriteToLogFile(szStr$, 1) = FALSE THEN
  1998.     ErrorMsg SID_ERR_WRITETOLOGFILE, szStr$
  1999.     ERROR STFQUIT
  2000.     END IF
  2001. END SUB
  2002. '*************************************************************************
  2003.  
  2004. PUBLIC FUNCTION FindFileUsingFileOpen (szFile$)  AS STRING
  2005. '** Purpose:
  2006. '** Author:
  2007. '** Arguments:
  2008. '** Returns:
  2009. '**     
  2010. '*************************************************************************
  2011.       DIM szBuf$, wRet&
  2012.  
  2013.     szBuf$ = STRING$(512, 32)
  2014.  
  2015.     wRet& = WFindFileUsingFileOpen(szFile$, szBuf$, CLng(len(szBuf$)))
  2016.     IF wRet& = 0 THEN
  2017.     FindFileUsingFileOpen = NullTrim(szBuf$)
  2018.     ELSEIF wRet& = 1 THEN
  2019.     FindFileUsingFileOpen = ""
  2020.     ELSE
  2021.     ErrorMsg SID_ERR_FINDFILEUSINGFILEOPEN, szFile$
  2022.     ERROR STFQUIT
  2023.     END IF
  2024.  
  2025.     szBuf$ = ""
  2026. END FUNCTION
  2027. '*************************************************************************
  2028.  
  2029. PUBLIC FUNCTION IsLongDirPath (szDir$)  AS INTEGER
  2030. '** Purpose:
  2031. '** Author:
  2032. '** Arguments:
  2033. '** Returns:
  2034. '**     
  2035. '*************************************************************************
  2036.     DIM ret&
  2037.  
  2038.     IsLongDirPath = TRUE
  2039.     IF szDir$ <> "" THEN
  2040.       IF GetSymbolValue(szDir$) <> "" THEN
  2041.         RemoveSymbol szDir$
  2042.       END IF
  2043.       SetSymbolValue SYM_NOLONGDIR$, "TRUE"
  2044.       ret&=FCleanFatPath(szDir$)
  2045.       IF ret& <> FALSE THEN
  2046.         IsLongDirPath = FALSE
  2047.       ELSE
  2048.         IsLongDirPath = TRUE
  2049.       END IF
  2050.       RemoveSymbol SYM_NOLONGDIR$
  2051.     END IF
  2052. END FUNCTION
  2053.  
  2054. PUBLIC FUNCTION IsDirWritable (szDir$)  AS INTEGER
  2055. '** Purpose:
  2056. '** Author:
  2057. '** Arguments:
  2058. '** Returns:
  2059. '**     
  2060. '*************************************************************************
  2061. '    DIM szShort$ ,ret&
  2062.  
  2063. '    ret& = GetShortPathName( szDir$, szShort$)
  2064. '    IsDirWritable = CInt(Lot_IsDirWritable(szShort$))
  2065.     IsDirWritable = CInt(Lot_IsDirWritable(szDir$))
  2066. END FUNCTION
  2067. '*************************************************************************
  2068.  
  2069. PUBLIC FUNCTION IsFileWritable (szFile$)  AS INTEGER
  2070. '** Purpose:
  2071. '** Author:
  2072. '** Arguments:
  2073. '** Returns:
  2074. '**     
  2075. '*************************************************************************
  2076. %rem
  2077.     if FValidFATDir(szFile$) = FALSE then
  2078.     BadArgErr 1, "IsFileWritable", szFile$
  2079.     end if
  2080. %endrem ''DEBUG
  2081.     IsFileWritable = CInt(FIsFileWritable(szFile$))
  2082. END FUNCTION
  2083. '*************************************************************************
  2084.  
  2085. PUBLIC FUNCTION GetWindowsMajorVersion  AS INTEGER
  2086. '** Purpose:
  2087. '** Author:
  2088. '** Arguments:
  2089. '** Returns:
  2090. '**     
  2091. '*************************************************************************
  2092.     GetWindowsMajorVersion = CInt(GetVersion()) MOD 256
  2093. END FUNCTION
  2094. '*************************************************************************
  2095.  
  2096. PUBLIC FUNCTION GetWindowsMinorVersion  AS INTEGER
  2097. '** Purpose:
  2098. '** Author:
  2099. '** Arguments:
  2100. '** Returns:
  2101. '**     
  2102. '*************************************************************************
  2103.     GetWindowsMinorVersion = CInt(GetVersion()) / 256
  2104. END FUNCTION
  2105. '*************************************************************************
  2106.  
  2107. PUBLIC FUNCTION IsNewShell AS INTEGER
  2108. '** Purpose:
  2109. '** Author:
  2110. '** Arguments:
  2111. '** Returns:
  2112. '**     
  2113. '*************************************************************************
  2114.     IsNewShell = ((GetVersion() AND 15) > 3 )
  2115. END FUNCTION
  2116. '*************************************************************************
  2117.  
  2118. PUBLIC FUNCTION GetWindowsMode  AS INTEGER
  2119. '** Purpose:
  2120. '** Author:
  2121. '** Arguments:
  2122. '** Returns:
  2123. '**     
  2124. '*************************************************************************
  2125.      GetWindowsMode = 2
  2126. END FUNCTION
  2127. '*************************************************************************
  2128.  
  2129. PUBLIC FUNCTION GetWindowsDir  AS STRING
  2130. '** Purpose:
  2131. '** Author:
  2132. '** Arguments:
  2133. '** Returns:
  2134. '**     
  2135. '*************************************************************************
  2136.    DIM szBufAl$, cbBuf&, szBuf$, rv&
  2137.  
  2138.    szBufAl$ = CreateBuffer(256)  
  2139.    cbBuf&   = GetWindowsDirectory(szBufAl$, 256) 
  2140.  
  2141.    IF cbBuf& = 0 THEN
  2142.       GetWindowsDir = ""
  2143.       ErrorMsg SID_ERR_GETWINDOWSDIR, ""
  2144.       ERROR STFQUIT
  2145.    ELSE
  2146.        IF cbBuf& > 255 THEN
  2147.      ErrorMsg SID_ERR_GETWINDOWSDIR2, ""
  2148.      ERROR STFQUIT
  2149.         END IF
  2150.         szBuf$ = NullTrim(szBufAl$)
  2151.       IF MID$(szBuf$, 1, 1) = "\" THEN
  2152.      szBuf$ = MID$(GetWindowsSysDir(), 1, 2) + szBuf$
  2153.       ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  2154.      szBuf$ = MID$(GetWindowsSysDir(), 1, 3) + szBuf$
  2155.       END IF
  2156.       rv& = Lot_CleanPath(szBuf$)
  2157.       IF rv& = FALSE THEN
  2158.      ErrorMsg SID_ERR_GETWINDOWSDIR2, ""
  2159.      ERROR STFQUIT
  2160.       END IF
  2161.         GetWindowsDir = szBuf$ 
  2162.    END IF
  2163.  
  2164. END FUNCTION
  2165. '*************************************************************************
  2166.  
  2167. PUBLIC FUNCTION GetWindowsSysDir()  AS STRING
  2168. '** Purpose:
  2169. '** Author:
  2170. '** Arguments:
  2171. '** Returns:
  2172. '**     
  2173. '*************************************************************************
  2174.    DIM szBufAl$, cbBuf&, szBuf$, rv&
  2175.  
  2176.    szBufAl$ = CreateBuffer(256)
  2177.    cbBuf&   = GetSystemDirectory(szBufAl$, 256)
  2178.  
  2179.    IF cbBuf& = 0 THEN
  2180.       ErrorMsg SID_ERR_GETWINDOWSSYSDIR, ""
  2181.       ERROR STFQUIT
  2182.    ELSE
  2183.       IF cbBuf& > 255 THEN
  2184.      ErrorMsg SID_ERR_GETWINDOWSSYSDIR2, ""
  2185.      ERROR STFQUIT
  2186.       END IF
  2187.         szBuf$ = NullTrim(szBufAl$)
  2188.       IF MID$(szBuf$, 1, 1) = "\" THEN
  2189.      szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  2190.       ELSEIF MID$(szBuf$, 2, 1) <> ":" THEN
  2191.      szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  2192.       END IF
  2193.       rv& = Lot_CleanPath(szBuf$)
  2194.       IF rv& = FALSE THEN
  2195.      ErrorMsg SID_ERR_GETWINDOWSSYSDIR2, ""
  2196.      ERROR STFQUIT
  2197.       END IF
  2198.       GetWindowsSysDir = szBuf$
  2199.     END IF
  2200.  
  2201. END FUNCTION
  2202. '*************************************************************************
  2203.  
  2204. PUBLIC FUNCTION IsWindowsShared  AS INTEGER
  2205. '** Purpose:
  2206. '** Author:
  2207. '** Arguments:
  2208. '** Returns:
  2209. '**     
  2210. '*************************************************************************
  2211.    DIM szWin$, szSys$
  2212.  
  2213.    szWin$ = GetWindowsDir()
  2214.    szSys$ = GetWindowsSysDir()
  2215.  
  2216.    IF LEN(szWin$) = 0 THEN
  2217.       ErrorMsg SID_ERR_ISWINDOWSSHARED, ""
  2218.       ERROR STFQUIT
  2219.    END IF
  2220.  
  2221.    IF LEN(szSys$) <= LEN(szWin$) THEN
  2222.       IsWindowsShared = TRUE
  2223.    ELSE
  2224.       szSys$ = MID$(szSys$, 1, LEN(szWin$))
  2225.       IF szWin$ = szSys$ THEN
  2226.      IsWindowsShared = FALSE
  2227.       ELSE
  2228.      IsWindowsShared = TRUE
  2229.       END IF
  2230.    END IF
  2231.  
  2232. END FUNCTION
  2233. '*************************************************************************
  2234.  
  2235. PUBLIC FUNCTION GetScreenWidth  AS INTEGER
  2236. '** Purpose:
  2237. '** Author:
  2238. '** Arguments:
  2239. '** Returns:
  2240. '**     
  2241. '*************************************************************************
  2242.     GetScreenWidth = CInt(GetSystemMetrics(SM_CXSCREEN))
  2243. END FUNCTION
  2244. '*************************************************************************
  2245.  
  2246. PUBLIC FUNCTION GetScreenHeight  AS INTEGER
  2247. '** Purpose:
  2248. '** Author:
  2249. '** Arguments:
  2250. '** Returns:
  2251. '**     
  2252. '*************************************************************************
  2253.     GetScreenHeight = CInt(GetSystemMetrics(SM_CYSCREEN))
  2254. END FUNCTION
  2255. '*************************************************************************
  2256.  
  2257. PUBLIC SUB PrependToPath (szSrc$, szDst$, szDir$, cmo%) 
  2258. '** Purpose:
  2259. '** Author:
  2260. '** Arguments:
  2261. '** Returns:
  2262. '**     
  2263. '*************************************************************************
  2264.  
  2265. %rem
  2266.     if (FValidFATPath(szSrc$) = FALSE) AND (szSrc$ <> "") then
  2267.     n% = 1
  2268.     elseif FValidFATPath(szDst$) = FALSE then
  2269.     n% = 2
  2270.     elseif FValidFATDir(szDir$) = FALSE then
  2271.     n% = 3
  2272.     else
  2273.     n% = 0
  2274.     end if
  2275.     if n% > 0 then
  2276.     BadArgErr n%, "PrependToPath", szSrc$+", "+szDst$+", "+szDir$+", "+STR$(cmo%)
  2277.     end if
  2278. %endrem ''DEBUG
  2279.  
  2280.     IF FPrependToPath (szSrc$, szDst$, szDir$, CLng(cmo%)) = FALSE THEN
  2281.     ErrorMsg SID_ERR_PREPENDTOPATH, _
  2282.          szSrc$ & " : " & szDst$ & " : " & szDir$
  2283.     ERROR STFQUIT
  2284.     END IF
  2285. END SUB
  2286.  
  2287. '**************************************************************************
  2288. '***************************  Error Handlers  *****************************
  2289. '**************************************************************************
  2290.  
  2291. %rem --------------------------------------------------------
  2292.  
  2293. '**************************************************************************
  2294. PUBLIC SUB StfApiErr (nMsg%, szApi$, szArgs$)       ''DEBUG only
  2295. '** Purpose:
  2296. '** Author:
  2297. '** Arguments:
  2298. '** Returns:
  2299. '**     
  2300. '*************************************************************************
  2301.     select case nMsg%
  2302.     case saeFail
  2303.         lpText$ = "Failed"
  2304.     case saeInit
  2305.         lpText$ = "Already Initialized"
  2306.     case saeNYI
  2307.         lpText$ = "NYI"
  2308.     case else
  2309.         lpText$ = "Bad Arg "+LTRIM$(STR$(nMsg% - saeArg))
  2310.     end select
  2311.  
  2312.     lpText$ = lpText$ + ": "+ szApi$
  2313.     if szArgs$ <> "" then
  2314.     lpText$ = lpText + " (" + szArgs$ + ")"
  2315.     end if
  2316.     lpCaption$ = "MS-Setup Toolkit API Error"
  2317.     res& = DoMsgBox(lpText$, lpCaption$, MB_TASKMODAL+MB_ICONHAND+MB_OK)
  2318.     print lpText$
  2319.     lpText$ = ""
  2320.     lpCaption$ = ""
  2321. END SUB
  2322. '**************************************************************************
  2323.  
  2324. PUBLIC SUB BadArgErr (nArg%, szApi$, szArgs$)       ''DEBUG only
  2325. '** Purpose:
  2326. '** Author:
  2327. '** Arguments:
  2328. '** Returns:
  2329. '**     
  2330. '*************************************************************************
  2331.     StfApiErr nArg%+saeArg, szApi$, szArgs$
  2332.     ERROR STFQUIT
  2333. END SUB
  2334. '**************************************************************************
  2335.  
  2336. '** REVIEW: Move this function into common lib (we'll need it there too)
  2337. '**************************************************************************
  2338.  
  2339. PUBLIC FUNCTION FValidInfSect (szSect$)  AS INTEGER
  2340. '** Purpose:
  2341. '** Author:
  2342. '** Arguments:
  2343. '** Returns:
  2344. '**     
  2345. '*************************************************************************
  2346.     if (szSect$ = "") OR (INSTR(1,szSect$,"]") <> 0) then
  2347.     FValidInfSect = FALSE
  2348.     else
  2349.     FValidInfSect = TRUE
  2350.     end if
  2351. END FUNCTION
  2352. '**************************************************************************
  2353.  
  2354. '** REVIEW: Move this function into common lib (we'll need it there too)
  2355. '**************************************************************************
  2356.  
  2357. PUBLIC FUNCTION FValidIniFile (szFile$)  AS INTEGER
  2358. '** Purpose:
  2359. '** Author:
  2360. '** Arguments:
  2361. '** Returns:
  2362. '**     
  2363. '*************************************************************************
  2364.     if (FValidFATPath(szFile$) = FALSE) AND (UCASE$(szFile$) <> gWININI$) then
  2365.     FValidIniFile = FALSE
  2366.     else
  2367.     FValidIniFile = TRUE
  2368.     end if
  2369. END FUNCTION
  2370. '**************************************************************************
  2371.  
  2372. PUBLIC FUNCTION FValidDrive (szDrive$)  AS INTEGER
  2373. '** Purpose:
  2374. '** Author:
  2375. '** Arguments:
  2376. '** Returns:
  2377. '**     
  2378. '*************************************************************************
  2379.  
  2380.     if szDrive$ = "" then
  2381.     FValidDrive = FALSE
  2382.     elseif INSTR(1,szDrive$,"\\") = 1 then   ' UNC path
  2383.     FValidDrive = TRUE
  2384.     elseif ASC(UCASE$(szDrive$)) - ASC("A") < 0 then
  2385.     FValidDrive = FALSE
  2386.     elseif ASC(UCASE$(szDrive$)) - ASC("A") > 25 then
  2387.     FValidDrive = FALSE
  2388.     elseif LEN(szDrive$) = 1 then
  2389.     FValidDrive = TRUE
  2390.     elseif INSTR(2,szDrive$,":\") = 2 then
  2391.     FValidDrive = TRUE
  2392.     elseif INSTR(1,szDrive$,":") = 2 then
  2393.     FValidDrive = TRUE
  2394.     else
  2395.     FValidDrive = FALSE
  2396.     end if
  2397. END FUNCTION
  2398. '**************************************************************************
  2399.  
  2400. %endrem --------------------------------------------------------------
  2401.  
  2402. PUBLIC SUB SetRegKeyValue(szKey$, szValue$) 
  2403. '** Purpose:
  2404. '** Author:
  2405. '** Arguments:
  2406. '** Returns:
  2407. '**     
  2408. '*************************************************************************
  2409.     DIM i%, logfile$
  2410.  
  2411.     logfile$ = GetSymbolValue(SYM_LOGFILE$)
  2412.  
  2413.     IF RegSetValue(HKEY_CLASSES_ROOT, szKey$, REG_SZ,  szValue$, CLng(len(szKey$))) > ERROR_SUCCESS THEN
  2414.     i% = EercErrorHandler(GRC_API_FAILED, 1, "SetRegKeyValue", "", "")
  2415.     ErrorMsg SID_ERR_SETREGKEYVALUE, szKey$ + LdString(SID_TO) + szValue$
  2416.     '' Shouldn't be fatal ERROR STFQUIT
  2417.     END IF
  2418.  
  2419.     If logfile$ <> "" THEN 
  2420.     OpenLogFile logfile$,1 
  2421.     WriteToLogFile "** Successfully SetRegKeyValue " + szKey$+ ", "+ szValue$
  2422.     CloseLogFile
  2423.     END IF
  2424.  
  2425. END SUB
  2426. '**************************************************************************
  2427.  
  2428. '*************************************************************************
  2429.  
  2430. PUBLIC FUNCTION IsDriveValid (szDrive$)  AS INTEGER
  2431. '** Purpose:
  2432. '** Author:
  2433. '** Arguments:
  2434. '** Returns:
  2435. '**     
  2436. '*************************************************************************
  2437. %rem 'DEBUG
  2438.     if FValidDrive(szDrive$) = FALSE then
  2439.     BadArgErr 1, "IsDriveValid", szDrive$
  2440.     end if
  2441. %endrem ' ''DEBUG
  2442.     IsDriveValid = CInt(FIsValidDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1))
  2443. END FUNCTION
  2444. '*************************************************************************
  2445.  
  2446. PUBLIC FUNCTION IsDriveLocalHard (szDrive$)  AS INTEGER
  2447. '** Purpose:
  2448. '** Author:
  2449. '** Arguments:
  2450. '** Returns:
  2451. '**     
  2452. '*************************************************************************
  2453. %rem 'DEBUG
  2454.     if FValidDrive(szDrive$) = FALSE then
  2455.     BadArgErr 1, "IsDriveLocalHard", szDrive$
  2456.     end if
  2457. %endrem ' ''DEBUG
  2458.     IsDriveLocalHard = CInt(FIsLocalHardDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1))
  2459. END FUNCTION
  2460. '*************************************************************************
  2461.  
  2462. PUBLIC FUNCTION IsDriveRemovable (szDrive$)  AS INTEGER
  2463. '** Purpose:
  2464. '** Author:
  2465. '** Arguments:
  2466. '** Returns:
  2467. '**     
  2468. '*************************************************************************
  2469. %rem 'DEBUG
  2470.     if FValidDrive(szDrive$) = FALSE then
  2471.     BadArgErr 1, "IsDriveRemovable", szDrive$
  2472.     end if
  2473. %endrem ' ''DEBUG
  2474.     IsDriveRemovable = CInt(FIsRemoveDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1))
  2475. END FUNCTION
  2476. '*************************************************************************
  2477.  
  2478. PUBLIC FUNCTION IsDriveNetwork (szDrive$)  AS INTEGER
  2479. '** Purpose:
  2480. '** Author:
  2481. '** Arguments:
  2482. '** Returns:
  2483. '**     
  2484. '*************************************************************************
  2485. %rem 'DEBUG
  2486.     if FValidDrive(szDrive$) = FALSE then
  2487.     BadArgErr 1, "IsDriveNetwork", szDrive$
  2488.     end if
  2489. %endrem ' ''DEBUG
  2490.     IsDriveNetwork = CInt(FIsRemoteDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1))
  2491. END FUNCTION
  2492. '*************************************************************************
  2493.  
  2494. PUBLIC FUNCTION GetTotalSpaceForDrive (szDrive$)  AS LONG
  2495. '** Purpose:
  2496. '** Author:
  2497. '** Arguments:
  2498. '** Returns:
  2499. '**     
  2500. '*************************************************************************
  2501. %rem 'DEBUG
  2502.     if FValidDrive(szDrive$) = FALSE then
  2503.     BadArgErr 1, "GetTotalSpaceForDrive", szDrive$
  2504.     end if
  2505. %endrem ' ''DEBUG
  2506.     GetTotalSpaceForDrive = LcbTotalDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1)
  2507. END FUNCTION
  2508. '*************************************************************************
  2509.  
  2510. PUBLIC FUNCTION GetFreeSpaceForDrive (szDrive$)  AS LONG
  2511. '** Purpose:
  2512. '** Author:
  2513. '** Arguments:
  2514. '** Returns:
  2515. '**     
  2516. '*************************************************************************
  2517. %rem 'DEBUG
  2518.     if FValidDrive(szDrive$) = FALSE then
  2519.     BadArgErr 1, "GetFreeSpaceForDrive", szDrive$
  2520.     end if
  2521. %endrem ' ''DEBUG
  2522.     GetFreeSpaceForDrive = Lot_FreeDrive(szDrive$)
  2523. '    GetFreeSpaceForDrive = LcbFreeDrive(ASC(UCASE$(szDrive$)) - ASC("A") + 1)
  2524. END FUNCTION
  2525. '*************************************************************************
  2526.  
  2527. PUBLIC SUB GetValidDrivesList (szSymbol$) 
  2528. '** Purpose:
  2529. '** Author:
  2530. '** Arguments:
  2531. '** Returns:
  2532. '**     
  2533. '*************************************************************************
  2534. %rem 'DEBUG
  2535.     if szSymbol$ = "" then
  2536.     BadArgErr 1, "GetValidDrivesList", szSymbol$
  2537.     end if
  2538. %endrem ' ''DEBUG
  2539.     if FGetValidDrivesList(szSymbol$) = FALSE then
  2540.     ErrorMsg SID_ERR_GETVALIDDRIVESLIST, ""
  2541.     ERROR STFQUIT
  2542.     end if
  2543. END SUB
  2544. '*************************************************************************
  2545.  
  2546. PUBLIC SUB GetLocalHardDrivesList (szSymbol$) 
  2547. '** Purpose:
  2548. '** Author:
  2549. '** Arguments:
  2550. '** Returns:
  2551. '**     
  2552. '*************************************************************************
  2553. %rem 'DEBUG
  2554.     if szSymbol$ = "" then
  2555.     BadArgErr 1, "GetLocalHardDrivesList", szSymbol$
  2556.     end if
  2557. %endrem ' ''DEBUG
  2558.     if FGetLocalHardDrivesList(szSymbol$) = FALSE then
  2559.     ErrorMsg SID_ERR_GETLOCALHARDDRIVESLIST, ""
  2560.     ERROR STFQUIT
  2561.     end if
  2562. END SUB
  2563. '*************************************************************************
  2564.  
  2565. PUBLIC SUB GetRemovableDrivesList (szSymbol$) 
  2566. '** Purpose:
  2567. '** Author:
  2568. '** Arguments:
  2569. '** Returns:
  2570. '**     
  2571. '*************************************************************************
  2572. %rem 'DEBUG
  2573.     if szSymbol$ = "" then
  2574.     BadArgErr 1, "GetRemovableDrivesList", szSymbol$
  2575.     end if
  2576. %endrem ' ''DEBUG
  2577.     if FGetRemovableDrivesList(szSymbol$) = FALSE then
  2578.     ErrorMsg SID_ERR_GETREMOVABLEDRIVESLIST, ""
  2579.     ERROR STFQUIT
  2580.     end if
  2581. END SUB
  2582. '*************************************************************************
  2583.  
  2584. PUBLIC SUB GetNetworkDrivesList (szSymbol$) 
  2585. '** Purpose:
  2586. '** Author:
  2587. '** Arguments:
  2588. '** Returns:
  2589. '**     
  2590. '*************************************************************************
  2591. %rem 'DEBUG
  2592.     if szSymbol$ = "" then
  2593.     BadArgErr 1, "GetNetworkDrivesList", szSymbol$
  2594.     end if
  2595. %endrem ' ''DEBUG
  2596.     if FGetNetworkDrivesList(szSymbol$) = FALSE then
  2597.     ErrorMsg SID_ERR_GETNETWORKDRIVESLIST, ""
  2598.     ERROR STFQUIT
  2599.     end if
  2600. END SUB
  2601. '*************************************************************************
  2602.  
  2603. PUBLIC FUNCTION GetDOSMajorVersion () AS INTEGER
  2604. '** Purpose:
  2605. '** Author:
  2606. '** Arguments:
  2607. '** Returns:
  2608. '**     
  2609. '*************************************************************************
  2610.     GetDOSMajorVersion = CInt(WGetDOSMajorVersion())
  2611. END FUNCTION
  2612. '*************************************************************************
  2613.  
  2614. PUBLIC FUNCTION GetDOSMinorVersion () AS INTEGER
  2615. '** Purpose:
  2616. '** Author:
  2617. '** Arguments:
  2618. '** Returns:
  2619. '**     
  2620. '*************************************************************************
  2621.     GetDOSMinorVersion = CInt(WGetDOSMinorVersion())
  2622. END FUNCTION
  2623. '*************************************************************************
  2624.  
  2625. PUBLIC FUNCTION GetEnvVariableValue (szEnvVar$)  AS STRING
  2626. '** Purpose:
  2627. '** Author:
  2628. '** Arguments:
  2629. '** Returns:
  2630. '**     
  2631. '*************************************************************************
  2632. %rem 'DEBUG
  2633.     if szEnvVar$ = "" then
  2634.     BadArgErr 1, "GetEnvVariableValue", szEnvVar$
  2635.     end if
  2636. %endrem ' ''DEBUG
  2637.     DIM cb%, szBuf$, cbRet%
  2638.  
  2639.     cb% = 1024
  2640.     szBuf$ = STRING$(cb%, 32)
  2641.     cbRet% = CInt(CbGetEnvVariableValue(szEnvVar$, szBuf$, CLng(cb%)))
  2642.     GetEnvVariableValue = NullTrim(szBuf$)
  2643. %rem 'DEBUG
  2644.     IF cbRet% >= cb% THEN
  2645.     '' StfApiErr saeOvfl, "GetEnvVariableValue", szEnvVar$
  2646.     ErrorMsg SID_ERR_GETENVVARIABLEVALUE, ""
  2647.     ERROR STFQUIT
  2648.     END IF
  2649. %endrem ' ''DEBUG
  2650.     szBuf$ = ""
  2651. END FUNCTION
  2652. '*************************************************************************
  2653.  
  2654. PUBLIC FUNCTION GetNumWinApps () AS INTEGER
  2655. '** Purpose:
  2656. '** Author:
  2657. '** Arguments:
  2658. '** Returns:
  2659. '**     
  2660. '*************************************************************************
  2661.     GetNumWinApps = CInt(WGetNumWinApps())
  2662. END FUNCTION
  2663. '*************************************************************************
  2664.  
  2665. PUBLIC FUNCTION DoesFileExist (szFileName$, mode%)  AS INTEGER
  2666. '** Purpose:
  2667. '** Author:
  2668. '** Arguments:
  2669. '** Returns:
  2670. '**     
  2671. '*************************************************************************
  2672. %rem 'DEBUG
  2673.     if FValidFATPath(szFileName$) = FALSE then
  2674.     BadArgErr 1, "DoesFileExist", szFileName$+", "+STR$(mode%)
  2675.     end if
  2676. %endrem ' ''DEBUG
  2677. '    DoesFileExist = CInt(Lot_DoesFileExist(szFileName$, CLng(mode%)))
  2678.     DoesFileExist = CInt(Lot_DoesFileExist(szFileName$))
  2679. END FUNCTION
  2680. '*************************************************************************
  2681.  
  2682. PUBLIC FUNCTION GetDateOfFile (szFile$)  AS STRING
  2683. '** Purpose:
  2684. '** Author:
  2685. '** Arguments:
  2686. '** Returns:
  2687. '**     
  2688. '*************************************************************************
  2689. %rem 'DEBUG
  2690.     if FValidFATPath(szFile$) = FALSE then
  2691.     BadArgErr 1, "GetDateOfFile", szFile$
  2692.     end if
  2693. %endrem ' ''DEBUG
  2694.     DIM cb%, szBuf$, cbRet&
  2695.  
  2696.     cb% = 20
  2697.     szBuf$ = STRING$(cb%, 32)
  2698.     cbRet& = CbGetDateOfFile(szFile$, szBuf$, CLng(cb%))
  2699.      GetDateOfFile = NullTrim(szBuf$)
  2700.  
  2701. %rem 'DEBUG
  2702.     IF CInt(cbRet&) >= cb% THEN
  2703.     '' StfApiErr saeOvfl, "GetDateOfFile", szFile$
  2704.     ErrorMsg SID_ERR_GETDATEOFFILE, ""
  2705.     ERROR STFQUIT
  2706.     END IF
  2707. %endrem ' ''DEBUG
  2708.     szBuf$ = ""
  2709. END FUNCTION
  2710. '*************************************************************************
  2711.  
  2712. PUBLIC FUNCTION GetYearFromDate (szDate$)  AS INTEGER
  2713. '** Purpose:
  2714. '** Author:
  2715. '** Arguments:
  2716. '** Returns:
  2717. '**     
  2718. '*************************************************************************
  2719. %rem 'DEBUG
  2720.     if szDate = "" then
  2721.     BadArgErr 1, "GetYearFromDate", szDate$
  2722.     end if
  2723. %endrem ' ''DEBUG
  2724.     GetYearFromDate = VAL(MID$(szDate$, 1, 4))
  2725. END FUNCTION
  2726. '*************************************************************************
  2727.  
  2728. PUBLIC FUNCTION GetMonthFromDate (szDate$)  AS INTEGER
  2729. '** Purpose:
  2730. '** Author:
  2731. '** Arguments:
  2732. '** Returns:
  2733. '**     
  2734. '*************************************************************************
  2735. %rem 'DEBUG
  2736.     if szDate = "" then
  2737.     BadArgErr 1, "GetMonthFromDate", szDate$
  2738.     end if
  2739. %endrem ' ''DEBUG
  2740.     GetMonthFromDate = VAL(MID$(szDate$, 6, 2))
  2741. END FUNCTION
  2742. '*************************************************************************
  2743.  
  2744. PUBLIC FUNCTION GetDayFromDate (szDate$)  AS INTEGER
  2745. '** Purpose:
  2746. '** Author:
  2747. '** Arguments:
  2748. '** Returns:
  2749. '**     
  2750. '*************************************************************************
  2751. %rem 'DEBUG
  2752.     if szDate = "" then
  2753.     BadArgErr 1, "GetDayFromDate", szDate$
  2754.     end if
  2755. %endrem ' ''DEBUG
  2756.     GetDayFromDate = VAL(MID$(szDate$, 9, 2))
  2757. END FUNCTION
  2758. '*************************************************************************
  2759.  
  2760. PUBLIC FUNCTION GetHourFromDate (szDate$)  AS INTEGER
  2761. '** Purpose:
  2762. '** Author:
  2763. '** Arguments:
  2764. '** Returns:
  2765. '**     
  2766. '*************************************************************************
  2767. %rem 'DEBUG
  2768.     if szDate = "" then
  2769.     BadArgErr 1, "GetHourFromDate", szDate$
  2770.     end if
  2771. %endrem ' ''DEBUG
  2772.     GetHourFromDate = VAL(MID$(szDate$, 12, 2))
  2773. END FUNCTION
  2774. '*************************************************************************
  2775.  
  2776. PUBLIC FUNCTION GetMinuteFromDate (szDate$)  AS INTEGER
  2777. '** Purpose:
  2778. '** Author:
  2779. '** Arguments:
  2780. '** Returns:
  2781. '**     
  2782. '*************************************************************************
  2783. %rem 'DEBUG
  2784.     if szDate = "" then
  2785.     BadArgErr 1, "GetMinuteFromDate", szDate$
  2786.     end if
  2787. %endrem ' ''DEBUG
  2788.     GetMinuteFromDate = VAL(MID$(szDate$, 15, 2))
  2789. END FUNCTION
  2790. '*************************************************************************
  2791.  
  2792. PUBLIC FUNCTION GetSecondFromDate (szDate$)  AS INTEGER
  2793. '** Purpose:
  2794. '** Author:
  2795. '** Arguments:
  2796. '** Returns:
  2797. '**     
  2798. '*************************************************************************
  2799. %rem 'DEBUG
  2800.     if szDate = "" then
  2801.     BadArgErr 1, "GetSecondFromDate", szDate$
  2802.     end if
  2803. %endrem ' ''DEBUG
  2804.     GetSecondFromDate = VAL(MID$(szDate$, 18, 2))
  2805. END FUNCTION
  2806. '*************************************************************************
  2807.  
  2808. PUBLIC FUNCTION GetVersionOfFile (szFile$)  AS STRING
  2809. '** Purpose:
  2810. '** Author:
  2811. '** Arguments:
  2812. '** Returns:
  2813. '**     
  2814. '*************************************************************************
  2815. %rem 'DEBUG
  2816.     if FValidFATPath(szFile$) = FALSE then
  2817.     BadArgErr 1, "GetVersionOfFile", szFile$
  2818.     end if
  2819. %endrem ' ''DEBUG
  2820.     DIM cb%, szBuf$, cbRet&
  2821.  
  2822.     cb% = 30
  2823.     szBuf$ = STRING$(cb%, 32) 
  2824.     cbRet& = CbGetVersionOfFile(szFile$, szBuf$, CLng(cb%))
  2825.     GetVersionOfFile = NullTrim(szBuf$)
  2826. %rem 'DEBUG
  2827.     IF CInt(cbRet&) >= cb% THEN
  2828.     '' StfApiErr saeOvfl, "GetVersionOfFile", szFile$
  2829.     ErrorMsg SID_ERR_GETVERSIONOFFILE, ""
  2830.     ERROR STFQUIT
  2831.     END IF
  2832. %endrem ' ''DEBUG
  2833.     szBuf$ = ""
  2834. END FUNCTION
  2835. '*************************************************************************
  2836.  
  2837. PUBLIC FUNCTION GetVersionNthField (szVersion$, nField%)  AS LONG
  2838. '** Purpose:
  2839. '** Author:
  2840. '** Arguments:
  2841. '** Returns:
  2842. '**     
  2843. '*************************************************************************
  2844. %rem 'DEBUG
  2845.     if (nField% < 1) OR (nField% > 4) then
  2846.     BadArgErr 2, "GetVersionNthField", szVersion$+", "+STR$(nField%)
  2847.     end if
  2848. %endrem ' ''DEBUG
  2849.     GetVersionNthField = LGetVersionNthField(szVersion$, CLng(nField%))
  2850. END FUNCTION
  2851. '*************************************************************************
  2852.  
  2853. PUBLIC FUNCTION GetSizeOfFile (szFile$)  AS LONG
  2854. '** Purpose:
  2855. '** Author:
  2856. '** Arguments:
  2857. '** Returns:
  2858. '**     
  2859. '*************************************************************************
  2860. %rem 'DEBUG
  2861.     if FValidFATPath(szFile$) = FALSE then
  2862.     BadArgErr 1, "GetSizeOfFile", szFile$
  2863.     end if
  2864. %endrem ' ''DEBUG
  2865.     GetSizeOfFile = LcbGetSizeOfFile(szFile$)
  2866. END FUNCTION
  2867. '*************************************************************************
  2868.  
  2869. PUBLIC FUNCTION FindTargetOnEnvVar (szFile$, szEnvVar$)  AS STRING
  2870. '** Purpose:
  2871. '** Author:
  2872. '** Arguments:
  2873. '** Returns:
  2874. '**     
  2875. '*************************************************************************
  2876. %rem 'DEBUG
  2877.     if CchlValidFATSubPath(szFile$) = 0 then
  2878.     n% = 1
  2879.     elseif szEnvVar$ = "" then
  2880.     n% = 2
  2881.     else
  2882.     n% = 0
  2883.     end if
  2884.     if n% > 0 then
  2885.     BadArgErr n%, "FindTargetOnEnvVar", szFile$+", "+szEnvVar$
  2886.     end if
  2887. %endrem ' ''DEBUG
  2888.     DIM cb%, szBuf$, cbRet&
  2889.  
  2890.     cb% = 512
  2891.     szBuf$ = STRING$(cb%, 32)   
  2892.     cbRet& = CbFindTargetOnEnvVar(szFile$, szEnvVar$, szBuf$, CLng(cb%))
  2893.     IF CInt(cbRet&) >= cb% THEN
  2894.     ErrorMsg SID_ERR_FINDTARGETONENVVAR, ""
  2895.     ERROR STFQUIT
  2896.     END IF
  2897.     szBuf$ = NullTrim(szBuf$)
  2898.     IF MID$(szBuf$, 1, 1) = "\" THEN
  2899.        szBuf$ = MID$(CURDIR$, 1, 2) + szBuf$
  2900.     ELSEIF Len(szBuf$) > 0 AND MID$(szBuf$, 2, 1) <> ":" THEN
  2901.        szBuf$ = MID$(CURDIR$, 1, 3) + szBuf$
  2902.     END IF
  2903.     FindTargetOnEnvVar = szBuf$
  2904.     szBuf$ = ""
  2905. END FUNCTION
  2906. '*************************************************************************
  2907.  
  2908. PUBLIC FUNCTION FindFileInTree (szFile$, szDir$)  AS STRING
  2909. '** Purpose:
  2910. '** Author:
  2911. '** Arguments:
  2912. '** Returns:
  2913. '**     
  2914. '*************************************************************************
  2915. %rem 'DEBUG
  2916.     if CchlValidFATSubPath(szFile$) = 0 then
  2917.     n% = 1
  2918.     elseif FValidFATDir(szDir$) = FALSE then
  2919.     n% = 2
  2920.     else
  2921.     n% = 0
  2922.     end if
  2923.     if n% > 0 then
  2924.     BadArgErr n%, "FindFileInTree", szFile$+", "+szDir$
  2925.     end if
  2926. %endrem ' ''DEBUG
  2927.       DIM cb%, szBuf$, cbRet&
  2928.  
  2929.     cb% = 512
  2930.     szBuf$ = STRING$(cb%, 32)
  2931.     cbRet& = CbFindFileInTree(szFile$, szDir$, szBuf$, CLng(cb%))
  2932.     FindFileInTree = NullTrim(szBuf$)
  2933.  
  2934. %rem 'DEBUG
  2935.     IF CInt(cbRet&) >= cb% THEN
  2936.     '' StfApiErr saeOvfl, "FindFileInTree", szFile$+", "+szDir$
  2937.     ErrorMsg SID_ERR_FINDFILEINTREE, ""
  2938.     ERROR STFQUIT
  2939.     END IF
  2940. %endrem ' ''DEBUG
  2941.     szBuf$ = ""
  2942. END FUNCTION
  2943. '*************************************************************************
  2944.  
  2945. PUBLIC FUNCTION GetConfigSmartdrvSize () AS INTEGER
  2946. '** Purpose:
  2947. '** Author:
  2948. '** Arguments:
  2949. '** Returns:
  2950. '**     
  2951. '*************************************************************************
  2952.     GetConfigSmartdrvSize = CInt(WGetConfigSmartdrvSize())
  2953. END FUNCTION
  2954. '*************************************************************************
  2955.  
  2956. PUBLIC FUNCTION GetConfigRamdriveSize () AS INTEGER
  2957. '** Purpose:
  2958. '** Author:
  2959. '** Arguments:
  2960. '** Returns:
  2961. '**     
  2962. '*************************************************************************
  2963.     GetConfigRamdriveSize = CInt(WGetConfigRamdriveSize ())
  2964. END FUNCTION
  2965. '*************************************************************************
  2966.  
  2967. PUBLIC FUNCTION GetConfigNumBuffers () AS INTEGER
  2968. '** Purpose:
  2969. '** Author:
  2970. '** Arguments:
  2971. '** Returns:
  2972. '**     
  2973. '*************************************************************************
  2974.     GetConfigNumBuffers = CInt(WGetConfigNumBuffers())
  2975. END FUNCTION
  2976. '*************************************************************************
  2977.  
  2978. PUBLIC FUNCTION GetConfigNumFiles () AS INTEGER
  2979. '** Purpose:
  2980. '** Author:
  2981. '** Arguments:
  2982. '** Returns:
  2983. '**     
  2984. '*************************************************************************
  2985.     GetConfigNumFiles = CInt(WGetConfigNumFiles())
  2986. END FUNCTION
  2987. '*************************************************************************
  2988.  
  2989. PUBLIC FUNCTION GetConfigLastDrive () AS STRING
  2990. '** Purpose:
  2991. '** Author:
  2992. '** Arguments:
  2993. '** Returns:
  2994. '**     
  2995. '*************************************************************************
  2996.     DIM chRet&
  2997.  
  2998.     chRet& = WGetConfigLastDrive()
  2999.     if chRet& = 0 then
  3000.     GetConfigLastDrive = ""
  3001.     else
  3002.     GetConfigLastDrive = CHR$(chRet&)
  3003.     end if
  3004. END FUNCTION
  3005. '*************************************************************************
  3006.  
  3007. PUBLIC FUNCTION IsDriverInConfig (szDrv$)  AS INTEGER
  3008. '** Purpose:
  3009. '** Author:
  3010. '** Arguments:
  3011. '** Returns:
  3012. '**     
  3013. '*************************************************************************
  3014. %rem 'DEBUG
  3015.     if szDrv$ = "" then
  3016.     BadArgErr 1, "IsDriverInConfig", szDrv$
  3017.     end if
  3018. %endrem ' ''DEBUG
  3019.     IsDriverInConfig = CInt(FIsDriverInConfig(szDrv$))
  3020. END FUNCTION
  3021. '*************************************************************************
  3022.  
  3023. PUBLIC FUNCTION GetProcessorType () AS INTEGER
  3024. '** Purpose:
  3025. '** Author:
  3026. '** Arguments:
  3027. '** Returns:
  3028. '**     
  3029. '*************************************************************************
  3030.     DIM rSysInf as SysInfoType
  3031.  
  3032.     GetProcessorType = 0
  3033.  
  3034.     GetSystemInfo  rSysInf
  3035.  
  3036.     IF rSysInf.dwProcessorType = PROCESSOR_INTEL_PENTIUM THEN
  3037.     GetProcessorType = 4
  3038.     ELSEIF rSysInf.dwProcessorType = PROCESSOR_INTEL_486 THEN
  3039.     GetProcessorType = 4
  3040.     ELSEIF rSysInf.dwProcessorType = PROCESSOR_INTEL_386 THEN
  3041.     GetProcessorType = 3
  3042.     ELSEIF rSysInf.dwProcessorType = PROCESSOR_INTEL_860 THEN
  3043.     GetProcessorType = 1
  3044.     END IF
  3045.  
  3046. END FUNCTION
  3047. '*************************************************************************
  3048.  
  3049. PUBLIC SUB GetParallelPortsList (szSymbol$) 
  3050. '** Purpose:
  3051. '** Author:
  3052. '** Arguments:
  3053. '** Returns:
  3054. '**     
  3055. '*************************************************************************
  3056. %rem 'DEBUG
  3057.     if szSymbol$ = "" then
  3058.     BadArgErr 1, "GetParallelPortsList", szSymbol$
  3059.     end if
  3060. %endrem ' ''DEBUG
  3061.     if FGetParallelPortsList(szSymbol$) = FALSE then
  3062.     ErrorMsg SID_ERR_GETPARALLELPORTSLIST, ""
  3063.     ERROR STFQUIT
  3064.     end if
  3065. END SUB
  3066. '*************************************************************************
  3067.  
  3068. PUBLIC SUB GetSerialPortsList (szSymbol$) 
  3069. '** Purpose:
  3070. '** Author:
  3071. '** Arguments:
  3072. '** Returns:
  3073. '**     
  3074. '*************************************************************************
  3075. %rem 'DEBUG
  3076.     if szSymbol$ = "" then
  3077.     BadArgErr 1, "GetSerialPortsList", szSymbol$
  3078.     end if
  3079. %endrem ' ''DEBUG
  3080.     if FGetSerialPortsList(szSymbol$) = FALSE then
  3081.     ErrorMsg SID_ERR_GETSERIALPORTSLIST, ""
  3082.     ERROR STFQUIT
  3083.     end if
  3084. END SUB
  3085. '*************************************************************************
  3086.  
  3087. PUBLIC FUNCTION Has87MathChip () AS INTEGER
  3088. '** Purpose:
  3089. '** Author:
  3090. '** Arguments:
  3091. '** Returns:
  3092. '**     
  3093. '*************************************************************************
  3094.     Has87MathChip = CInt(FHas87MathChip())
  3095. END FUNCTION
  3096. '*************************************************************************
  3097.  
  3098. PUBLIC FUNCTION HasMonochromeDisplay () AS INTEGER
  3099. '** Purpose:
  3100. '** Author:
  3101. '** Arguments:
  3102. '** Returns:
  3103. '**     
  3104. '*************************************************************************
  3105.     HasMonochromeDisplay = CInt(FHasMonochromeDisplay())
  3106. END FUNCTION
  3107. '*************************************************************************
  3108.  
  3109. PUBLIC FUNCTION HasMouseInstalled () AS INTEGER
  3110. '** Purpose:
  3111. '** Author:
  3112. '** Arguments:
  3113. '** Returns:
  3114. '**     
  3115. '*************************************************************************
  3116.     HasMouseInstalled = CInt(FHasMouseInstalled())
  3117. END FUNCTION
  3118. '*************************************************************************
  3119.  
  3120. PUBLIC FUNCTION DoesDirExist (szDir$)  AS INTEGER
  3121. '** Purpose:
  3122. '** Author:
  3123. '** Arguments:
  3124. '** Returns:
  3125. '**     
  3126. '*************************************************************************
  3127. %rem 'DEBUG
  3128.     if FValidFATDir(szDir$) = FALSE then
  3129.     BadArgErr 1, "DoesDirExist", szDir$
  3130.     end if
  3131. %endrem ' ''DEBUG
  3132.     DoesDirExist = CInt(Lot_DoesDirExist(szDir$))
  3133. END FUNCTION
  3134. '*************************************************************************
  3135.  
  3136. PUBLIC FUNCTION DoesIniSectionExist (szFile$, szSect$)  AS INTEGER
  3137. '** Purpose:
  3138. '** Author:
  3139. '** Arguments:
  3140. '** Returns:
  3141. '**     
  3142. '*************************************************************************
  3143. %rem 'DEBUG
  3144.     if FValidIniFile(szFile$) = FALSE then
  3145.     BadArgErr 1, "DoesIniSectionExist", szFile$+", "+szSect$
  3146.     end if
  3147. %endrem ' ''DEBUG
  3148.     DoesIniSectionExist = CInt(FDoesIniSectionExist(szFile$, szSect$))
  3149. END FUNCTION
  3150. '*************************************************************************
  3151.  
  3152. PUBLIC FUNCTION DoesIniKeyExist (szFile$, szSect$, szKey$)  AS INTEGER
  3153. '** Purpose:
  3154. '** Author:
  3155. '** Arguments:
  3156. '** Returns:
  3157. '**     
  3158. '*************************************************************************
  3159. %rem 'DEBUG
  3160.     if FValidIniFile(szFile$) = FALSE then
  3161.     n% = 1
  3162.     elseif szKey$ = "" then
  3163.     n% = 3
  3164.     else
  3165.     n% = 0
  3166.     end if
  3167.     if n% > 0 then
  3168.     BadArgErr n%, "DoesIniKeyExist", szFile$+", "+szSect$+", "+szKey$
  3169.     end if
  3170. %endrem ' ''DEBUG
  3171.  
  3172.     DoesIniKeyExist = CInt(FDoesIniKeyExist(szFile$, szSect$, szKey$))
  3173. END FUNCTION
  3174. '*************************************************************************
  3175.  
  3176. PUBLIC FUNCTION GetIniKeyString (szFile$, szSect$, szKey$)  AS STRING
  3177. '** Purpose:
  3178. '**     
  3179. '**     
  3180. '** Author:
  3181. '** Arguments:
  3182. '**     
  3183. '**     
  3184. '** Returns:
  3185. '**     
  3186. '*************************************************************************
  3187.  
  3188. %rem 'DEBUG
  3189.     if FValidIniFile(szFile$) = FALSE then
  3190.     n% = 1
  3191.     elseif szKey$ = "" then
  3192.     n% = 3
  3193.     else
  3194.     n% = 0
  3195.     end if
  3196.     if n% > 0 then
  3197.     BadArgErr n%, "GetIniKeyString", szFile$+", "+szSect$+", "+szKey$
  3198.     end if
  3199. %endrem ' ''DEBUG
  3200.       DIM cb&, szBuf$, cbRet&
  3201.  
  3202.     cb& = 512
  3203.     szBuf$ = CreateBuffer(cb&)
  3204.     cbRet& = CbGetIniKeyString(szFile$, szSect$, szKey$, szBuf$, cb&)
  3205.  
  3206.     GetIniKeyString = NullTrim(szBuf$)
  3207.  
  3208. %rem 'DEBUG
  3209.     IF CInt(cbRet&) >= cb% THEN
  3210.     '' StfApiErr saeOvfl, "GetIniKeyString", szFile$+", "+szSect$+", "+szKey$
  3211.     ErrorMsg SID_ERR_GETINIKEYSTRING, ""
  3212.     ERROR STFQUIT
  3213.     END IF
  3214. %endrem ' ''DEBUG
  3215.     szBuf$ = ""
  3216. END FUNCTION
  3217. '*************************************************************************
  3218.  
  3219. PUBLIC SUB SetListItem (szSymbol$, n%, szListItem$) 
  3220. '** Purpose:
  3221. '** Author:
  3222. '** Arguments:
  3223. '*************************************************************************
  3224.   DIM ListLen%, i%
  3225.     ListLen% = GetListLength(szSymbol)
  3226.     IF n% < 0 THEN
  3227.        ErrorMsg SID_ERR_GETLISTITEM2, LSI_INFO(13) & _
  3228.          " : " & LSI_INFO(12) & " : " & LSI_INFO(11)
  3229.        ERROR STFQUIT
  3230.     ELSEIF n% <= ListLen% THEN
  3231.         ReplaceListItem szSymbol$, n%, szListItem$
  3232.     ELSE
  3233.         FOR i% = ListLen%+1 TO n%-1 STEP 1
  3234.         AddListItem szSymbol$, ""
  3235.         NEXT
  3236.         AddListItem szSymbol$, szListItem$
  3237.     END IF
  3238. END SUB
  3239.  
  3240. '***********************************************************************
  3241. '**
  3242. '**  SUB ErrorMsg (nMsg%, szErr$)
  3243. '**
  3244. '**  Description:  
  3245. '**      Display an error message
  3246. '**    
  3247. '**  Explicit Parameters:
  3248. '**   nMsg%    The error message number to display. Use 0 if none
  3249. '**   szErr$   An extra error message that is appended after a
  3250. '**            space only the message in nMsg%
  3251. '**    
  3252. '**  Implicit Parameters:
  3253. '**    
  3254. '***********************************************************************
  3255.  
  3256. PUBLIC SUB ErrorMsg (nMsg%, szErr$)
  3257.  
  3258.    DIM sz$, notused&
  3259.  
  3260.    IF nMsg% <> 0 THEN
  3261.       sz$ = LdString(nMsg%)
  3262.       IF szErr$ <> "" THEN sz$ = sz$ + " " + szErr$
  3263.    ELSE
  3264.       sz$ = szErr$
  3265.    END IF
  3266.    'MessageBox sz$, MB_SYSTEMMODAL + MB_OK + MB_ICONEXCLAMATION, LdString(SID_TKT_STD_TITLE)
  3267.    notused = DoMsgBox (sz$, LdString(SID_TKT_STD_TITLE) , MB_OK + MB_ICONEXCLAMATION)
  3268.  
  3269. END SUB
  3270.  
  3271. '***********************************************************************
  3272. '**
  3273. '**  SUB RegErrorMsg (msg&, szKey$, szItem$, szValue$)
  3274. '**
  3275. '**  Description:  
  3276. '**      Display an error message
  3277. '**    
  3278. '**  Explicit Parameters:
  3279. '**    
  3280. '**  Implicit Parameters:
  3281. '**    
  3282. '***********************************************************************
  3283.  
  3284. PUBLIC SUB RegErrorMsg (msg%, szKey$, szItem$, szValue$)
  3285.  
  3286.    DIM sz$, notused&
  3287.  
  3288.     sz$ = LdString(msg%)+szKey$
  3289.     If NOT szItem$ ="" Then
  3290.         sz$ = sz$+"("+szItem$+") "
  3291.     End If
  3292.     If NOT szValue$ ="" Then
  3293.         sz$ = sz$+": "+szValue$
  3294.     End If
  3295.    notused = DoMsgBox (sz$, LdString(SID_TKT_REG_ERR_TITLE) , MB_OK + MB_ICONEXCLAMATION)
  3296.  
  3297. END SUB
  3298.  
  3299.  
  3300.  
  3301. '***********************************************************************
  3302. '**
  3303. '**  Name: FatalErrorMsg 
  3304. '**  Description:  
  3305. '**      Display an error message and exit the script
  3306. '**    
  3307. '**  Explicit Parameters:
  3308. '**   nMsg%    The error message number to display. Use 0 if none
  3309. '**   szErr$   An extra error message that is appended after a
  3310. '**            space only the message in nMsg%
  3311. '**   err%     Number to be passed to ERROR function
  3312. '**    
  3313. '**  Implicit Parameters:
  3314. '**    
  3315. '***********************************************************************
  3316.  
  3317. PUBLIC SUB FatalErrorMsg (nMsg%, szErr$, nErr%)
  3318.  
  3319.    ErrorMsg nMsg%, szErr$
  3320.    ERROR nErr%
  3321.  
  3322. END SUB
  3323.  
  3324. '***********************************************************************
  3325. '**
  3326. '**  Name: ErrorMsgNoDlgExit
  3327. '**  Description:  
  3328. '**      Display an error message and set symbol to no exit dlg
  3329. '**    
  3330. '**  Explicit Parameters:
  3331. '**   nMsg%    The error message number to display. Use 0 if none
  3332. '**   szErr$   An extra error message that is appended after a
  3333. '**            space only the message in nMsg%
  3334. '**
  3335. '**  Out symbols:
  3336. '**   __LASTSTATUS   Set to "Q" to tell script not to quit   
  3337. '**    
  3338. '**  Implicit Parameters:
  3339. '**    
  3340. '***********************************************************************
  3341.  
  3342. PUBLIC SUB ErrorMsgNoDlgExit (nMsg%, szErr$)
  3343.  
  3344.    ErrorMsg nMsg%, szErr$
  3345.    SetListItem "__LASTSTATUS", 1, "Q"
  3346.  
  3347. END SUB
  3348.  
  3349. PUBLIC SUB LdStringInit () 
  3350. '** Purpose: Ensure the initialization of SYM_CUIDLL and loading of libraries
  3351. '                                before any LdString calls
  3352. '** Author:             Jack Donohue
  3353. '** Arguments:  None
  3354. '** Returns:    None
  3355. '*************************************************************************
  3356.   DIM cuidll$, t$, i%, s$, hDll&
  3357.   DIM szBuf$, cbBuf&, wRet&
  3358.  
  3359. if fLdStringInit = 0  Then
  3360.     fLdStringInit = 1
  3361.    t$ = GetSymbolValue(SYM_STF_CWDDIR$)
  3362.    cuidll$ = GetIniKeyString(t$+gINSTALLINI$, "TOOLKIT", SYM_CUIDLL$)
  3363.    If cuidll$ = "" Then
  3364.     cuidll$ = "MSCUISTF.DLL"
  3365.    End If
  3366.    SetSymbolValue SYM_CUIDLL$, cuidll$
  3367.     i% = 1
  3368.     s$ = "Start"
  3369.     WHILE (s$ <> "")
  3370.         s$ =  Lot_GetNthFieldFromIniString (GetSymbolValue(SYM_CUIDLL$), i%, "") 
  3371.         if s$ <> "" then
  3372.             hDll& = GetModuleHandle(s$)
  3373.             If hDll& = 0 Then
  3374.                 hDll& = LoadLibrary(s$)
  3375.             End if
  3376.             If hDll& = 0 Then
  3377.                 print "Couldn't get module handle:" s$
  3378.             End If
  3379.         end if
  3380.         i% = i% + 1
  3381.      WEND
  3382. End If
  3383. END SUB
  3384.  
  3385. PUBLIC FUNCTION LdString (TextID%) AS STRING
  3386. '** Purpose:
  3387. '** Author:
  3388. '** Arguments:
  3389. '** Returns:
  3390. '*************************************************************************
  3391.  
  3392.    DIM rc&, s$, i%, hDll&, cb& 
  3393.     ' Maximum string size because of RED limitation
  3394.     cb& = 256
  3395.  
  3396. ' Modify routine to search in other DLLs if string not found
  3397. ' ---------------------------
  3398.     if fLdStringInit = 0 Then
  3399.         LdStringInit
  3400.     End If
  3401.     g_strbuf$ = CreateBuffer(cb&)
  3402.     rc& = LoadString(HinstCui(), CLng(TextID%), g_strbuf$, cb&-1)
  3403.     ' Not found in generic dll
  3404.     If rc& = 0 Then
  3405.         i% = 2
  3406.         WHILE (TRUE)
  3407.             s$ =  Lot_GetNthFieldFromIniString (GetSymbolValue(SYM_CUIDLL$), i%, "") 
  3408.             if s$ <> "" then
  3409.                 hDll& = GetModuleHandle(s$)
  3410.                 If hDll& = 0 Then
  3411.                     hDll& = LoadLibrary(s$)
  3412.                 End if
  3413.                 If hDll& <> 0 Then
  3414.                     g_strbuf$ = CreateBuffer(cb&)
  3415.                     rc& = LoadString(hDll&, CLng(TextID%), g_strbuf$, cb&-1)
  3416.                     If rc& <> 0 Then
  3417.                         goto FoundTheString
  3418.                     End If
  3419.                 End If
  3420.             else
  3421.                 goto label1
  3422.             end if
  3423.             i% = i% + 1
  3424.         WEND
  3425.     End If
  3426. label1:
  3427.     ASSERT rc& <> 0, "String " + STR(TextID%) + " Not Found"
  3428. FoundTheString:
  3429.     LdString = LEFTBP(g_strbuf$, CINT(rc&)) ''** HISHI - Setp/15/95
  3430.     g_strbuf$ = ""
  3431.  
  3432. END FUNCTION
  3433.  
  3434. '** FUNCTION Lot_CleanPath (path$) AS INTEGER
  3435. '**
  3436. '** Purpose: Clean a FAT path. Removes .. and . Makes path lower case
  3437. '**          and ensures that the path has a trailing backslash.
  3438. '**            
  3439. '** Author:    DND
  3440. '** Arguments: path$. The path to modify
  3441. '** Returns:   TRUE if path is valid
  3442. '*************************************************************************
  3443.  
  3444. PUBLIC FUNCTION Lot_CleanPath (path$) AS INTEGER
  3445.  
  3446.    DIM rv%, lastchar$
  3447.    rv% = FCleanFatPath(path$)
  3448.    IF rv% <> FALSE THEN
  3449.         path = NullTrim(path$)
  3450.         lastchar$ = RIGHT$(path$, 1)
  3451. ''** HISHI - Aug/01/95
  3452. ''      IF lastchar$ <> "\" OR IsDBCSFirstAtOffset(lastchar$, 1) = 1 THEN path$ = path$ + "\"
  3453.       IF lastchar$ <> "\" THEN path$ = path$ + "\"
  3454.       path$ = LCASE$(path$)
  3455.       Lot_CleanPath = TRUE
  3456.    ELSE
  3457.       Lot_CleanPath = FALSE
  3458.    END IF
  3459.  
  3460. END FUNCTION
  3461.  
  3462. 'This was MS API but is modified by Marcel( (takes a delimiter char)
  3463. '*************************************************************************
  3464.  
  3465. PUBLIC FUNCTION Lot_GetNthFieldFromIniString (szLine$, iField%, sp$)  AS STRING
  3466. '** Purpose:
  3467. '** Author:
  3468. '** Arguments:
  3469. '** Returns:
  3470. '**     
  3471. '*************************************************************************
  3472.     DIM szStart$, i%, iNew%
  3473.  
  3474.     IF sp$ = "" THEN
  3475.     sp$ = ","
  3476.     END IF
  3477.     IF iField% < 1 THEN
  3478.     ErrorMsg SID_ERR_LOT_GNFFIS, ""
  3479.     ERROR STFQUIT
  3480.     END IF
  3481.     szStart$ = szLine$
  3482.     IF iField% <> 1 THEN
  3483.     FOR i% = 2 TO iField% STEP 1
  3484.         iNew% = INSTR(szStart$, sp$)
  3485.         IF iNew% = 0 THEN
  3486.         Lot_GetNthFieldFromIniString = ""
  3487.         GOTO GNFFIS_END
  3488.         END IF
  3489.         szStart$ = MID$(szStart$, (iNew% + 1),100)
  3490.     NEXT
  3491.     END IF
  3492.  
  3493.     iNew% = INSTR(szStart$, sp$)
  3494.     IF iNew% <> 0 THEN
  3495.     szStart$ = MID$(szStart$, 1, (iNew% - 1))
  3496.     END IF
  3497.  
  3498.     ' tqi - not sure we want to change this - depends upon what is handed in!
  3499.     ' don't know the delimiters on it.??? - caller responsible for trimming?
  3500.     ' can't find it's use -tqi
  3501.      Lot_GetNthFieldFromIniString = LTRIM$(RTRIM$(szStart$))
  3502.  
  3503. GNFFIS_END:
  3504.  
  3505. END FUNCTION
  3506.  
  3507. '*************************************************************************
  3508. '****************  Setup Basic String Functions  *********************
  3509. '*************************************************************************
  3510.  
  3511.  
  3512. '************************************************************************
  3513. DIM gDEBUG%
  3514. PUBLIC SUB SetUpAPI 
  3515.  
  3516. '*******EXECUTABLE CODE******************
  3517. 'This initializes the toolkit. 
  3518. ' This is called from initialize in main, as the very first action
  3519. 'TRAP CleanupTrap From "MSSHLSTF.DLL"
  3520.  
  3521. 'End Trap
  3522.  
  3523.   DIM cuidll$, gCursorSave&, notused%
  3524.  
  3525.   gCursorSave& = ShowWaitCursor()
  3526.   hSetup = InitSetup(COMMAND$)
  3527.  
  3528.   IF ENVIRON$(gLOTUS_DEBUG) <> "" THEN
  3529.       gDEBUG%=TRUE
  3530.   ELSE
  3531.       gDEBUG%=FALSE
  3532.   END IF
  3533.  
  3534.  
  3535. 'ON ERROR GOTO QUIT
  3536.  
  3537. 'JMD
  3538. ' This symbol now returns a list of strings which can be parsed using
  3539. ' Lot_GetNthFieldFromIniString
  3540. ' ----------------------------
  3541.     if fLdStringInit = 0 Then
  3542.         LdStringInit
  3543.     End If
  3544.   cuidll$ =  Lot_GetNthFieldFromIniString (GetSymbolValue(SYM_CUIDLL$), 1, "") 
  3545.   SetBitmap cuidll$, LOGO
  3546.   notused% = FLotusInitialize (LSI_INFO(4))
  3547.  
  3548.   '** DND: Set the K and MB strings
  3549.   gStrK$  = LdString(SID_KBYTE_CHAR)
  3550.   gStrMB$ = LdString(SID_MBYTE_CHAR)
  3551.  
  3552. END SUB
  3553.  
  3554. PUBLIC SUB      ASSERT (assertion%, msg$)
  3555.    DIM notused&
  3556.    If assertion% = FALSE Then
  3557.       If gDEBUG% = TRUE Then
  3558.      notused& = DoMsgBox (LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & _
  3559.           LSI_INFO(11) + CHR(10) + msg$ , _
  3560.           "ASSERT!!", MB_OK + MB_ICONEXCLAMATION )
  3561.  
  3562.      'MessageBox LSI_INFO(13) & " : " & LSI_INFO(12) & " : " & _
  3563.           'LSI_INFO(11) + CHR(10) + msg$ , _
  3564.           'MB_OK + MB_ICONEXCLAMATION, "ASSERT!!"
  3565.      ERROR STFQUIT
  3566.       End If
  3567.    End If
  3568.  
  3569. END SUB
  3570. '*************************************************************************
  3571. PUBLIC SUB WriteToFile(szFile$,sz$) 
  3572. '** Purpose:   Writes the string sz$ to the file szFile$
  3573. '** Author:    MZ,TV
  3574. '** Arguments: szFile$,sz$
  3575. '** Returns: 
  3576. '**     
  3577. '*************************************************************************
  3578.     IF FWriteToFile(szFile$,sz$) = FALSE THEN
  3579.     ErrorMsg SID_ERR_WRITETOLOGFILE, szFile$ + ":" + sz$
  3580.     ERROR STFQUIT
  3581.     END IF
  3582. END SUB
  3583. '**************************************************************************
  3584.  
  3585.  
  3586. PUBLIC FUNCTION Lot_RegCreateKeyEx(ByVal hKey&,ByVal szKey$) AS LONG
  3587. '** Purpose:  
  3588. '** Author:   Pam Donahue
  3589. '** Arguments: 
  3590. '** Returns: 
  3591. '**     
  3592. '*************************************************************************
  3593.     Lot_RegCreateKeyEx = CreateRegKeyEx(hKey&,szKey$)
  3594. END FUNCTION
  3595.  
  3596. '**************************************************************************
  3597.  
  3598.  
  3599. PUBLIC FUNCTION Lot_RegDelAllSubKeys(ByVal hKey&,ByVal szKey$) AS LONG
  3600. '** Purpose:  
  3601. '** Author:   Pam Donahue
  3602. '** Arguments: 
  3603. '** Returns: 
  3604. '**     
  3605. '*************************************************************************
  3606.     Lot_RegDelAllSubKeys = DeleteAllSubKeys(hKey&,szKey$)
  3607. END FUNCTION
  3608.  
  3609.  
  3610. '**************************************************************************
  3611.  
  3612.  
  3613. PUBLIC FUNCTION Lot_DoesRegKeyExistEx(ByVal hKey&,ByVal szKey$) AS LONG
  3614. '** Purpose:  
  3615. '** Author:   Pam Donahue
  3616. '** Arguments: 
  3617. '** Returns: 
  3618. '**     
  3619. '*************************************************************************
  3620.     Lot_DoesRegKeyExistEx = DoesRegKeyExistEx(hKey&,szKey$)
  3621. END FUNCTION
  3622.  
  3623. '**************************************************************************
  3624.  
  3625.  
  3626. PUBLIC FUNCTION Lot_DeleteRegKeyEx(ByVal hKey&,ByVal szKey$) AS LONG
  3627. '** Purpose:  
  3628. '** Author:   Pam Donahue
  3629. '** Arguments: 
  3630. '** Returns: 
  3631. '**     
  3632. '*************************************************************************
  3633.     Lot_DeleteRegKeyEx = DeleteRegKeyEx(hKey&,szKey$)
  3634. END FUNCTION
  3635.  
  3636. '**************************************************************************
  3637.  
  3638.  
  3639. PUBLIC FUNCTION Lot_CreateRegKeyValueEx(ByVal hKey&,        ByVal szSubKey$,_
  3640.                                         ByVal szValueName$, ByVal dwType&,_
  3641.                                         ByVal lpValueData as variant, ByVal dwDataLen& ) AS LONG
  3642. '** Purpose:  
  3643. '** Author:   Pam Donahue
  3644. '** Arguments: 
  3645. '** Returns: 
  3646. '**     
  3647. '*************************************************************************
  3648.  
  3649.     Dim regstatus&, notused&
  3650.     
  3651.     if DoesRegKeyExistEx(ByVal hKey&, ByVal szSubKey$) <> 1 then
  3652.       regstatus = CreateRegKeyEx(hKey&,szSubKey$)
  3653.     end if
  3654.     
  3655.     SELECT CASE dwType&
  3656.     CASE REG_SZ
  3657.       Lot_CreateRegKeyValueEx = CreateRegKeyValueExS(hKey&,szSubKey$,szValueName$,dwType&,dwDataLen&,lpValueData)
  3658.       
  3659.     CASE REG_EXPAND_SZ
  3660.       Lot_CreateRegKeyValueEx = CreateRegKeyValueExS(hKey&,szSubKey$,szValueName$,dwType&,dwDataLen&,lpValueData)
  3661.       
  3662.     CASE REG_DWORD
  3663.       Lot_CreateRegKeyValueEx = CreateRegKeyValueExD(hKey&,szSubKey$,szValueName$,dwType&,dwDataLen&,lpValueData)
  3664.     
  3665.     CASE ELSE
  3666.        notused& = DoMsgBox("Lot_CreateRegKeyValueEx: ValueData illegal type", "WRONG PARAMTER VALUE" ,MB_TASKMODAL+MB_ICONHAND+MB_OK)
  3667.       
  3668.     END SELECT
  3669.     
  3670. END FUNCTION
  3671. '**************************************************************************
  3672.  
  3673.  
  3674.  
  3675. PUBLIC FUNCTION Lot_SetRegKeyValueEx(ByVal hKey&, ByVal szSubKey$,_
  3676.                                      ByVal szValueName$, dwType&,_
  3677.                                      ByVal lpValueData as variant,ByVal dwDataLen&) AS LONG
  3678. '** Purpose:  
  3679. '** Author:   Pam Donahue
  3680. '** Arguments: 
  3681. '** Returns: 
  3682. '**     
  3683. '*************************************************************************
  3684.     Dim notused&
  3685.  
  3686.     SELECT CASE dwType&
  3687.     CASE REG_SZ
  3688.       Lot_SetRegKeyValueEx = SetRegKeyValueExS(hKey&,szSubKey$,szValueName$,dwType&,lpValueData,dwDataLen&)
  3689.       
  3690.     CASE REG_EXPAND_SZ
  3691.       Lot_SetRegKeyValueEx = SetRegKeyValueExD(hKey&,szSubKey$,szValueName$,dwType&,lpValueData,dwDataLen&)
  3692.       
  3693.     CASE REG_DWORD
  3694.       Lot_SetRegKeyValueEx = SetRegKeyValueExD(hKey&,szSubKey$,szValueName$,dwType&,lpValueData,dwDataLen&)
  3695.     
  3696.     CASE ELSE
  3697.        notused& = DoMsgBox("Lot_SetRegKeyValueEx: ValueData illegal type", "WRONG PARAMTER VALUE" ,MB_TASKMODAL+MB_ICONHAND+MB_OK)
  3698.       
  3699.     END SELECT
  3700.     
  3701. END FUNCTION
  3702. '**************************************************************************
  3703.  
  3704.  
  3705. PUBLIC FUNCTION Lot_GetRegKeyValueEx(ByVal hKey&, ByVal szSubKey$,_
  3706.                                      ByVal szValueName$, dwType&,_
  3707.                                      lpBuf as variant, cbBuf&) AS LONG
  3708. '** Purpose:  
  3709. '** Author:   Pam Donahue
  3710. '** Arguments: 
  3711. '** Returns: 
  3712. '**     
  3713. '*************************************************************************
  3714.    dim dwBuf&, cbStrBuf&
  3715.    dim strBuf AS STRING
  3716.    dim requestType&
  3717.  
  3718.    cbStrBuf& = 1024
  3719.    strBuf$ = CreateBuffer(cbStrBuf&)
  3720.    requestType& = dwType
  3721.    Lot_GetRegKeyValueEx = GetRegKeyValueEx(hKey&,szSubKey$,_
  3722.                           szValueName$,dwType&,cbStrBuf&,dwBuf&,strBuf$)
  3723.   IF Lot_GetRegKeyValueEx = ERROR_SUCCESS AND dwType <> REG_NONE THEN
  3724.      if dwType = REG_DWORD then
  3725.       lpBuf = dwBuf
  3726.      else
  3727.       lpBuf = strBuf
  3728.      end if
  3729.   END IF
  3730. END FUNCTION
  3731. '**************************************************************************
  3732.  
  3733.  
  3734. '** Purpose:  Retrieves the alias for long dir names  
  3735. '** Author:   Greg Lutz
  3736. '** Arguments: 
  3737. '** Returns: 
  3738. '**     
  3739. '*************************************************************************
  3740. PUBLIC FUNCTION GetShortPathName(ByVal szLong$, szShort$) AS LONG
  3741.     DIM fixed$
  3742.  
  3743.     fixed$ = CreateBuffer(256)
  3744.     GetShortPathName = Lot_GetShortPathName(szLong$, fixed$, 256)
  3745. 'Print "fixed " fixed$
  3746.      If GetShortPathName& = FALSE THEN
  3747.         szShort$ = szLong$
  3748.      Else
  3749.         szShort$ = fixed$
  3750.      End If
  3751. END FUNCTION
  3752.  
  3753. '*************************************************************************
  3754. PUBLIC FUNCTION EnableWindow (ByVal hwnd&, ByVal fEnable&) AS INTEGER
  3755. '** Purpose:   Wrapper to prevent trying to enable null windows.
  3756.  
  3757.      If hwnd = 0 then
  3758.         EnableWindow = 0
  3759.     Else
  3760.         EnableWindow = WEnableWindow(hwnd,fEnable)
  3761.     End If
  3762. END FUNCTION
  3763.