Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxDefs.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxDefs.cpp	(revision 38899)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxDefs.cpp	(revision 38900)
@@ -48,4 +48,5 @@
 const char* VBoxDefs::GUI_LastCloseAction = "GUI/LastCloseAction";
 const char* VBoxDefs::GUI_RestrictedCloseActions = "GUI/RestrictedCloseActions";
+const char* VBoxDefs::GUI_CloseActionHook = "GUI/CloseActionHook";
 const char* VBoxDefs::GUI_SuppressMessages = "GUI/SuppressMessages";
 const char* VBoxDefs::GUI_PermanentSharedFoldersAtRuntime = "GUI/PermanentSharedFoldersAtRuntime";
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxDefs.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxDefs.h	(revision 38899)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxDefs.h	(revision 38900)
@@ -128,4 +128,5 @@
     static const char* GUI_LastCloseAction;
     static const char* GUI_RestrictedCloseActions;
+    static const char* GUI_CloseActionHook;
     static const char* GUI_SuppressMessages;
     static const char* GUI_PermanentSharedFoldersAtRuntime;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineWindow.cpp	(revision 38899)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineWindow.cpp	(revision 38900)
@@ -198,4 +198,11 @@
             CMachine machine = session().GetMachine();
 
+            /* Check if there is a close hock script defined. */
+            const QString& strScript = machine.GetExtraData(VBoxDefs::GUI_CloseActionHook);
+            if (!strScript.isEmpty())
+            {
+                QProcess::startDetached(strScript, QStringList() << machine.GetId());
+                return;
+            }
             /* Prepare close dialog: */
             UIVMCloseDialog dlg(machineWindow());
