none
Como quitar el borde a el bloc de notas RRS feed

  • Pregunta

  • saludos, quería pedir ayuda sobre como dice el titulo, quitar el borde al bloc de notas. Yo en el pasado lo había echo valiéndome de las api de windows, pero ya paso como tres años y no recuerdo que api usaba ni sus constantes para los estilos de ventana, podrían recordarme por favor?

    Bueno, desde ya muchas gracias!!


    genial, ya soy aprendiz de novato!

    lunes, 18 de marzo de 2019 16:04

Respuestas

  • ¿Por qué no te creas tu propio bloc de notas?

    Si quieres modificar el existente quitando el borde puedes usar un código como este

    Imports System.Runtime.InteropServices

    Public Class Form1
        <DllImport("User32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
        Shared Function GetWindowLong(hWnd As IntPtr, nIndex As Int16) As Int32
        End Function

        <DllImport("User32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
        Shared Function SetWindowLong(hWnd As IntPtr, nIndex As Int16, dwNewLong As Int32) As Int32
        End Function

        <DllImport("User32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
        Shared Function SetWindowPos(hWnd As IntPtr, hWndInsertAfter As IntPtr, X As Int16, Y As Int16, cx As Int16, cy As Int16, uFlags As UInt16) As Boolean
        End Function

        Const GWL_STYLE As Int16 = -16
        Const GWL_EXSTYLE As Int16 = -20

        <Flags()>
        Enum WindowStyles
            WS_CAPTION = &HC00000
            WS_THICKFRAME = &H40000
            WS_MINIMIZE = &H20000000
            WS_MAXIMIZE = &H1000000
            WS_SYSMENU = &H80000
        End Enum

        <Flags()>
        Enum ExtendedWindowStyles
            WS_EX_DLGMODALFRAME = &H1
            WS_EX_CLIENTEDGE = &H200
            WS_EX_STATICEDGE = &H20000
        End Enum

        <Flags()>
        Enum SetWindowPosFlags As UInt16
            SWP_FRAMECHANGED = &H20
            SWP_NOMOVE = &H2
            SWP_NOSIZE = &H1
            SWP_NOZORDER = &H4
            SWP_NOOWNERZORDER = &H200
        End Enum
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim p = Process.Start("notepad.exe")
            p.WaitForInputIdle()

            Dim styles As WindowStyles = GetWindowLong(p.MainWindowHandle, GWL_STYLE)
            styles = styles And Not (WindowStyles.WS_CAPTION Or WindowStyles.WS_THICKFRAME Or WindowStyles.WS_MINIMIZE Or WindowStyles.WS_MAXIMIZE Or WindowStyles.WS_SYSMENU)
            SetWindowLong(p.MainWindowHandle, GWL_STYLE, styles)

            Dim stylesex As ExtendedWindowStyles = GetWindowLong(p.MainWindowHandle, GWL_EXSTYLE)
            stylesex = stylesex And Not (ExtendedWindowStyles.WS_EX_DLGMODALFRAME Or ExtendedWindowStyles.WS_EX_CLIENTEDGE Or ExtendedWindowStyles.WS_EX_STATICEDGE)
            SetWindowLong(p.MainWindowHandle, GWL_EXSTYLE, stylesex)

            SetWindowPos(p.MainWindowHandle, IntPtr.Zero, 0, 0, 0, 0, SetWindowPosFlags.SWP_FRAMECHANGED Or SetWindowPosFlags.SWP_NOMOVE Or SetWindowPosFlags.SWP_NOSIZE Or SetWindowPosFlags.SWP_NOZORDER Or SetWindowPosFlags.SWP_NOOWNERZORDER)

        End Sub
    End Class

    Saludos, Javier J

    • Marcado como respuesta rickum lunes, 18 de marzo de 2019 23:18
    lunes, 18 de marzo de 2019 16:34

Todas las respuestas

  • ¿Por qué no te creas tu propio bloc de notas?

    Si quieres modificar el existente quitando el borde puedes usar un código como este

    Imports System.Runtime.InteropServices

    Public Class Form1
        <DllImport("User32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
        Shared Function GetWindowLong(hWnd As IntPtr, nIndex As Int16) As Int32
        End Function

        <DllImport("User32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
        Shared Function SetWindowLong(hWnd As IntPtr, nIndex As Int16, dwNewLong As Int32) As Int32
        End Function

        <DllImport("User32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
        Shared Function SetWindowPos(hWnd As IntPtr, hWndInsertAfter As IntPtr, X As Int16, Y As Int16, cx As Int16, cy As Int16, uFlags As UInt16) As Boolean
        End Function

        Const GWL_STYLE As Int16 = -16
        Const GWL_EXSTYLE As Int16 = -20

        <Flags()>
        Enum WindowStyles
            WS_CAPTION = &HC00000
            WS_THICKFRAME = &H40000
            WS_MINIMIZE = &H20000000
            WS_MAXIMIZE = &H1000000
            WS_SYSMENU = &H80000
        End Enum

        <Flags()>
        Enum ExtendedWindowStyles
            WS_EX_DLGMODALFRAME = &H1
            WS_EX_CLIENTEDGE = &H200
            WS_EX_STATICEDGE = &H20000
        End Enum

        <Flags()>
        Enum SetWindowPosFlags As UInt16
            SWP_FRAMECHANGED = &H20
            SWP_NOMOVE = &H2
            SWP_NOSIZE = &H1
            SWP_NOZORDER = &H4
            SWP_NOOWNERZORDER = &H200
        End Enum
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim p = Process.Start("notepad.exe")
            p.WaitForInputIdle()

            Dim styles As WindowStyles = GetWindowLong(p.MainWindowHandle, GWL_STYLE)
            styles = styles And Not (WindowStyles.WS_CAPTION Or WindowStyles.WS_THICKFRAME Or WindowStyles.WS_MINIMIZE Or WindowStyles.WS_MAXIMIZE Or WindowStyles.WS_SYSMENU)
            SetWindowLong(p.MainWindowHandle, GWL_STYLE, styles)

            Dim stylesex As ExtendedWindowStyles = GetWindowLong(p.MainWindowHandle, GWL_EXSTYLE)
            stylesex = stylesex And Not (ExtendedWindowStyles.WS_EX_DLGMODALFRAME Or ExtendedWindowStyles.WS_EX_CLIENTEDGE Or ExtendedWindowStyles.WS_EX_STATICEDGE)
            SetWindowLong(p.MainWindowHandle, GWL_EXSTYLE, stylesex)

            SetWindowPos(p.MainWindowHandle, IntPtr.Zero, 0, 0, 0, 0, SetWindowPosFlags.SWP_FRAMECHANGED Or SetWindowPosFlags.SWP_NOMOVE Or SetWindowPosFlags.SWP_NOSIZE Or SetWindowPosFlags.SWP_NOZORDER Or SetWindowPosFlags.SWP_NOOWNERZORDER)

        End Sub
    End Class

    Saludos, Javier J

    • Marcado como respuesta rickum lunes, 18 de marzo de 2019 23:18
    lunes, 18 de marzo de 2019 16:34
  • Muchas gracias javier, la verdad es que lo del bloc de notas era por decir un programa nada mas, yo lo necesito para incrustar la ventana de un emulador y controlarla.

    Te agradezco enormemente la mano, muchas gracias!


    genial, ya soy aprendiz de novato!

    lunes, 18 de marzo de 2019 23:18