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.

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!