Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: daniel.r.23 en 27 Octubre 2014, 05:10 am



Título: Utilizar función ShowInTaskbar con firefox
Publicado por: daniel.r.23 en 27 Octubre 2014, 05:10 am
Bueno la idea es tratar de ocultar el icono de firefox de la barra de tareas.
Si fuera un form que estuviese ejecutando usaría el siguiente cód:
Código:
Me.ShowInTaskbar = False
Pero o me doy cuanta como usarlo cuando tengo que obtener una ventana, en mi caso una del navegador Firefox.
Espero que me pudan dar una mano!! gracias


Título: Re: Utilizar función ShowInTaskbar con firefox
Publicado por: engel lex en 27 Octubre 2014, 05:19 am
qué estás haciendo con firefox XD parece que fueras a hacer un virus que use firefox como motor XD


Título: Re: Utilizar función ShowInTaskbar con firefox
Publicado por: daniel.r.23 en 27 Octubre 2014, 10:24 am
no de momento no ando en esas cosas!! jaja
Es por una propuesta de un amigo con la PTC Neobux, desde ahí estoy mejorando un autoclick muy casero...
funciona a través de firefox, controlado por ruby y con una mínima interfaz en vb.net.
Lo que estoy tratando de hacer con esto que al usuario no le moleste la ventana o ventanas que se abran del navegador, sin suerte alguna!!


Título: Re: Utilizar función ShowInTaskbar con firefox
Publicado por: LeandroA en 31 Octubre 2014, 20:26 pm
Hola dos ayudas rapida, por lo que vi en algunos temas anteriores, yo no lo aria con firefox y lo haria con el webbrowser (si el de iexplorer) pero bueno es tu elecion.

para quitar una ventana del la barra de tarea se utiliza la constante  WS_EX_APPWINDOW de el api SetWindowRgn

un ejemplo en vb6

Código
  1. Option Explicit
  2. Private Declare Function ShowWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
  3. Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  4. Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
  5. Private Const WS_EX_APPWINDOW As Long = &H40000
  6. Private Const GWL_EXSTYLE As Long = -20
  7.  
  8. Private Sub Command1_Click()
  9.    Dim hwndFireFox As Long
  10.  
  11.    hwndFireFox = Me.hWnd '<--aca ira el de firefox
  12.  
  13.  
  14.    ShowWindow hwndFireFox, 0
  15.    SetWindowLong hwndFireFox, GWL_EXSTYLE, GetWindowLong(hwndFireFox, GWL_EXSTYLE) And Not WS_EX_APPWINDOW
  16.    ShowWindow hwndFireFox, 1
  17.  
  18. End Sub

y despues si showwindow hace que no te funcione proba recortando la región de la ventana a 0, el navegador puede controlar si esta visible o no, pero no controla si su región esta nula.

Código
  1. Private Declare Function SetWindowRgn Lib "user32.dll" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
  2. Private Declare Function CreateRectRgn Lib "gdi32.dll" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  3.  
  4.  
  5.  
  6. Private Sub Command1_Click()
  7.    Dim hwndFireFox As Long
  8.  
  9.    hwndFireFox = Me.hWnd
  10.  
  11.    'ocultar la ventana recortandola a 0
  12.    SetWindowRgn hwndFireFox, CreateRectRgn(0, 0, 0, 0), True
  13. End Sub


Título: Re: Utilizar función ShowInTaskbar con firefox
Publicado por: daniel.r.23 en 2 Noviembre 2014, 02:32 am
Gracias por responder, voy a probar la primera solución, la segunda que me planteas no por que programa esta constantemente activando el navegador por lo que nunca lo va a ocultar, en cambio lo que hice fue cambiarle la posición.
Por eso lo único que me restaría hacer para que el usuario no vea nada es quitar el icono de la ventana de la barra de tareas.
Lo pruebo y te comento!


Título: Re: Utilizar función ShowInTaskbar con firefox
Publicado por: daniel.r.23 en 3 Noviembre 2014, 10:22 am
buenas, te cuento que me sale un error en está linea:

Código:
SetWindowLong hwndFireFox, GWL_EXSTYLE, GetWindowLong(hwndFireFox, GWL_EXSTYLE) And Not WS_EX_APPWINDOW

que dice:

"Una llamada a la función PInvoke 'Neo!Neo.Form1::GetWindowLong' impidió la correspondencia de la pila. Es posible que la razón sea que la firma PInvoke administrada no coincida con la firma de destino no administrada. Compruebe que la convención y los parámetros de llamada de la firma PInvoke coinciden con la firma no administrada de destino."

algo que observo en mi código pero que al modificarlo sigo con el mismo problema es como tengo definidas algunas de las funciones:

Código:
Private Declare Function ShowWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
    Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Private Const WS_EX_APPWINDOW As Long = &H40000
    Private Const GWL_EXSTYLE As Long = -20
    <DllImport("user32.dll", EntryPoint:="FindWindowExW")> _
    Private Shared Function FindWindowExW(ByVal hwndParent As System.IntPtr, ByVal hwndChildAfter As System.IntPtr, <InAttribute(), MarshalAs(UnmanagedType.LPTStr)> ByVal lpszClass As String, <InAttribute(), MarshalAs(UnmanagedType.LPTStr)> ByVal lpszWindow As String) As System.IntPtr
    End Function

    Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Dim Width As Integer = My.Computer.Screen.Bounds.Width
        Dim Height As Integer = My.Computer.Screen.Bounds.Height
        While Not visible_
            Dim hWnd As IntPtr = FindWindowExW(IntPtr.Zero, IntPtr.Zero, "MozillaWindowClass", Nothing)
            While Not hWnd.Equals(IntPtr.Zero)
                Dim title As New System.Text.StringBuilder(256)
                GetWindowTextW(hWnd, title, 256)
                'If title.ToString.Contains("NeoBux") Then
                MoveWindow(hWnd, Width, Height, Width, Height, True)
                'End If
                hWnd = FindWindowExW(IntPtr.Zero, hWnd, "MozillaWindowClass", Nothing)
                SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) And Not WS_EX_APPWINDOW)

            End While
           
        End While
        visible_ = False
    End Sub

tanto  SetWindowLong como GetWindowLong toman un dato de tipo Long mientras que yo como lo tengo definido le paso un  IntPtr


Título: Re: Utilizar función ShowInTaskbar con firefox
Publicado por: LeandroA en 3 Noviembre 2014, 19:13 pm
hola no manejo .net  pero a simple vista te dira que remplazes "Long" por  "System.IntPtr", es importante para que los cambios se resalten tenes que poner la ventana hide luego aplicar el camibio a  Not WS_EX_APPWINDOW y luego ponerla visible.

Código:
    ShowWindow hwndFireFox, 0
    SetWindowLong hwndFireFox, GWL_EXSTYLE, GetWindowLong(hwndFireFox, GWL_EXSTYLE) And Not WS_EX_APPWINDOW
    ShowWindow hwndFireFox, 1