C\#다 중 프로 세 스 가 PPT 의 예제 튜 토리 얼 을 엽 니 다.

배경
PPT 파일 열기 와 작업 은 하나의 프로 세 스에 서 이 루어 집 니 다.여러 개의 PPT 를 조작 하면 PowerPoint 프로 세 스 는 기본적으로 차단 방식 으로 순서대로 진 행 됩 니 다.만약 에 열 린 PPT 가 너무 크 면(예 를 들 어 1GB 초과)PPT 가 응답 하지 않 기 쉬 워 서 거의 모든 PPT 작업 을 할 수 없습니다.
PPT 무 응답 을 해결 하 는 방법 은 PPT 프로 세 스(POWERPNT.exe)가 응답 하지 않 았 는 지 정기 적 으로 확인 하고 응답 이 없 으 면 POWERPNT.exe 프로 세 스 를 Kill 하고 PPT 를 다시 여 는 것 입 니 다.이런 방식 으로 는 여러 개의 PPT 조작 이 필요 한 문 제 를 해결 할 수 없 으 며,여러 개의 PPT 파일 이 크다 면 여러 개의 PPT 를 조작 하면 PPT 가 응답 하지 않 는 경우 가 빈번 하 다.
PPT 무 응답 을 해결 하 는 또 다른 방법 은 다 중 프로 세 스 방식 으로 PPT 를 여 는 것 이다.PPT 는 기본적으로 여러 프로 세 스 를 사용 하여 열 수 없습니다.사용자 별로 PPT 를 열 때 서로 다른 PPT 프로 세 스 를 열 수 있 습 니 다.그 이 유 는 참고 문 서 를 참조 하 십시오.
2.구체 적 인 방법
다 중 사용자 가 PPT 를 여 는 방법 을 사용 하려 면 먼저 다른 사용 자 를 내장 해 야 합 니 다.이 는 코드 를 통 해 이 루어 질 수도 있 고 Windows 사용자 설정 을 통 해 지정 한 사용 자 를 추가 할 수도 있 습 니 다코드 조작 사용 자 는 잠시 후에 참고 코드 가 있 을 것 입 니 다.
그 다음으로 지 정 된 사용자(및 비밀번호)를 사용 하여 PPT 작업 을 봉인 한 프로 세 스 를 시작 한 다음 프로 세 스 간 통신 방식(파이프,COPYDATA 메시지,MQTT,추천 파이프 또는 COPYDATA 메시지,제3자 라 이브 러 리 에 의존 하지 않 아 도 됨)을 통 해 PPT 제어(열 림,뒤 집기,점프,미디어 제어 등)를 한다.
3.참조 코드
(1)지정 한 사용자 가 프로 세 스 를 여 는 코드 세 션 을 사용 합 니 다(args 매개 변 수 는 파이프 이름 이나 사용자 정의 메 시 지 를 전달 할 수 있 습 니 다)

public void StartProcess(string fileName, string userName, string password, string args)
{
 var pwd = new SecureString();
 if (!string.IsNullOrEmpty(password))
 {
  password.ToCharArray().ToList().ForEach(c => pwd.AppendChar(c));
 }

 try
 {
  var process = new Process
  {
   StartInfo =
   {
    UseShellExecute = false,
    LoadUserProfile = true,
    UserName = userName,
    Password = pwd,
    Domain = ".",
    FileName = $"\"{fileName}\"",
    Arguments = args
   }
  };
  process.Start();
 }
 finally
 {
  pwd.Dispose();
 }
}
(2)PPT 조작 부분

private void OpenPpt()
{
 var app = new Microsoft.Office.Interop.PowerPoint.Application();
}

private void ClosePpt(ref Application app)
{
 try
 {
  app?.Quit();
 }
 catch (Exception e)
 {
  Console.WriteLine(e.Message);
 }

 app = null;
 GC.Collect();
}

public void Open(object app, string filePath)
{
 var ppt = app as Microsoft.Office.Interop.PowerPoint.Application;
 if (ppt == null)
 {
  return;
 }

 //         
 filePath = filePath.Replace('/', '\\');

 try
 {
  //       ,         
  //            (AssemblyGuid)      PPT,          
  var presentation = ppt.Presentations.Open(
   $"{filePath}::{Password}",
   MsoTriState.msoTrue, //ReadOnly: true
   MsoTriState.msoTrue, //Untitled: true
   MsoTriState.msoFalse); //WithWindow: false

  //      
  var officeWidth = presentation.PageSetup.SlideWidth;
  var officeHeight = presentation.PageSetup.SlideHeight;

  //    
  var pageNumber = presentation.Slides.Count;

  var slideShowSettings = presentation?.SlideShowSettings;
  if (slideShowSettings == null)
  {
   return;
  }

  var window = slideShowSettings.Run();
 }
 catch (Exception e)
 {
  Console.WriteLine(e.Message);
 }
}

public void Close(SlideShowWindow window)
{
 try
 {
  window?.View.Exit();
 }
 catch (Exception e)
 {
  Console.WriteLine(e.Message);
 }
}

public void GotoSlide(SlideShowWindow window, int index)
{
 try
 {
  window?.View.GotoSlide(index);
 }
 catch (Exception e)
 {
  Console.WriteLine(e.Message);
 }
}

public void Next(SlideShowWindow window)
{
 try
 {
  window?.View.Next();
 }
 catch (Exception e)
 {
  Console.WriteLine(e.Message);
 }
}

public void Previous(SlideShowWindow window)
{
 try
 {
  window?.View.Previous();
 }
 catch (Exception e)
 {
  Console.WriteLine(e.Message);
 }
}
이상 은 C\#다 중 프로 세 스 가 PPT 를 여 는 예제 튜 토리 얼 의 상세 한 내용 입 니 다.C\#다 중 프로 세 스 가 PPT 를 여 는 것 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기