Disable Close Button in TP Application

Hey all,

I'm trying to disable the close button on my robot application and add my own close button within the application itself. I want to do this so i am able to ask the operator with a gtpumessagebox if he/she really wants to close the application (because doing so results in the robot system going into a controlled shutdown state and subsequently shutting down). 

The trouble i am having is not knowing how to disable the close button.

Can anyone please help.

Comments

  • apox
    apox Germany ✭✭
    Hi,

    here is a VSTA macro that could solve your problem:

    using System.Runtime.InteropServices;

            [DllImport("user32.dll", EntryPoint = "GetSystemMenu")]
            private static extern IntPtr GetSystemMenu(IntPtr hwnd, int revert);

            [DllImport("user32.dll", EntryPoint = "GetMenuItemCount")]
            private static extern int GetMenuItemCount(IntPtr hmenu);

            [DllImport("user32.dll", EntryPoint = "RemoveMenu")]
            private static extern int RemoveMenu(IntPtr hmenu, int npos, int wflags);

            [DllImport("user32.dll", EntryPoint = "DrawMenuBar")]
            private static extern int DrawMenuBar(IntPtr hwnd);

            public void Macro_DisableCloseButton()
            {
                 const int MF_BYPOSITION = 0x0400;
                 const int MF_DISABLED = 0x0002;

                 IntPtr win = ABB.Robotics.RobotStudio.Environment.UIEnvironment.MainWindo w.Handle;
                 IntPtr hmenu = GetSystemMenu(win, 0);
                 int cnt = GetMenuItemCount(hmenu);

                 // remove close action and extra menu line
                 RemoveMenu(hmenu, cnt-1, MF_DISABLED | MF_BYPOSITION);
                 RemoveMenu(hmenu, cnt-2, MF_DISABLED | MF_BYPOSITION);
            }


    Don't forget to add the refernce System.Windows.Forms.


  • Thanks for your help!