Actullay我想要的powerpoint必须打开并显示在我的窗体本身。我不想在微软打开powerpoint ...所以我做了我想做的事,意味着Powerpoint以我自己的形式开放。但问题在于,在运行时Powerpoint在窗体上打开时,同时另一个Powerpoint实例正在打开,我不想要另一个实例。那么如何去除那个powerpoint的其他实例呢? 请检查验证码。问题当我在我的窗体上显示Powerpoint的c#.net
using System.Runtime.InteropServices;
using ppt = Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;
public partial class Form2 : Form
{
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
static extern IntPtr FindWindow(IntPtr ZeroOnly, string lpWindowName);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool SetWindowText(IntPtr hwnd, String lpString);
ppt.Presentation presentation;
Microsoft.Office.Interop.PowerPoint.SlideShowView oSlideShowView;
bool flag = false;
public Form2()
{
InitializeComponent();
}
public void open(string FileName)
{
try
{
ppt.Application application;
// For Display in Panel
IntPtr screenClasshWnd = (IntPtr)0;
IntPtr x = (IntPtr)0;
application = new ppt.Application();
presentation = application.Presentations.Open(FileName, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);
panel1.Controls.Add(application as Control);
ppt.SlideShowSettings sst1 = presentation.SlideShowSettings;
sst1.LoopUntilStopped = Microsoft.Office.Core.MsoTriState.msoTrue;
ppt.Slides objSlides = presentation.Slides;
sst1.LoopUntilStopped = MsoTriState.msoTrue;
sst1.StartingSlide = 1;
sst1.EndingSlide = objSlides.Count;
panel1.Dock = DockStyle.Fill;
sst1.ShowType = ppt.PpSlideShowType.ppShowTypeKiosk;
ppt.SlideShowWindow sw = sst1.Run();
//sw=Objssws
oSlideShowView = presentation.SlideShowWindow.View;
IntPtr pptptr = (IntPtr)sw.HWND;
SetParent(pptptr, panel1.Handle);
}
catch (Exception)
{
throw;
}
}
private void Form2_Load(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
// openFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
if (openFileDialog.ShowDialog(this) == DialogResult.OK)
//string FileName = "C:\\Task\\Welcome to PowerPoint.ppt";
open(openFileDialog.FileName);
}
private void timer1_Tick(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
oSlideShowView.Next();
}
}
神圣抽烟的人 - 花一些时间来正确地问一个问题。您如何期待本网站的人们花时间回答您没有花时间提问的问题? – 2013-04-30 12:25:04
事实上,我已经阅读过你的问题两次,但仍然不清楚。 – 2013-04-30 12:44:31