RobotStudio event

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 ✭✭
    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!