最近用C#做一个小软件,遇到这样一个问题:关闭EXCEL工作簿时(这里是点击EXCEL工作簿上的“X”号,不是EXCEL主菜单上的“X”号),EXCEL本身会有保存提示。如图:
想实现这样3个功能:1.修改这个提示信息,如“是否保存对“book1”的更改”修改成“AAA”
2.当鼠标点击这个“是”或 “否”的按钮时,在C#中获取到这个动作,如果点击了“是”,C#执行代码段A;如果点击了否,C#执行代码段B
3.如果2实现不了,能不能做成这样,当我点击EXCEL工作簿上的这个“X”号时,屏蔽EXCEL本身的提示信息,调用我自己定义的C#窗体程序。接触C#时间不长,摸索了一阵子句柄的方法,进展不大。
近来因为此事,折腾不轻,希望高手能给我指点,小弟感激不尽。
想实现这样3个功能:1.修改这个提示信息,如“是否保存对“book1”的更改”修改成“AAA”
2.当鼠标点击这个“是”或 “否”的按钮时,在C#中获取到这个动作,如果点击了“是”,C#执行代码段A;如果点击了否,C#执行代码段B
3.如果2实现不了,能不能做成这样,当我点击EXCEL工作簿上的这个“X”号时,屏蔽EXCEL本身的提示信息,调用我自己定义的C#窗体程序。接触C#时间不长,摸索了一阵子句柄的方法,进展不大。
近来因为此事,折腾不轻,希望高手能给我指点,小弟感激不尽。
FindWindow
SetWindowText
2.当鼠标点击这个“是”或 “否”的按钮时,在C#中获取到这个动作,如果点击了“是”,C#执行代码段A;如果点击了否,C#执行代码段B
比较困难,需要CreateRemoteThread
然后用C编写代码SubClass这个WndProc
3.如果2实现不了,能不能做成这样,当我点击EXCEL工作簿上的这个“X”号时,屏蔽EXCEL本身的提示信息,调用我自己定义的C#窗体程序。
SendMessage WM_COMMAND
然后自己调用MessageBox
我需要获取关闭时执行的操作,“是”或“否”.close关闭没问题,但抓取不到这个状态啊
拦截excel关闭按钮: AppEvents_Event)excel).WorkbookBeforeClose+=new AppEvents_WorkbookBeforeCloseEventHandler(ExcelClose_WorkbookBeforeClose);// += new AppEvents_NewWorkbookEventHandler(ExcelClose_NewWorkbook);xcel添加数据:
eApp = (Microsoft.Office.Interop.Excel.Application)oApplication;//这样就可以象上文中所述来操作Excel了。
eApp.Cells[1, 1] = "First Row First Column";
eApp.Cells[1, 2] = "First Row Second Column";
eApp.Cells[2, 1] = "Second Row First Column";
eApp.Cells[2, 2] = "Second Row Second Column";