home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 October A / Pcwk10a98.iso / Lotus / LOTUS / 123 / ICONS / STARTAPP.LSS < prev    next >
Text File  |  1998-04-15  |  8KB  |  309 lines

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