home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 November / Pcwk1197.iso / LOTUS / Eng-ins / 123 / ICONS / 123CSS.LSS next >
Text File  |  1996-08-14  |  5KB  |  168 lines

  1. Option Public
  2. 'Option Declare
  3.  
  4. Declare Public 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
  5. Declare Public Function RegQueryValueExA Lib "advapi32" _
  6.     Alias "RegQueryValueExA" _
  7.     (Byval HKEY As Long,_
  8.     Byval lpszValueName As String,_
  9.     Byval dwreserved As Integer, _
  10.     lpdwtype As Long, _
  11.     Byval lpData As String, _
  12.     readbytes As Long) As Long
  13. Declare Public Function RegCloseKey Lib "advapi32" _
  14.     Alias "RegCloseKey" (Byval HKEY As Long) As Long
  15. Declare Public Function GetPrivateProfileStringA Lib "kernel32" _
  16.     Alias "GetPrivateProfileStringA"_
  17.     (Byval AppName As String,_
  18.     Byval KName As Any, _
  19.     Byval Def As String, _
  20.     Byval RStr As String, _
  21.     Byval nSize As Integer, _
  22.     Byval FName As String) As Integer
  23.  
  24.  
  25. Function GetKey (myKey As String) As String
  26.     
  27.     Dim HKEY_LOCAL_MACHINE As Long
  28.     Dim KEY_READ As Long
  29.     Dim HKEY_CURRENT_USER As Long
  30.     Dim HKEY_CLASSES_ROOT As Long
  31.     Dim KEY_QUERY_VALUE As Integer
  32.     Dim KEY_ENUMERATE_SUBKEYS As Integer
  33.     Dim KEY_NOTIFY As Integer
  34.     
  35.     
  36.     HKEY_CLASSES_ROOT= &H80000000
  37.     HKEY_CURRENT_USER= &H80000001
  38.     HKEY_LOCAL_MACHINE= &H80000002
  39.     
  40.     KEY_QUERY_VALUE=1
  41.     KEY_ENUMERATE_SUBKEYS=8
  42.     KEY_NOTIFY=16
  43.     KEY_READ=KEY_QUERY_VALUE Or KEY_ENUMERATE_SUBKEYS Or KEY_NOTIFY
  44.     
  45.     Dim lstat As Long    
  46.     Dim KeyVal As Long
  47.     Dim KeyReadBytes As Long
  48.     Dim ValueType As Long
  49.     Dim ValueName As String
  50.     Dim ReturnedKeyContents As String * 255
  51.     ReturnedKeyContents=String$(255,Chr$(32))
  52.     
  53.     'Open the registry and get the key address (myKey)
  54.     lstat=RegOpenKeyExA(HKEY_CLASSES_ROOT,myKey,0,KEY_READ,KeyVal)
  55.     KeyReadBytes = 255
  56.     'Get the value of the key at that address (ReturnedKeyContents)
  57.     lstat=RegQueryValueExA(KeyVal,ValueName,0,ValueType, _
  58.     ReturnedKeyContents,KeyReadBytes)
  59.     'Close the registry, thank you (you wouldn't want the keys to escape!)
  60.     regclosekey(KeyVal)
  61.     
  62.     'Get rid of the extra characters in the keystring
  63.     ReturnedKeyContents = Rtrim$(ReturnedKeyContents)
  64.     ReturnedKeyContents = Left$(ReturnedKeyContents,(Len(ReturnedKeyContents)-1))
  65.     
  66.     GetKey = ReturnedKeyContents
  67. End Function
  68.  
  69.  
  70.  
  71. Sub Main
  72.     %Include "Inistrs.lss"
  73.     
  74.     Dim URL As String
  75.     URL$=" http://www.support.lotus.com"    'The URL to open
  76.     
  77.     ' ** Define the search key list **
  78.     ' ********************************
  79.     Dim strKeylist(3) As String
  80.     strKeylist(0) = "http"    'http
  81.     strKeylist(1) = "htmlfile"    'htmlfile
  82.     strKeylist(2) = ".htm"    '.htm
  83.     strKeylist(3) = ".html"    '.html
  84.     
  85.     ' ** Declare the variables needed **
  86.     ' ****************************************
  87.     Dim ReturnedKey As String * 255
  88.     'Dim DDEAppKey As String
  89.     'Dim DDETopicKey As String
  90.     'Dim ReturnedDDEAppKey As String
  91.     'Dim ReturnedDDETopicKey As String
  92.     Dim strSKey As String
  93.     Dim SeekKey As String
  94.     Dim BrowserPath As String
  95.     Dim LaunchPath As String
  96.     Dim stat As Variant
  97.     
  98.     Dim QuotePos As Integer
  99.     Dim ExePos As Integer
  100.     
  101.     
  102.     ' ** Iterate through the list of keyvalues until a valid one is found **
  103.     ' **********************************************************************
  104.     Forall strPKey In strKeylist
  105.         ReturnedKey = GetKey(strPKey)        
  106.         If ReturnedKey<>"" Then
  107.             'We got something.  Were we looking for a file extension...?
  108.             If Left$(strPKey, 1) = "." Then
  109.                 'Set the DDE command to nothing
  110.                 SeekKey = Trim$(ReturnedKey)
  111.                 'Strip out excess nulls
  112.                 While InStr(SeekKey, Chr$(0)) > 0
  113.                     SeekKey=Left$(SeekKey, InStr(SeekKey, Chr$(0)) -1)
  114.                 Wend
  115.             Else
  116.                 'We weren't looking for a file extension, so get DDE keys (to
  117.                 'send message to app if running) and command key (to launch app
  118.                 'if not already running)
  119.                 'DDEAppKey = strPKey+"\shell\open\ddeexec\Application"
  120.                 'DDETopicKey = strPKey+"\shell\open\ddeexec\Topic"
  121.                 'ReturnedDDEAppKey = GetKey (DDEAppKey)
  122.                 'ReturnedDDETopicKey = GetKey (DDETopicKey)
  123.                 SeekKey = strPKey
  124.             End If    
  125.             'Get the app key pointed to
  126.             strSKey= SeekKey+"\shell\open\command"
  127.             'Get the browser path
  128.             BrowserPath = GetKey (strSKey)
  129.              'Delete all command line params:
  130.             ExePos=Instr(1,BrowserPath,".exe",1)
  131.             If ExePos<>0 Then
  132.                 BrowserPath=Left$(BrowserPath,ExePos+4)
  133.             End If
  134.             'Return path without leading quote, if there is one:
  135.             QuotePos=Instr(BrowserPath,Chr$(34))
  136.             If QuotePos<>0 Then
  137.                 BrowserPath=Mid$(BrowserPath,QuotePos+1)
  138.                 QuotePos=Instr(BrowserPath, CHR$(34))
  139.                 If QuotePos<>0 Then
  140.                     Mid$(BrowserPath,QuotePos)=" "
  141.                 End If
  142.             End If
  143.             'Create the command to send to the shell
  144.             LaunchPath=BrowserPath+" "+URL
  145.             Err=0
  146.             On Error Resume Next
  147.             
  148.             ' ** Send the appropriate commands to the shell **
  149.             ' *********************************************************
  150.             'Send the command to application to change to a new URL
  151.             '(Hah!  Wishful thinking, that I could send a DDE command from Script.  Oh well.)
  152.  
  153.             'Send the command to the shell to launch a new browser
  154.             stat=Shell(LaunchPath, 1)
  155.             'If you successfully launched, you're done
  156.             If stat = 33 Then
  157.                 Exit Sub
  158.             End If
  159.             On Error Goto 0
  160.         End If    
  161.     End Forall
  162.     'None of the registry keys pointed to valid browsers, so send an error
  163.     Msgbox NOBROWSER
  164.     
  165. End Sub
  166.  
  167.  
  168.