none
Ocultar ventana ajena a mi aplicación en Visual Basic 2010 RRS feed

  • Pregunta

  • Hola, estoy tratando de ocultar una ventana que es ajena a mi aplicación de visual basic 2010, he probado el siguiente código utilizando como ejemplo la ventana del bloc de notas.

    Public Class Form1
        Declare Function FindWindow Lib "User" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
        Declare Function ShowWindow Lib "User" (ByVal hWnd As Integer, ByVal nCmdShow As Integer) As Integer
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim Handle As Integer
            Dim WindowName As String
    
            WindowName = "Sin título: Bloc de notas"
            Const SW_Hide = 0
    
            Handle = FindWindow(0&, WindowName)
            ShowWindow(Handle, SW_Hide)
        End Sub
    End Class

    Pero me lanza el siguiente error: No se puede cargar el archivo DLL 'User': No se puede encontrar el módulo especificado. (Excepción de HRESULT: 0x8007007E)

    ¿Hay algun otro código para hacer esto?. También quisiera saber si hay alguna forma de detectar cuando la ventana se ha abierto para ocultarla automaticamente. Gracias

    miércoles, 26 de junio de 2013 22:49

Respuestas

  • La biblioteca se llama "user32"

    En general, cuando una función lleva strings como argumentos, existen dos versiones (ansi y widestring). Normalmente se exportan tres símbolos: el nombre "crudo" y los terminados con A y W. En este caso parece que el nombre solo (típicamente asociado al entrypoint del A), no existe para FindWindow().

    Public Class Form1
        Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
        Declare Function ShowWindow Lib "user32" (ByVal hWnd As Integer, ByVal nCmdShow As Integer) As Integer
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim Handle As Integer
            Dim WindowName As String
    
            WindowName = "Sin título - Bloc de notas"
            Const SW_Hide = 0
    
            Handle = FindWindow(Nothing, WindowName)
            ShowWindow(Handle, SW_Hide)
        End Sub
    
    End Class
    

    • Marcado como respuesta daviande7 jueves, 27 de junio de 2013 5:03
    jueves, 27 de junio de 2013 0:36