Announcement

Collapse
No announcement yet.

Closing the first IE instance

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • David Maruca
    replied
    shdocvw: enumerating all open IE windows

    Sorry guys, I was up all night and thought I was making a new thread, but replied to this one instead.

    Leave a comment:


  • Dominic Mitchell
    replied
    Use Automation(ID binding) rather than Vtbl binding.

    Note: I did not use the PB COM browser, therefore, the class, interface and symbol names are different from those in your original code.

    Code:
    #COMPILE EXE
    
    #DIM ALL
    
    #INCLUDE "SHELL_IDBIND.INC"
    
    FUNCTION PBMAIN() AS LONG
    
      LOCAL objIE         AS ShellIWebBrowserApp
      LOCAL objShellWins  AS ShellShellWindows
    
      LOCAL vIndex        AS VARIANT
      LOCAL lCount        AS LONG
      LOCAL sName         AS STRING
    
      objShellWins = NEWCOM CLSID $CLSID_SHELLSHELLWINDOWS
      
      IF ISOBJECT(objShellWins) THEN
        OBJECT GET objShellWins.Count TO lCount
        MSGBOX "Count:" + FORMAT$(lCount) ' = 1 when tested with 1 IE instance open --> OK
        vIndex = 0
        OBJECT CALL objShellWins.Item(vIndex) TO objIE
        IF ISOBJECT(objIE) THEN   
          OBJECT GET objIE.Name TO sName
          MSGBOX "Name:" + ACODE$(sName)
          OBJECT CALL objIE.Quit
        END IF
      END IF  
      
      objIE = NOTHING
      objShellWins = NOTHING
      
    END FUNCTION
    Last edited by Dominic Mitchell; 19 Mar 2009, 06:54 PM.

    Leave a comment:


  • Heinz Salomon
    replied
    Maybe I should add that I translated the PB code from the following VB 6 code (which runs fine!):

    Code:
    'Reference to C:\WINDOWS\system32\shdocvw.dll set in IDE
    
    Option Explicit
    
    Public Sub Main()
      Dim objIE As SHDocVw.InternetExplorer
      Dim objShellWins As SHDocVw.ShellWindows
      Set objShellWins = New SHDocVw.ShellWindows
      If IsObject(objShellWins) Then
        MsgBox Str$(objShellWins.Count)
        Set objIE = objShellWins.Item(0)
        If IsObject(objIE) Then
          objIE.quit
        End If
      End If
      Set objIE = Nothing
      Set objShellWins = Nothing
    End Sub
    Can anybody help me? What did I do wrong?
    Any hint would be greatly appreciated!!

    Regards
    Heinz Salomon
    Last edited by Heinz Salomon; 19 Mar 2009, 03:41 PM.

    Leave a comment:


  • Heinz Salomon
    started a topic Closing the first IE instance

    Closing the first IE instance

    I'm trying to close the first Internet Explorer instance.
    Everything works fine, but when finally executing the quit method, the program exits with a GPF.
    What am I doing wrong?

    Heinz Salomon

    Code:
    #INCLUDE "SHDOCVW.INC"
    FUNCTION PBMAIN() AS LONG
      DIM objIE AS IWebBrowserApp
      DIM objShellWins AS IShellWindows
      objShellWins = NEWCOM CLSID $CLSID_SHDocVw_ShellWindows
      IF ISOBJECT(objShellWins) THEN
        PRINT STR$(objShellWins.Count) ' = 1 when tested with 1 IE instance open --> OK
        objIE = objShellWins.ITEM(0)
        IF ISOBJECT(objIE) THEN
          objIE.Quit
        END IF
      END IF
      objIE = NOTHING
      objShellWins = NOTHING
    END FUNCTION
Working...
X