![](/img/trans.png)
[英]How To Write To A OneNote 2013 Page Using C# and The OneNote Interop
[英]How to close OneNote window using C#?
除非您不尝试终止该过程,否则这应该有效。
Process[] p = Process.GetProcessesByName("onenote");
p[0].Kill();
我不确定进程名称。
我知道这是一个老问题,但我最近需要能够关闭 OneNote Win32 应用程序作为办公自动化的一部分。
显然可以使用 OneNote 互操作打开 OneNote 的单个部分(一个选项卡 = 扩展名为.one
的文件):
string sectionID = String.Empty;
var oneNoteApp = new Microsoft.Office.Interop.OneNote.Application();
oneNoteApp.OpenHierarchy(inputFile, null, out sectionID, CreateFileType.cftNone);
oneNoteApp.SyncHierarcy(sectionID);
oneNoteApp.NavigateTo(sectionID);
oneNoteApp.Publish(sectionID, outputFile, PublishFormat.pfPDF);
但是,即使获取笔记本的 ID,也无法关闭该部分。
将WM_CLOSE
发送到oneNoteApp
的 windows 句柄(如@pushpraj 建议)将在前几次工作,但在第 2 次或第 3 次关闭后,OneNote 会抱怨应用程序未正确关闭。 “杀死”方法(如@DarkDragon 建议的那样)也将导致相同的问题。
以下close
方法是我能找到的唯一解决方法。 它解决了我的问题。
var hWnd = oneNoteApp.Windows.CurrentWindows.WindowsHandle;
var phWnd = GetParent((IntPtr) hWnd);
var gphWnd = GetParent((IntPtr) phWnd);
PostMessage((IntPtr) gphWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
(其中GetParent
和PostMessage
都在user32.dll
中可用。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.