Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - LeandroA

#31
Hola, no no es necesario comprobar lo del ejecutable, porque el hook es solo para la instancia de la aplicación por lo tanto no destruiría una ventana que no cree la aplicacion.
por lo de los filtros no se cual es tu fin de todo esto, pero si hay un par de ventanas llamadas  con el mismo nombre, fijate que si haces click derecho en el webbrowser y selecionas imprimir o propiedades tambien te cierra esas ventanas pero dudo que a vos te importe eso ya que parece que estas haciendo algun tipo de automatizacion.

lo que preguntas del antivirus, mira, yo creo que deve ser otra cosa, seguramente es porque guardas la url en un string y el el AV lo detecta como una amenaza, si ese fuera el caso vastaria con una encriptacion o cocatenacion de la url.

si aun asi el problema sigue podes intentar crear el control webbrowser por codigo, es decir sin poner la referencia de Microsof internet controls.
un ejemplo para que te orientes.

Código (vb) [Seleccionar]

Option Explicit
Private WithEvents WebBrowser1 As VBControlExtender

Private Sub Form_Load()
    Set WebBrowser1 = Me.Controls.Add("Shell.Explorer.2", "MiWebBrowser", Me)
    With WebBrowser1
        .Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
        .Visible = True
        'Utilizar ".object" para acceder a las propiedades propias del webbrowser.
        .object.Silent = True
        .object.Navigate2 ("http://wordswithfriends.net/")
    End With
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Me.Controls.Remove "MiWebBrowser"
End Sub

Private Sub WebBrowser1_ObjectEvent(Info As EventInfo)

    Select Case Info.Name
   
        Case "NavigateComplete2"

           
        Case "DocumentComplete"

           
        Case "TitleChange"
            Debug.Print Info.EventParameters(0)
           
        Case "NewWindow2"
            'Cancela que se abra otra ventana(PopUp).
            'Info.EventParameters(1) = True
           
        Case "NavigateError"
            Debug.Print Info.EventParameters(3)
    End Select
End Sub
#32
Hola, si tenes razón, eso es porque el código se ejecuta dentro de un iframe, entonces no interfiere en su javascript, y tampoco se puede acceder a su código de fuente, asi si por el momento lo único que se me ocurre es hook, te paso un ejemplo, funcionando, lo unico se escucha el beep, y no encontre alguna mejor forma de filtrar si es un msgbox o no, y digo esto porque cualquier ventana que se llame   "#32770" la va a cerrar, el unico filtro fue pedir que sea una ventana hija al formulario que contiene el webbrowser, cualquier cosa se lo sacas si vas a usar mas de un webbrowser en distintos form.

Modulo bas:
Código (vb) [Seleccionar]

Option Explicit
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Type CWPSTRUCT
    lParam As Long
    wParam As Long
    message As Long
    hwnd As Long
End Type

Private Const HC_ACTION As Long = 0
Private Const GWL_HWNDPARENT As Long = -8
Private Const GWL_WNDPROC = (-4)
Private Const WH_CALLWNDPROC = 4
Private Const WM_CREATE = &H1

Private hHook As Long
Private m_Parent As Long

Public Function HookProc(ByVal uCode As Long, ByVal wParam As Long, lParam As CWPSTRUCT) As Long

    HookProc = CallNextHookEx(hHook, uCode, wParam, lParam)

    If uCode = HC_ACTION Then
        If lParam.message = WM_CREATE Then
            If GetWinClassName(lParam.hwnd) = "#32770" And GetWindowLong(lParam.hwnd, GWL_HWNDPARENT) = m_Parent Then
               DestroyWindow lParam.hwnd
            End If
        End If
    End If

End Function

Public Sub EndHooking()
    If hHook <> 0 Then
        UnhookWindowsHookEx hHook
        hHook = 0
    End If
End Sub

Public Sub StartHooking(ByVal hwndParent As Long)
    m_Parent = hwndParent
    hHook = SetWindowsHookEx(WH_CALLWNDPROC, AddressOf HookProc, 0, App.ThreadID)
End Sub

Public Function GetWinClassName(hwnd As Long) As String
    Dim sClass As String, ret&
    sClass = Space$(128)
    ret = GetClassName(hwnd, ByVal sClass, 128)
    GetWinClassName = Left$(sClass, ret)
End Function


Formulario inicial.
Código (Vb) [Seleccionar]

Option Explicit

Private Sub Form_Load()
    StartHooking Me.hwnd
    WebBrowser1.Silent = True
    WebBrowser1.Navigate2 ("http://wordswithfriends.net/"), 4
End Sub

Private Sub Form_Unload(Cancel As Integer)
    EndHooking
End Sub




#33
Hola mira este metodo, se trata de escribir funciones con el mismo nombre (alert, confirm, prompt) entonces  javascript en vez de ejectuar las funciones propias ejecutas las que escribimos nosotros y estas no hacen nada.

Option Explicit

Private Sub Form_Load()
WebBrowser1.Navigate2 "http://www.efectosjavascript.com/alerta.html"
End Sub

Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
    With WebBrowser1.Document.parentWindow
        .execScript "window.alert = function () { };", "JScript"
        .execScript "window.confirm = function () { };", "JScript"
        .execScript "window.prompt = function () { };", "JScript"
    End With
End Sub

#35
muy bueno como siempre Karcrack
#36
hola dudo mucho que eso funcione, ya que FileCopy no creo que sea asicrono, lo mejor seria usar el mismisimo cuadro de window con SHFileOperation , y te ahorras el gif y el ocx,

http://www.recursosvisualbasic.com.ar/htm/listado-api/120-copiar-archivo-progreso.htm
#37
Buena 79137913, una pregunta como haces para ponerle ese nombre en unicode a los archivos?
#38
Hola proba asi


X = sndPlaySound(App.Path & "\aceptar.wav", SND_ASYNC Or SND_NODEFAULT)


La diferencia es el uso de la constante SND_SYNC  por SND_ASYNC , osea que crea otro hilo y todo sigue ejecutándose normalmente, osea no espera a que termine el wav
#39
Cita de: noele1995 en 13 Septiembre 2013, 21:25 PM
Deberias usar DoEvents en los bucles for para que no se quede congelado el programa con cadenas largas. Interesante code ahora lo probare y asi trasteo un poco con vb6 :)

Porque?, el otro día comentaste lo mismo, el doevents, es opcional, si yo quiero velocidad, no lo voy a usar, ahora si quiero mantener la guid intacta, me parece bien.

Saludos.