none
Script InternetExplorer.Application + img scr

    Pergunta

  • Viva,
    Gostava de obter uma pequena ajuda cujo não estou a compreender o porque de isto estar acontecer.
    Bem, o que necessito é abrir o explorer e inserir um simples gif (imagem)
    eis o código:

    File: Iexplorer.vbs

    On Error Resume Next
    Dim StringPathImage
    StringPathImage = "c:\dados"
    strComputer = "."
    Set objWMIService = GetObject("Winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor")
    For Each objItem in colItems
        intHorizontal = objItem.ScreenWidth
        intVertical = objItem.ScreenHeight
    Next
    Set objExplorer = CreateObject ("InternetExplorer.Application")
    objExplorer.Navigate "about:blank"  
    objExplorer.ToolBar = 0
    objExplorer.StatusBar = 0
    objExplorer.Left = (intHorizontal - 400) / 2
    objExplorer.Top = (intVertical - 400) / 2
    objExplorer.Width = 400
    objExplorer.Height = 400
    objExplorer.Visible = 1            
    objExplorer.Document.Title = "Logon script in progress"
    objExplorer.Document.Body.InnerHTML = "<img src='file:///" & stringpathimage & "\progress_1.gif' width='200' height='200'> "

    Ao executar este script a imagem não aparece. Porque?
    Se realizar o mesmo script em .hta a imagem aparece perfeitamente.
    Se criar um mapeamento de rede, exemplo h:\server\scripts, e executar o script a imagem aparece perfeitamente.

    Tentei:
    <img src='C:\Dados\progress_1.gif'> não funciona
    <img src='file:///C:\Dados\progress_1.gif'> não funciona
    <img src='file:///C:/Dados/progress_1.gif'> não funciona
    <img src=""C:\Dados\progress_1.gif""> não funciona

    Chego a uma conclusão que não consigo inserir a imagem quando executo o script localmente.

    Pesquisei no google e em muitos scripts, até mesmo no forum e as respostas para o meu problema são sempre as mesmas <img src='file:///<path image>'>, acontece que não funciona.

    Cumprimentos,

    quinta-feira, 28 de janeiro de 2010 16:45

Respostas

  • Viva Jesiel,

    Depois de tanta pesquisa localizei um script que escreve no regedit algo. Sinceramente não sei o que se passa que agora todos os script's acabaram por funcionar.
    Sei que tem haver com as definições de segurança do IE, agora não sei qual.

    Com esta alteração no regedit a imagem já aparece perfeitamente na pasta local. Verifique se no seu reg tem mencionado as strings que o código em baixo apresenta.
    Não esquecer que estou a usar o sistema windows vista with Sp2, com o Internet Explorer 8.

    Option Explicit

    Dim objWshShell, objFSO, strVariableName, objExplorer, strScriptFileDirectory

    Set objWshShell = WScript.CreateObject("WScript.Shell")
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    strVariableName = "WhateverYouWant"
    strScriptFileDirectory = objFSO.GetParentFolderName(wscript.ScriptFullName)

    ' Displays the Internet Explorer informational message window.
    DisplayIEwindow

    wscript.Sleep 4000

    CloseIEwindow
    Wscript.Quit

     

    ' ~$~----------------------------------------~$~
    '            FUNCTIONS & SUBROUTINES
    ' ~$~----------------------------------------~$~
    Sub DisplayIEwindow
    ' Executes an Internet Explorer window.
    Dim strIEregistryKey, strCheckAssociationsKey
    strIEregistryKey = "NotExist"

    On Error Resume Next

    ' The following registry entry will enable local files such as .GIFs to be displayed using IE 7.0, but this setting will not take effect if the web browser is already open (there will be no error messages displayed if this is the case).
    strIEregistryKey = objWshShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\blank\about")

    wscript.echo strIEregistryKey

    If strIEregistryKey = "NotExist" Then
       objWshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\blank\about", 2, "REG_DWORD"
     wscript.echo "escreve"
    End If

    ' Attempts to temporarily prevent Internet Explorer checking to see if it is the default browser (storing the existing value to be restored after disaplying the script's IE window).
    strCheckAssociationsKey = objWshShell.RegRead("HKCU\Software\Microsoft\Internet Explorer\Main\Check_Associations")
    objWshShell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\Check_Associations", "no", "REG_SZ"

    Set objExplorer = CreateObject ("InternetExplorer.Application")
    objExplorer.Navigate "about:blank"
    objExplorer.ToolBar = 0
    objExplorer.StatusBar = 0
    objExplorer.Left = 200
    objExplorer.Top = 100
    objExplorer.Width = 450
    objExplorer.Height = 220
    objExplorer.Visible = 1
    objExplorer.Document.Body.Scroll = "no"
    objExplorer.Document.Body.Style.Cursor = "wait"
    objExplorer.Document.Title = "Window Title Name Goes Here" & String(50, ".")

    objExplorer.Document.Body.InnerHTML = "<img src='file:///" & strScriptFileDirectory & "\pro.gif' align='left'> " & "<b><font size='4'><font color='#008000'>" & strVariableName & " . . .</font></b><br>This application is currently being installed, and may take up to 5 minutes to complete.<p align='center'><font size='3'><b>Installation Start Time:</b> " & Time & "</p></p><p align='center'><font size='2'>*closing this window will <u>not</u> abort the installation<font color='#808080'><br> (this window will close automatically after the process completes)</font></font>"

    ' Attempts to make the open IE window active.
    WScript.Sleep 1000
    objWshShell.AppActivate "Window Title Name Goes Here"
    WScript.Sleep 1001

    ' Removes the added registry key setting used with IE 7.0 if it did not already exist.
    If strIEregistryKey = "NotExist" Then
       objWshShell.RegDelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\blank\"
    End If

    ' Restores the original Check_Associations registry setting from the script's stored value.
    objWshShell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\Check_Associations", strCheckAssociationsKey, "REG_SZ"
    End Sub

    ' ~$~----------------------------------------~$~
    Sub CloseIEwindow
    ' Attemps to close the Internet Explorer window if it was opened by this script.
    On Error Resume Next
    objExplorer.Quit
    End Sub

    Abraço e obrigado pela colaboração.

    • Marcado como Resposta RGaspar domingo, 31 de janeiro de 2010 19:42
    domingo, 31 de janeiro de 2010 19:41
  • Viva,

    Problema resolvido.
    O script em cima funciona perfeitamente, pois o que faz é adicionar no internet explorer na tab security > trusted sites o link about:blank, pois no ie7 e no ie8 é importante.

    Não me questionem porque tem que ser assim, mas todos os forums que tive a ler falam muito do comando objExplorer.Navigate "about:blank" e objExplorer.Navigate "about:tabs".

    Não entendo porque mapeamento o folder, o script sem adicionarmos o link about:blank funciona, e localmente não acontece, mas ok, está resolvido.

    Obrigado

    • Marcado como Resposta RGaspar segunda-feira, 1 de fevereiro de 2010 00:27
    segunda-feira, 1 de fevereiro de 2010 00:26

Todas as Respostas

  • Viva,
    Alguma solução para a questão que apresento?
    Obrigado

    quinta-feira, 28 de janeiro de 2010 23:12
  • Olá,

    RGaspar, eu testei seu script e funcionou... sem problemas.

    Você verificou as permissões da pasta c:\dados ? Tente dar permissão para o grupo everyone...

    Talvez seja isso.


    Até mais,

    Jesiel

    Obs.: Se útil, classifique



    sexta-feira, 29 de janeiro de 2010 10:59
    Moderador
  • Viva Jesiel,

    Funcionou????
    Não tem a pasta partilhada pois não? Tem uma simples pasta com o nome qualquer e dentro da mesma tem a imagem e o script, correcto?

    Inseri o grupo everyone com permissões máximas mas o problema persiste.

    Sinceramente não percebo porque comigo não funciona, tenho o internet explorer 8.

    Tem mais alguma ideia que possa estar a escapar-me que possa fornecer?

    Obrigado

    sexta-feira, 29 de janeiro de 2010 16:30
  • Viva Jesiel,

    Testei o meu código em vários sistemas, windows xp, windows seven, windows vista, windows 2008 server, com o internet explorer 7 e 8 e continuo a não ver a imagem.

    Algo está a bloquear e sinceramente não sei o que possa ser. Alterei o código usando a string <img src='file:///c:\dados\progress_1.gif'> para obter um caminho em html mais correcto e o resultado não é agradavel, isto é, continua a não aparecer.

    Como disse anteriormente se criar um mapeamento da pasta dados, exemplo z:\dados, consigo visualizar a imagem perfeitamente. A minha duvida é porque com o mapeamento para Z:\, W:\, etc..etc consigo ver a imagem e localmente ( c:\dados ) não consigo obter qualquer resultado!?? estranho não?

    Já tentei comentar este post ( http://blogs.technet.com/heyscriptingguy/archive/2005/03/16/how-can-i-display-a-progress-bar-or-something-similar-while-my-script-runs.aspx ) mas não consigo, o código que está neste url é praticamente igual ao que eu estou a escrever.

    será que é algum activex? permissões de pasta não me acredito porque criando uma pasta localmente a mesma é definida com permissões máximas.

    Qual é o seu internet explorer?

    Obrigado
    sábado, 30 de janeiro de 2010 14:55
  • Viva Jesiel,

    Depois de tanta pesquisa localizei um script que escreve no regedit algo. Sinceramente não sei o que se passa que agora todos os script's acabaram por funcionar.
    Sei que tem haver com as definições de segurança do IE, agora não sei qual.

    Com esta alteração no regedit a imagem já aparece perfeitamente na pasta local. Verifique se no seu reg tem mencionado as strings que o código em baixo apresenta.
    Não esquecer que estou a usar o sistema windows vista with Sp2, com o Internet Explorer 8.

    Option Explicit

    Dim objWshShell, objFSO, strVariableName, objExplorer, strScriptFileDirectory

    Set objWshShell = WScript.CreateObject("WScript.Shell")
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    strVariableName = "WhateverYouWant"
    strScriptFileDirectory = objFSO.GetParentFolderName(wscript.ScriptFullName)

    ' Displays the Internet Explorer informational message window.
    DisplayIEwindow

    wscript.Sleep 4000

    CloseIEwindow
    Wscript.Quit

     

    ' ~$~----------------------------------------~$~
    '            FUNCTIONS & SUBROUTINES
    ' ~$~----------------------------------------~$~
    Sub DisplayIEwindow
    ' Executes an Internet Explorer window.
    Dim strIEregistryKey, strCheckAssociationsKey
    strIEregistryKey = "NotExist"

    On Error Resume Next

    ' The following registry entry will enable local files such as .GIFs to be displayed using IE 7.0, but this setting will not take effect if the web browser is already open (there will be no error messages displayed if this is the case).
    strIEregistryKey = objWshShell.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\blank\about")

    wscript.echo strIEregistryKey

    If strIEregistryKey = "NotExist" Then
       objWshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\blank\about", 2, "REG_DWORD"
     wscript.echo "escreve"
    End If

    ' Attempts to temporarily prevent Internet Explorer checking to see if it is the default browser (storing the existing value to be restored after disaplying the script's IE window).
    strCheckAssociationsKey = objWshShell.RegRead("HKCU\Software\Microsoft\Internet Explorer\Main\Check_Associations")
    objWshShell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\Check_Associations", "no", "REG_SZ"

    Set objExplorer = CreateObject ("InternetExplorer.Application")
    objExplorer.Navigate "about:blank"
    objExplorer.ToolBar = 0
    objExplorer.StatusBar = 0
    objExplorer.Left = 200
    objExplorer.Top = 100
    objExplorer.Width = 450
    objExplorer.Height = 220
    objExplorer.Visible = 1
    objExplorer.Document.Body.Scroll = "no"
    objExplorer.Document.Body.Style.Cursor = "wait"
    objExplorer.Document.Title = "Window Title Name Goes Here" & String(50, ".")

    objExplorer.Document.Body.InnerHTML = "<img src='file:///" & strScriptFileDirectory & "\pro.gif' align='left'> " & "<b><font size='4'><font color='#008000'>" & strVariableName & " . . .</font></b><br>This application is currently being installed, and may take up to 5 minutes to complete.<p align='center'><font size='3'><b>Installation Start Time:</b> " & Time & "</p></p><p align='center'><font size='2'>*closing this window will <u>not</u> abort the installation<font color='#808080'><br> (this window will close automatically after the process completes)</font></font>"

    ' Attempts to make the open IE window active.
    WScript.Sleep 1000
    objWshShell.AppActivate "Window Title Name Goes Here"
    WScript.Sleep 1001

    ' Removes the added registry key setting used with IE 7.0 if it did not already exist.
    If strIEregistryKey = "NotExist" Then
       objWshShell.RegDelete "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\blank\"
    End If

    ' Restores the original Check_Associations registry setting from the script's stored value.
    objWshShell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\Check_Associations", strCheckAssociationsKey, "REG_SZ"
    End Sub

    ' ~$~----------------------------------------~$~
    Sub CloseIEwindow
    ' Attemps to close the Internet Explorer window if it was opened by this script.
    On Error Resume Next
    objExplorer.Quit
    End Sub

    Abraço e obrigado pela colaboração.

    • Marcado como Resposta RGaspar domingo, 31 de janeiro de 2010 19:42
    domingo, 31 de janeiro de 2010 19:41
  • Viva,

    Problema resolvido.
    O script em cima funciona perfeitamente, pois o que faz é adicionar no internet explorer na tab security > trusted sites o link about:blank, pois no ie7 e no ie8 é importante.

    Não me questionem porque tem que ser assim, mas todos os forums que tive a ler falam muito do comando objExplorer.Navigate "about:blank" e objExplorer.Navigate "about:tabs".

    Não entendo porque mapeamento o folder, o script sem adicionarmos o link about:blank funciona, e localmente não acontece, mas ok, está resolvido.

    Obrigado

    • Marcado como Resposta RGaspar segunda-feira, 1 de fevereiro de 2010 00:27
    segunda-feira, 1 de fevereiro de 2010 00:26