微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

防止subprocess创build可见的窗口?

我试图使用办公自动化(PIA)将一些.pptx文件转换成其他格式。 但是,即使隐藏了主窗口,PowerPoint仍然坚持显示进度条。

有什么办法可以防止PowerPoint从主窗口显示任何Windows?

额外的信息:

我主要使用C#,COM PIA for Office interop。 但是我不害怕深入研究C ++:P

我如何禁用Windows防火墙?

Windows,C#:从活动和保存的日志中读取事件日志条目

桌面通知程序没有可见的forms给用户

exception错误对话框

托pipeC ++方法命名

我用这样的PIA启动PowerPoint

var app = new PowerPoint.Application(); var ppt = app.Presentations.Open("my.pptx"); // This line will show a progress dialog ppt.SaveAs("out.pdf",PowerPoint.PpSaveAsFileType.ppSaveAsPDF,MsoTriState.msoTrue); app.Quit();

如何控制.NET服务引用的文件名?

SystemEvents.SessionSwitch用户被locking/解锁

带有“validation”和“取消”button的消息框

从Perl调用.NET

为什么FileSystemInfo不声明GetAccessControl方法

调用Powerpoint过程之前,您可以使用CreateDesktop调用来创建备用桌面。 这将确保由powerpoint创建的窗口不可见。 但是,这里有一些注意事项:

您将需要在另一个线程中执行此操作; 你不想在你的主GUI线程上改变桌面

最好在专用线程上用一个备用桌面初始化一次powerpoint,并将其保持在同一线程上,直到终止。 这确保了它不会被从多个桌面调用混淆。

如果powerpoint弹出任何类型的对话框,用户将无法回答它,除非你切换到备用桌面与PowerPoint交互。

如果powerpoint是一个进程外的服务器,可能会发生不好的事情(powerpoint在备用桌面上加载,然后用户尝试手动打开powerpoint,此时powerpoint的主UI加载在不可见的备用桌面上)。 这可能是你需要仔细测试的东西。 这个问题也可以通过创建一个替代的Window Station来避免,但是由于窗口站是过程全局的,在这种情况下,你需要产生一个帮助子进程来处理与powerpoint的交互。

您也可以尝试使用Windows消息钩来确定何时创建窗口并使其不可见。 这也有一些注意事项:

你将不得不找到一些可靠的方法来确定感兴趣的窗口(窗口类名称?)

如果powerpoint是一个进程外服务器,将会出现一个窗口,其中钩子处于活动状态,并可能隐藏错误的进度对话框(即属于另一个进程的对话框)。 为了尽量减少这个机会,测试一下是否处于进行中(在这种情况下,编程挂钩只影响你自己的进程),如果没有,安排挂钩只有在抑制压缩所需的最小时间进度窗口。

未来的powerpoint发布可能会破坏你用来识别感兴趣的窗口的任何方法。 关于这一点你可以做的很少。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐