有个问题。利用     FExcelApp, FWorkBook, FWSheet: Variant;
    FExcelApp := CreateOleObject('Excel.Application');
    FWorkBook := CreateOleObject('Excel.Sheet');
处理调用 的 Excel
现在有个这样的了要求,就是用户点击右上角的关闭时,要给用户提示,并且使用关闭功能失效
只能通过程序来关闭,怎么做。

解决方案 »

  1.   

    用全局钩子捕获excel的窗体关闭消息?
      

  2.   

    我身边没有delphi环境,刚用c#做了个测试可以将标题栏的关闭按钮禁用,你可以参考下
     public Form1()
            {
                InitializeComponent();
                IntPtr hMenu = GetSystemMenu(this.Handle, 0);
                RemoveMenu(hMenu, SC_CLOSE, MF_BYCOMMAND);
            }        [DllImport("USER32.DLL")]
            private static extern IntPtr GetSystemMenu(IntPtr hWnd, UInt32 bRevert);
            [DllImport("USER32.DLL")]
            private static extern UInt32 RemoveMenu(IntPtr hMenu, UInt32 nPosition, UInt32 wFlags);
            private const UInt32 SC_CLOSE = 0x0000F060;
            private const UInt32 MF_BYCOMMAND = 0x00000000;
    至于全局钩子,C#做不了,所以没法帮你测试了
      

  3.   

    另外你可以上网查下delphi钩子截获消息的例子,很多的思路就是注入后重载wndproc,然后把关闭消息忽略或者修改,而只有你的自定消息传入才会真正关闭窗口,不难的,骚年,现在多动动手,你后你会花现世界是很美好滴
      

  4.   

    谢谢。。我原来delphi 加载Excel 宏来实现的。。花了1多时间,不会玩还没有参考资料。。