Skip to content

There are some hooks to work with Windows functions

Hooks ​

Name
ClipboardHook
KeyboardHook
SystemMenuHook

ClipboardHook ​

Methods and Events ​

MethodEvent
StartContentChanged
Stop

Case ​

ClipboardHook.Start();
ClipboardHook.Stop();
ClipboardHook.ContentChanged +=ClipboardHook_ContentChanged;
private void ClipboardHook_ContentChanged()
  {
  }

KeyboardHook ​

Methods and Events ​

MethodEvent
StartKeyDown
StopKeyUp

Case ​

KeyboardHook.Start();
KeyboardHook.Stop();
KeyboardHook.KeyDown +=KeyboardHook_KeyDown;
private void KeyboardHook_KeyDown(object sender, HandyControl.Data.KeyboardHookEventArgs e)
  {
  }

SystemMenuHook ​

With this hook you can add a new item to the context menu Or display your Custom context menu

Methods and Events ​

MethodEvent
InsertClick
InsertSeperator
Remove
SetCustomContextMenu

Case ​

Add Items to ContextMenu ​

WARNING

Put this code on WindowLoaded Event

SystemMenuHook.Insert(0, 1000, "Item 1", this);
SystemMenuHook.InsertSeperator(1, this);
SystemMenuHook.Remove(1000);

WARNING

if you want to handle click event, you need to create click event

SystemMenuHook.Click += SystemMenuHook_Click;
private void SystemMenuHook_Click(int obj)
        {
            switch (obj)
            {
                case MenuId:
                    MessageBox.Show("Hello");
                    break;
                
            }
        }

Display your Custom ContextMenu [Available Only in Custom Version] ​

first add a ContextMenu to your window resource with a Key

<hc:Window.Resources>
        <ContextMenu x:Key="systemMenu">
            <MenuItem Header="Help"/>
            <MenuItem Header="Choose theme"/>
            <MenuItem Header="Add Note"/>
            <Separator />
            <MenuItem Header="Exit"/>
        </ContextMenu>
    </hc:Window.Resources>

then

WARNING

Put this code on WindowLoaded Event

var context = Resources["systemMenu"] as ContextMenu;
SystemMenuHook.SetCustomContextMenu(this, context);

Released under the MIT License.