home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 November / Pcwk1197.iso / LOTUS / Eng-ins / APPROACH / INETSRCH.LSS < prev    next >
Text File  |  1996-08-06  |  5KB  |  174 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.   query$ = Selection.Cell(0,0,0).contents
  74.   If query$ = "" Then
  75.         Beep
  76.         Messagebox NOTEXT, MB_OK, ERRSTR
  77.   Else
  78.  
  79.     Dim URL As String
  80.     URL$ = "http://search.yahoo.com/bin/search?p="& query$
  81.     
  82.  
  83.     ' ** Define the search key list **
  84.     ' ********************************
  85.     Dim strKeylist(3) As String
  86.     strKeylist(0) = "http"    'http
  87.     strKeylist(1) = "htmlfile"    'htmlfile
  88.     strKeylist(2) = ".htm"    '.htm
  89.     strKeylist(3) = ".html"    '.html
  90.     
  91.     ' ** Declare the variables needed **
  92.     ' ****************************************
  93.     Dim ReturnedKey As String * 255
  94.     'Dim DDEAppKey As String
  95.     'Dim DDETopicKey As String
  96.     'Dim ReturnedDDEAppKey As String
  97.     'Dim ReturnedDDETopicKey As String
  98.     Dim strSKey As String
  99.     Dim SeekKey As String
  100.     Dim BrowserPath As String
  101.     Dim LaunchPath As String
  102.     Dim stat As Variant
  103.     
  104.     Dim QuotePos As Integer
  105.     Dim ExePos As Integer
  106.     
  107.     
  108.     ' ** Iterate through the list of keyvalues until a valid one is found **
  109.     ' **********************************************************************
  110.     Forall strPKey In strKeylist
  111.         ReturnedKey = GetKey(strPKey)        
  112.         If ReturnedKey<>"" Then
  113.             'We got something.  Were we looking for a file extension...?
  114.             If Left$(strPKey, 1) = "." Then
  115.                 'Set the DDE command to nothing
  116.                 SeekKey = Trim$(ReturnedKey)
  117.                 'Strip out excess nulls
  118.                 While InStr(SeekKey, Chr$(0)) > 0
  119.                     SeekKey=Left$(SeekKey, InStr(SeekKey, Chr$(0)) -1)
  120.                 Wend
  121.             Else
  122.                 'We weren't looking for a file extension, so get DDE keys (to
  123.                 'send message to app if running) and command key (to launch app
  124.                 'if not already running)
  125.                 'DDEAppKey = strPKey+"\shell\open\ddeexec\Application"
  126.                 'DDETopicKey = strPKey+"\shell\open\ddeexec\Topic"
  127.                 'ReturnedDDEAppKey = GetKey (DDEAppKey)
  128.                 'ReturnedDDETopicKey = GetKey (DDETopicKey)
  129.                 SeekKey = strPKey
  130.             End If    
  131.             'Get the app key pointed to
  132.             strSKey= SeekKey+"\shell\open\command"
  133.             'Get the browser path
  134.             BrowserPath = GetKey (strSKey)
  135.              'Delete all command line params:
  136.             ExePos=Instr(1,BrowserPath,".exe",1)
  137.             If ExePos<>0 Then
  138.                 BrowserPath=Left$(BrowserPath,ExePos+4)
  139.             End If
  140.             'Return path without leading quote, if there is one:
  141.             QuotePos=Instr(BrowserPath,Chr$(34))
  142.             If QuotePos<>0 Then
  143.                 BrowserPath=Mid$(BrowserPath,QuotePos+1)
  144.                 QuotePos=Instr(BrowserPath, CHR$(34))
  145.                 If QuotePos<>0 Then
  146.                     Mid$(BrowserPath,QuotePos)=" "
  147.                 End If
  148.             End If
  149.             'Create the command to send to the shell
  150.             LaunchPath=BrowserPath+" "+URL
  151.             Err=0
  152.             On Error Resume Next
  153.             
  154.             ' ** Send the appropriate commands to the shell **
  155.             ' *********************************************************
  156.             'Send the command to application to change to a new URL
  157.             '(Hah!  Wishful thinking, that I could send a DDE command from Script.  Oh well.)
  158.  
  159.             'Send the command to the shell to launch a new browser
  160.             stat=Shell(LaunchPath, 1)
  161.             'If you successfully launched, you're done
  162.             If stat = 33 Then
  163.                 Exit Sub
  164.             End If
  165.             On Error Goto 0
  166.         End If    
  167.     End Forall
  168.     'None of the registry keys pointed to valid browsers, so send an error
  169.     Msgbox NOBROWSER
  170.   End If    
  171. End Sub
  172.  
  173.  
  174.