vdsalchemist Admin Team

Joined: 23 Oct 2001 Posts: 1448 Location: Florida, USA
|
Posted: Thu Jul 23, 2009 8:34 pm Post subject: |
|
|
Ok here is the code for the menu and buttons...
| Code: |
#--------------------------------------------------------------------------------#
# #
# Description: Allows you to disable System Menu Items and buttons #
# #
# Author: Johnny Kinsey #
# Copyright © 2009 DragonSphere Software All Rights Reserved. #
# #
#--------------------------------------------------------------------------------#
#DEFINE COMMAND,SYSMENUDISABLEITEM
#DEFINE COMMAND,DISABLEMINIMIZEBOX,DISABLEMAXIMIZEBOX,ENABLEMINIMIZEBOX,ENABLEMAXIMIZEBOX
%%WindowID = @winexists(#TMainWin)
#SysMenuDisableItem %%WindowID,RESET
#SysMenuDisableItem %%WindowID,Move
#SysMenuDisableItem %%WindowID,Size
#SysMenuDisableItem %%WindowID,Minimize
#SysMenuDisableItem %%WindowID,Maximize
#SysMenuDisableItem %%WindowID,Close
DisableMinimizeBox %%WindowID
Info Minimize Disabled Check window
#SysMenuDisableItem %%WindowID,RESET
EnableMinimizeBox %%WindowID
Info Minimize Enabled check window
#EnableMaximizeBox %%WindowID
Stop
:DISABLEMINIMIZEBOX
LoadLib user32.dll
%%WS_MINIMIZEBOX = $20000
%%WndStyle = @lib(user32,GetWindowLongA,INT,INT:@strdel(%1,1,1),INT:-16)
%%NewWndStyle = @Diff(%%WndStyle,%%WS_MINIMIZEBOX)
%A = @lib(user32,SetWindowLongA,INT,INT:@strdel(%1,1,1),INT:-16,INT:%%NewWndStyle)
FreeLib user32.dll
Window Activate,%1
Exit
:DISABLEMAXIMIZEBOX
LoadLib user32.dll
%%WS_MAXIMIZEBOX = $10000
%%WndStyle = @lib(user32,GetWindowLongA,INT,INT:@strdel(%1,1,1),INT:-16)
%%NewWndStyle = @Diff(%%WndStyle,%%WS_MAXIMIZEBOX)
%A = @lib(user32,SetWindowLongA,INT,INT:@strdel(%1,1,1),INT:-16,INT:%%NewWndStyle)
FreeLib user32.dll
Window Activate,%1
Exit
:ENABLEMINIMIZEBOX
LoadLib user32.dll
%%WS_MINIMIZEBOX = $20000
%%WndStyle = @lib(user32,GetWindowLongA,INT,INT:@strdel(%1,1,1),INT:-16)
%%NewWndStyle = @Sum(%%WndStyle,%%WS_MINIMIZEBOX)
%A = @lib(user32,SetWindowLongA,INT,INT:@strdel(%1,1,1),INT:-16,INT:%%NewWndStyle)
FreeLib user32.dll
Window Activate,%1
Exit
:ENABLEMAXIMIZEBOX
LoadLib user32.dll
%%WS_MAXIMIZEBOX = $10000
%%WndStyle = @lib(user32,GetWindowLongA,INT,INT:@strdel(%1,1,1),INT:-16)
%%NewWndStyle = @Sum(%%WndStyle,%%WS_MAXIMIZEBOX)
%A = @lib(user32,SetWindowLongA,INT,INT:@strdel(%1,1,1),INT:-16,INT:%%NewWndStyle)
FreeLib user32.dll
Window Activate,%1
Exit
:SysMenuDisableItem
LoadLib user32.dll
%%MF_GRAYED = 1
%%MF_DISABLED = 2
%%MF_BYPOSITION = $400
%%MF_BYCOMMAND = 0
%%SC_RESTORE = $F120
%%SC_MOVE = $F010
%%SC_SIZE = $F000
%%SC_MINIMIZE = $F020
%%SC_MAXIMIZE = $F030
%%SC_CLOSE = $F060
%%MIIM_CHECKMARKS = 8
%%MIIM_DATA = 32
%%MIIM_ID = 2
%%MIIM_STATE = 1
%%MIIM_SUBMENU = 4
%%MIIM_TYPE = 16
%%MIIM_STRING = $040
%%MIIM_BITMAP = $080
%%MIIM_FTYPE = $0100
%%MFT_BITMAP = 4
%%MFT_MENUBARBREAK = 32
%%MFT_MENUBREAK = 64
%%MFT_OWNERDRAW = 256
%%MFT_RADIOCHECK = 512
%%MFT_RIGHTJUSTIFY = $4000
%%MFT_SEPARATOR = $800
%%MFT_STRING = 0
%%MFS_CHECKED = 8
%%MFS_DEFAULT = 4096
%%MFS_DISABLED = 3
%%MFS_ENABLED = 0
%%MFS_GRAYED = 3
%%MFS_HILITE = 128
%%MFS_UNCHECKED = 0
%%MFS_UNHILITE = 0
%W = @strdel(%1,1,1)
If @Equal(%2,RESET)
%%SysMenuHwnd = @lib(user32,GetSystemMenu,INT,INT:%W,BOOL:TRUE)
Else
%%SysMenuHwnd = @lib(user32,GetSystemMenu,INT,INT:%W,BOOL:FALSE)
End
If @unequal(%%SysMenuHwnd,0)
If @Equal(%2,Restore)
%M = @BINARY(DWORD,44)@BINARY(DWORD,@Sum(%%MIIM_STATE,%%MIIM_ID))@BINARY(DWORD,0)@BINARY(DWORD,%%MFS_GRAYED)@BINARY(DWORD,-%%SC_RESTORE)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)
%R = @lib(user32,SetMenuItemInfoA,BOOL,INT:%%SysMenuHwnd,INT:%%SC_RESTORE,BOOL:FALSE,INT:@Addr("%M"))
%R = @lib(user32,DrawMenuBar,BOOL,INT:%%SysMenuHwnd)
ElsIf @Equal(%2,Move)
%M = @BINARY(DWORD,44)@BINARY(DWORD,@Sum(%%MIIM_STATE,%%MIIM_ID))@BINARY(DWORD,0)@BINARY(DWORD,%%MFS_GRAYED)@BINARY(DWORD,-%%SC_MOVE)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)
%R = @lib(user32,SetMenuItemInfoA,BOOL,INT:%%SysMenuHwnd,INT:%%SC_MOVE,BOOL:FALSE,INT:@Addr("%M"))
%R = @lib(user32,DrawMenuBar,BOOL,INT:%%SysMenuHwnd)
ElsIf @Equal(%2,Size)
%M = @BINARY(DWORD,44)@BINARY(DWORD,@Sum(%%MIIM_STATE,%%MIIM_ID))@BINARY(DWORD,0)@BINARY(DWORD,%%MFS_GRAYED)@BINARY(DWORD,-%%SC_SIZE)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)
%R = @lib(user32,SetMenuItemInfoA,BOOL,INT:%%SysMenuHwnd,INT:%%SC_SIZE,BOOL:FALSE,INT:@Addr("%M"))
%R = @lib(user32,DrawMenuBar,BOOL,INT:%%SysMenuHwnd)
ElsIf @Equal(%2,Minimize)
%M = @BINARY(DWORD,44)@BINARY(DWORD,@Sum(%%MIIM_STATE,%%MIIM_ID))@BINARY(DWORD,0)@BINARY(DWORD,%%MFS_GRAYED)@BINARY(DWORD,-%%SC_MINIMIZE)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)
%R = @lib(user32,SetMenuItemInfoA,BOOL,INT:%%SysMenuHwnd,INT:%%SC_MINIMIZE,BOOL:FALSE,INT:@Addr("%M"))
%R = @lib(user32,DrawMenuBar,BOOL,INT:%%SysMenuHwnd)
ElsIf @Equal(%2,Maximize)
%M = @BINARY(DWORD,44)@BINARY(DWORD,@Sum(%%MIIM_STATE,%%MIIM_ID))@BINARY(DWORD,0)@BINARY(DWORD,%%MFS_GRAYED)@BINARY(DWORD,-%%SC_MAXIMIZE)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)
%R = @lib(user32,SetMenuItemInfoA,BOOL,INT:%%SysMenuHwnd,INT:%%SC_MAXIMIZE,BOOL:FALSE,INT:@Addr("%M"))
%R = @lib(user32,DrawMenuBar,BOOL,INT:%%SysMenuHwnd)
ElsIf @Equal(%2,Close)
%M = @BINARY(DWORD,44)@BINARY(DWORD,@Sum(%%MIIM_STATE,%%MIIM_ID))@BINARY(DWORD,0)@BINARY(DWORD,%%MFS_GRAYED)@BINARY(DWORD,-%%SC_CLOSE)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)@BINARY(DWORD,0)
%R = @lib(user32,SetMenuItemInfoA,BOOL,INT:%%SysMenuHwnd,INT:%%SC_CLOSE,BOOL:FALSE,INT:@Addr("%M"))
%R = @lib(user32,DrawMenuBar,BOOL,INT:%%SysMenuHwnd)
End
End
FreeLib user32
Exit
|
Ok this code has been UPDATED... You can now enable and disable the minimize and maximize buttons in doing so Windows will enable the minimize and maximize system menu options for the window. It is strange but this does work for XP. I left the menu code so you could disable the menu options without the buttons being enabled or disabled. _________________ Home of
Give VDS a new purpose!
 |
|