Sign in to follow this  
Followers 0
PantZ4

Add to context menu?

5 posts in this topic

So I was wondering if I could change the context menu when you click on the title line.

This context menu;

Just so I could add my own command. Is this possible?

Share this post


Link to post
Share on other sites



external?

If you mean in every program window, then yes. That is what I'm trying to achieve.

Share this post


Link to post
Share on other sites

For modifying system menu are these API functions:

GetSystemMenu, InsertMenu

But for modiy external app look at ANYGUI UDF

Here is modification system menu in AutoIt GUI:

#include <GUIConstants.au3>

Global Const $WM_SYSCOMMAND = 0x0112
Global Const $MF_BYPOSITION = 0x0400
Global Const $MF_SEPARATOR  = 0x0800

$Form1 = GUICreate("Test", 300, 200)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_SYSCOMMAND, "WM_SYSCOMMAND")

CreateSystemMenuItem("")
$nItem_about = CreateSystemMenuItem("About")

While 1
    $msg = GuiGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            Exit
    EndSelect
WEnd

Func WM_SYSCOMMAND($hWnd, $Msg, $wParam, $lParam)
    $nID = BitAnd($wParam, 0xFFFF)
    If $nID = $nItem_about Then About()
EndFunc

Func About()
    MsgBox(64, "About","Test 1.0" & @CRLF & @CRLF & _
        "Zedna" & @CRLF & _
        "AutoIt")
EndFunc

Func GetSystemMenu($hWnd, $bRevert = 0)
    Local $hMenu = DllCall("user32.dll", "hwnd", "GetSystemMenu", _
                                                "hwnd", $hWnd, _
                                                "int", $bRevert)
    Return $hMenu[0]
EndFunc

Func InsertMenu($hMenu, $nPosition, $nFlags, $nIDNewItem, $lpNewItem)
    Local $nResult = DllCall("user32.dll", "int", "InsertMenu", _
                                                "hwnd", $hMenu, _
                                                "int", $nPosition, _
                                                "int", $nFlags, _
                                                "int", $nIDNewItem, _
                                                "str", $lpNewItem)
    Return $nResult[0]
EndFunc

Func CreateSystemMenuItem($sText, $hMenu = -1)
    If $hMenu = -1 Then $hMenu = GetSystemMenu($Form1)

    Local $nID = GUICtrlCreateDummy()
    Local $nFlags = 0

    If $sText = "" Then $nFlags = $MF_SEPARATOR
    $nFlags = BitOr($MF_BYPOSITION, $nFlags)
        InsertMenu($hMenu, 0xFFFFFFFF, $nFlags, $nID, $sText)
    Return $nID
EndFunc

Share this post


Link to post
Share on other sites

Ah I will take a look and come back if there is something I don't understand ;).

Thanks once again :).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0