home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 November / Pcwk1197.iso / LOTUS / Eng-ins / 123 / ICONS / STARTAPP.LSS < prev    next >
Text File  |  1996-09-17  |  8KB  |  304 lines

  1.  
  2. Declare Function GetPrivateProfileString Lib "Kernel" _
  3. (Byval lpApplicationName As String, _
  4. Byval lpKeyName As String, Byval lpDefault As String, _
  5. Byval lpReturnedString As String, Byval nSize As Integer, _
  6. Byval lpFileName As String) As Integer
  7.  
  8. Declare Function GetPrivateProfileStringA Lib "kernel32"_
  9. Alias "GetPrivateProfileStringA"_
  10. (Byval lpApplicationName As String, Byval lpKeyName As Any,_
  11. Byval lpDefault As String, Byval lpReturnedString As String,_
  12. Byval nSize As Long, Byval lpFileName As String) As Long
  13.  
  14. Declare Function GetWindowsDirectory LIB "kernel32" ALIAS "GetWindowsDirectoryA" (ByVal szBuf$,ByVal cbBuf&) AS LONG
  15.  
  16. ' Registry declarations
  17. Declare Function RegOpenKeyExA Lib "advapi32" Alias "RegOpenKeyExA" (Byval HKEY As Long,Byval lpszSubKey As String,Byval dwreserved As Integer,Byval samDesired As Long, keyresult As Long) As Long
  18. Declare Function RegQueryValueExA Lib "advapi32" Alias "RegQueryValueExA" (Byval HKEY As Long,Byval lpszValueName As String,Byval dwreserved As Integer, lpdwtype As Long, Byval lpData As String, readbytes As Long) As Long
  19. Declare Function RegCloseKey Lib "advapi32" Alias "RegCloseKey" (Byval HKEY As Long) As Long
  20.  
  21. '---------------------------- Helper Functions ---------------------------------------
  22. FUNCTION NullTrim (szString$)
  23.    DIM l%
  24.  
  25.    l% = INSTR (szString, CHR$(0))
  26.    IF l% > 0 THEN
  27.          NullTrim = RTrim$(LEFT$ (szString, l% - 1))
  28.    ELSEIF l% = 0 THEN
  29.          NullTrim = RTrim$(szString)
  30.    ELSE
  31.       NullTrim = ""
  32.    END IF
  33. END FUNCTION
  34.  
  35.  
  36. FUNCTION GetWindowsDir()
  37.    DIM szBufAl$, cbBuf&, szBuf$, rv&
  38.  
  39.     szBufAl$ = STRING$(256, " ")
  40.    cbBuf&   = GetWindowsDirectory(szBufAl$, 256) 
  41.  
  42.    IF cbBuf& = 0 THEN
  43.       GetWindowsDir = ""
  44.       Print SID_ERR_GETWINDOWSDIR, ""
  45.       ERROR STFQUIT
  46.    ELSE
  47.        IF cbBuf& > 255 THEN
  48.             Print SID_ERR_GETWINDOWSDIR2, ""
  49.             ERROR STFQUIT
  50.         END IF
  51.         szBuf$ = NullTrim(szBufAl$)
  52.         if Right(szBuf$,1) <> "\" THEN szBuf$ = szBuf$ + "\"
  53.         GetWindowsDir = szBuf$ 
  54.    END IF
  55. END FUNCTION
  56.  
  57.  
  58. Function GetWord(searchstr As String, sepstr As String, wordnum As Integer) As String
  59.     Dim done As Integer 
  60.     done = False
  61.     Dim beginpos As Integer 
  62.     beginpos = 0
  63.     Dim endpos As Integer 
  64.     endpos = 0
  65.     Dim i As Integer
  66.     
  67.     For i = 1 To wordnum
  68.         beginpos = endpos + 1
  69.         endpos = Instr(beginpos, searchstr, sepstr)
  70.         If endpos = 0 Then
  71.             endpos = Len(searchstr) + 1
  72.             Exit For
  73.         End If
  74.     Next i
  75.     
  76.     GetWord = Mid$(searchstr,beginpos,endpos-beginpos)
  77. End Function
  78.  
  79.  
  80. Function SearchRegistry(ApplicationName, ExeName)
  81.     ' Return the full path for an application
  82.     ' the applicationName should be in the form of Approach.exe
  83.     ' WordPro.exe etc..
  84.     ' if "" is returned then the app was not found in the registry
  85.     
  86.     
  87.     Dim hKey As Long
  88.     Dim HKEY_LOCAL_MACHINE As Long
  89.     Dim KEY_READ As Long
  90.     Dim HKEY_CURRENT_USER As Long
  91.     Dim ValueType As Long
  92.     Dim ReturnedKeyContents As String * 255
  93.     Dim readbytes As Long
  94.     ReturnedKeycontents$=String$(255,Chr$(32))
  95.     
  96.     HKEY_LOCAL_MACHINE= &H80000002
  97.     HKEY_CURRENT_USER= &H80000001
  98.     
  99.     KEY_QUERY_VALUE=1
  100.     KEY_ENUMERATE_SUBKEYS=8
  101.     KEY_NOTIFY=16
  102.     KEY_READ=KEY_QUERY_VALUE Or KEY_ENUMERATE_SUBKEYS Or KEY_NOTIFY
  103.     ReadBytes=255
  104.     
  105.  
  106. '
  107. '    1st try: Look Under "HLM\SoftWare\Microsoft\Windows\CurrentVersion\App Paths\"
  108. '
  109.  
  110.     BaseName$ = "SoftWare\Microsoft\Windows\CurrentVersion\App Paths\"   ' this is your key
  111.     KeyName$ = BaseName$ + ExeName
  112.     ValueName$ = ""  ' this is your value to look up
  113.     
  114.     Statopen = RegOpenKeyExA(HKEY_LOCAL_MACHINE,KeyName$,0,KEY_READ,hKey)
  115.     Print "OpenKey " StatOpen    
  116.     
  117.     StatQuery = RegQueryValueExA(hKey,ValueName$,0,valueType, ReturnedKeyContents$,ReadBytes)
  118.     Print "Query " StatQuery    
  119.  
  120.     regclosekey(hKey)
  121.     
  122.     If StatQuery = Success Then
  123.         SearchRegistry = Left$(ReturnedKeyContents$,ReadBytes-1)
  124.         Exit Function
  125.     End If
  126.  
  127.  
  128. '
  129. '    2nd try: Look Under "HLM\SoftWare\Lotus\" + ApplicationName + "\97.0\"
  130. '
  131.  
  132.     KeyName$ = "SoftWare\Lotus\" + ApplicationName + "\97.0"   ' this is your key
  133.     ValueName$ = "Path"  ' this is your value to look up
  134.  
  135.     Statopen = RegOpenKeyExA(HKEY_LOCAL_MACHINE,KeyName$,0,KEY_READ,hKey)
  136.     Print "OpenKey " StatOpen    
  137.     
  138.     StatQuery=RegQueryValueExA(hKey,ValueName$,0,valueType, ReturnedKeyContents$,ReadBytes)
  139.     Print "Query " StatQuery    
  140.  
  141.     If StatQuery = Success Then
  142.         ExePath = Left$(ReturnedKeyContents$,ReadBytes-1)
  143.     Else
  144.         SearchRegistry = ""
  145.         Exit Function
  146.     End If
  147.  
  148.     ValueName$ = "Name"  ' this is your value to look up
  149.     StatQuery = RegQueryValueExA(hKey,"Name",0,valueType, ReturnedKeyContents$,ReadBytes)
  150.     Print "Query " StatQuery    
  151.  
  152.     regclosekey(hKey)
  153.  
  154.     If StatQuery = Success Then
  155.         ExeName=Left$(ReturnedKeyContents$,ReadBytes-1)
  156.         SearchRegistry = ExePath + ExeName
  157.         Exit Function
  158.     Else
  159.         SearchRegistry = ""
  160.     End If
  161. End Function
  162.  
  163. Function SearchIni(CommonName)
  164.     Dim IniData As String * 255
  165.     Dim IniData2 As String 
  166.     Dim Stat    
  167.     Dim IniFileName As String
  168.     IniData = String$(255,0)
  169.     IniFileName = GetWindowsDir() + "Lotus.Ini"
  170.     
  171.     If IsDefined("Win16") Then
  172.         Stat = GetPrivateProfileString("Lotus Applications",CommonName,"",IniData,255,IniFileName)
  173.         IniData2=Left$(IniData,Stat)
  174.     End If
  175.     
  176.     If IsDefined("Win32") Then
  177.         Stat = GetPrivateProfileStringA("Lotus Applications",CommonName,"",IniData,255,IniFileName)
  178.         IniData2=Left$(IniData,Stat)
  179.     End If
  180.     
  181.     If IniData2 <> "" Then
  182.         IniData2 = GetWord(IniData2," ",1)
  183.         
  184.     End If
  185.     
  186.     SearchIni = IniData2    
  187. End Function
  188.  
  189.  
  190. Function LaunchApp (ExeName, AppName, IniName)
  191. '    ExeName : listed under HLM\SoftWare\Microsoft\Windows\CurrentVersion\App Paths\
  192. '    AppName : listed under HLM\SoftWare\Lotus\
  193. '    IniName : listed under lotus.ini
  194.     
  195.     
  196.     WindowStyle = 3 ' Maximized with Focus
  197.     Status = 0
  198.     
  199.     If IsDefined("Win32") Then
  200.         FullPath = SearchRegistry(AppName, ExeName)
  201.     End If
  202.     
  203.     If FullPath = "" Then
  204.         FullPath = SearchIni(IniName)
  205.     End If
  206.     
  207.     FullPath = Trim(FullPath)
  208.     
  209.     If FullPath <> "" Then
  210.         Status =  Shell(FullPath,WindowStyle)    
  211.     End If
  212.     
  213.     LaunchApp = Status
  214. End Function
  215.  
  216.  
  217. Sub Main
  218. End Sub
  219.  
  220.  
  221. '---------------------------- Lauching Application ---------------------------------------
  222. '    ExeName : listed under HLM\SoftWare\Microsoft\Windows\CurrentVersion\App Paths\
  223. '    AppName : listed under HLM\SoftWare\Lotus\
  224. '    IniName : listed under lotus.ini
  225.  
  226. Sub Acrobat
  227.     ExeName = "acroread.exe" 
  228.     AppName = "DocOnline"
  229.     IniName = "DocOnline"
  230.     
  231.     FullPath = LaunchApp(ExeName, AppName, IniName)    
  232. End Sub
  233.  
  234.  
  235. Sub Approach()
  236.     ExeName = "Approach.Exe"
  237.     AppName = "Approach"
  238.     IniName = "Approach"
  239.     
  240.     FullPath = LaunchApp(ExeName, AppName, IniName)    
  241. End Sub
  242.  
  243.  
  244. Sub ccMail
  245.     ExeName = "ccMail.exe"
  246.     AppName = "ccMail"
  247.     IniName = "ccMail"
  248.     
  249.     FullPath = LaunchApp(ExeName, AppName, IniName)
  250. End Sub
  251.  
  252.  
  253. Sub Freelance
  254.     ExeName = "f32main.exe"
  255.     AppName = "Freelance"
  256.     IniName = "FLW"
  257.     
  258.     FullPath = LaunchApp(ExeName, AppName, IniName)    
  259. End Sub
  260.  
  261.  
  262. Sub Notes
  263.     ExeName = "Notes.exe"
  264.     AppName = "Notes"
  265.     IniName = "Notes"
  266.     
  267.     FullPath = LaunchApp(ExeName, AppName, IniName)    
  268. End Sub
  269.  
  270.  
  271. Sub Organizer
  272.     ExeName = "Org32.exe"
  273.     AppName = "Organizer"
  274.     IniName = "organize"
  275.     
  276.     FullPath = LaunchApp(ExeName, AppName, IniName)    
  277. End Sub
  278.  
  279.  
  280. Sub Screencam
  281.     ExeName = "scrncam.exe"
  282.     AppName = "ScreenCam"
  283.     IniName = "ScreenCam"
  284.     
  285.     FullPath = LaunchApp(ExeName, AppName, IniName)    
  286. End Sub
  287.  
  288.  
  289. Sub WordPro
  290.     ExeName = "WordPro.exe"
  291.     AppName = "WordPro"
  292.     IniName = "AmiPro"
  293.     
  294.     FullPath = LaunchApp(ExeName, AppName, IniName)    
  295. End Sub
  296.  
  297. Sub SmartPics
  298.     ExeName = "SmartPics.exe"
  299.     AppName = "SmartPics"
  300.     IniName = "SmartPics"
  301.     
  302.     FullPath = ""
  303. End Sub
  304.