VBasicFacil

Principal - Enlaces - Código - Controles - API


Función GetSystemMenu

Declaración

Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (ByVal hwnd As Long, ByVal bRevert As Long) As Long

Plataformas

Descripción

Recupera el manipulador del menu del sistema de una ventana (menú de la izquierda de la barra de título de una ventana).

Parámetros

hWnd Manipulador de la ventana a cuyo menu queremos acceder.

bRevert Acción que se va a hacer en el menú. Si el parametro es FALSE, la función devuelve el manipulador del menú por defecto de la ventana. Si el parametro es TRUE, la función restaura el menú por defecto de la venta. El menu anterior es destruido.

 

Valor devuelto

Si bRevert es FALSE y la función termina correctamente devuelve el manipulador del menú, si no termina correctamente devuelve 0. Si bRevert es TRUE devuelve 0.

Particularidades en VBasic

Aunque se pueden cambiar las entradas del menú del sistema si se desea, no se pueden añadir nuevas entradas que reciban eventos Click salvo que se utilice un control de subclasificación, como el dwsbc32d.ocx. Esta orden tambien se puede usar para eliminar entradas del menú del sistema que no se desee que estén disponibles para el usuario.

Ejemplo

Este ejemplo permite eliminar un item del menú de la barra de título de una ventana que localizamos por su título.

Formulario (Crear un formulario con un CommandButton)

Option Explicit


Private Sub Form_Load()
    Dim hWndWindow As Long  'Manejador de la ventana
    Dim hWndMenu As Long    'Manejador del menu
    Dim Cont As Long        'Contador de items del menu
    
    'Capturamos el manejador de la ventana cuyo título es "MS-DOS"
    hWndWindow = FindWindow(vbNullString, "MS-DOS")
    'Si existe la ventana MS-DOS capturamos el manejador del menú
    If hWnd <> 0 Then
        hWndMenu = GetSystemMenu(hWndWindow, False)
    End If
    If hWndMenu <> 0 Then
        'Si existe el menu borramos el item 6 del mismo
        'En Windows 2000 el item 6 es cerrar
        RemoveMenu hWndMenu, 6, MF_BYPOSITION Or MF_REMOVE
    End If
End Sub

Private Sub Command1_Click()
    Unload Me
End Sub

Modulo

Option Explicit


Public Declare Function GetSystemMenu _
        Lib "user32" _
       (ByVal hWnd As Long, _
        ByVal bRevert As Long) As Long
Public Declare Function RemoveMenu _
        Lib "user32" _
       (ByVal hMenu As Long, _
        ByVal nPosition As Long, _
        ByVal wFlags As Long) As Long
Public Declare Function FindWindow _
        Lib "user32" _
        Alias "FindWindowA" _
       (ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
        
Public Const MF_BYPOSITION = &H400&
Public Const MF_REMOVE = &H1000&
Public Const MF_BYCOMMAND = &H0
Public Const MF_GRAYED = &H1
Descargar código : RemoveMenu.zip

 

Aplicaciones:

Ver también: FindWindowEx, ShowWindow, ShowWindow

Categoría: Window


Ultima actualización : 16 de diciembre de 2001
Copyright © 2001 Silared, s.l.
correo-e : vbasicfacil@silared.com
Site : www.vbasicfacil.com