我使用SetParent在我的应用程序中托管外部应用程序(使用WindowsFormHost)。
流动是这样的:
programmaticly由于上面的流,当外部应用程序打开时,我可以在任务栏/任务管理器中看到它一秒(直到父程序被设置)。
我能改变它先设置父程序然后打开应用程序的顺序吗?我只想避免我刚才描述的..。
如果你对我的问题有别的解决办法,我很乐意接受。
编辑:
这是我的密码
string strPres = @"C:\Users\Ron\Desktop\Create an Office Mix.pptx";
oPPT = new Microsoft.Office.Interop.PowerPoint.Application();
oPPT.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;
objPresSet = oPPT.Presentations;
objPres = objPresSet.Open(strPres, MsoTriState.msoFalse,
MsoTriState.msoFalse, MsoTriState.msoTrue);
objPres.SlideShowSettings.ShowType = Microsoft.Office.Interop.PowerPoint.PpSlideShowType.ppShowTypeWindow;
objPres.SlideShowSettings.Run();
objPres.Windows[1].Close();
objPres.Saved = MsoTriState.msoTrue;
uint oPPTID;
GetWindowThreadProcessId(new IntPtr(oPPT.HWND), out oPPTID);
_process = Process.GetProcessById((int)oPPTID);
_process.WaitForInputIdle();
SetParent(_process.MainWindowHandle, _panel.Handle);发布于 2015-06-16 22:50:15
只有知道窗口句柄,才能调用SetParent()。创建窗口的应用程序也不可避免地会导致任务栏按钮被创建,无法覆盖此按钮。当您请求隐藏时,ProcessStartInfo.WindowStyle可能是一个解决方案,但绝大多数应用程序忽略了这个请求。
您只能快速地处理它,并使用shell用来注意创建窗口的相同机制。并且领先,这需要SetWindowsHookEx()。从.NET应用程序中执行非常痛苦的操作,WH_SHELL钩子需要一个可以注入到进程中的DLL,这样就不能用C#编写它。有一个Codeproject.com项目帮助我,就在这里。太过时了,YMMV。
https://stackoverflow.com/questions/30832311
复制相似问题