最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 多進(jìn)程打開PPT的示例教程

 更新時間:2021年01月07日 11:14:47   作者:xhubobo  
這篇文章主要介紹了C# 多進(jìn)程打開PPT的示例教程,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下

1、背景

PPT文件打開和操作是在一個進(jìn)程中進(jìn)行的,如果對多個PPT進(jìn)行操作,PowerPoint進(jìn)程默認(rèn)會以阻塞的方式依次進(jìn)行,如果打開的PPT特別大(比如超過1GB)很容易造成PPT無響應(yīng),這樣幾乎所有的PPT操作都無法進(jìn)行。

解決PPT無響應(yīng)的一種方式是定時檢測PPT進(jìn)程(POWERPNT.exe)是否無響應(yīng),如果無響應(yīng)就將POWERPNT.exe進(jìn)程Kill掉,重新打開PPT。這種方式并不能解決需要多個PPT操作的問題,如果多個PPT文件都很大,操作多個PPT會頻繁出現(xiàn)PPT無響應(yīng)的情況。

解決PPT無響應(yīng)的另一種方式是使用多進(jìn)程方式打開PPT。PPT默認(rèn)是無法使用多個進(jìn)程打開的,在使用不同用戶打開PPT的情況下,可以打開不同的PPT進(jìn)程,其原因見參考文檔。

2、具體方法

使用多用戶打開PPT的方法,首先需要內(nèi)置不同的用戶,這可以通過代碼實(shí)現(xiàn)(需要管理員權(quán)限),也能通過Windows用戶設(shè)置添加指定的用戶。使用代碼操作用戶稍后會有參考代碼。

其次是使用指定用戶(及密碼)啟動封裝好PPT操作的進(jìn)程,然后通過進(jìn)程間通信的方式(管道、COPYDATA 消息、MQTT,推薦管道或者COPYDATA消息,不用依賴第三方庫)進(jìn)行PPT控制(打開、翻頁、跳轉(zhuǎn)、媒體控制等)。

3、參考代碼

(1)使用指定用戶打開進(jìn)程的代碼片段(args參數(shù)可以傳遞管道名稱或者自定義消息)

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
 {
  //以只讀方式打開,方便操作結(jié)束后保存
  //使用一個不可能為密碼的值(AssemblyGuid)作為密碼打開PPT,保證有密碼時打開失敗
  var presentation = ppt.Presentations.Open(
   $"{filePath}::{Password}",
   MsoTriState.msoTrue, //ReadOnly: true
   MsoTriState.msoTrue, //Untitled: true
   MsoTriState.msoFalse); //WithWindow: false

  //獲取真實(shí)寬高
  var officeWidth = presentation.PageSetup.SlideWidth;
  var officeHeight = presentation.PageSetup.SlideHeight;

  //獲取頁數(shù)
  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# 多進(jìn)程打開PPT的示例教程的詳細(xì)內(nèi)容,更多關(guān)于C# 多進(jìn)程打開PPT的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#之WinForm跨線程訪問控件實(shí)例

    C#之WinForm跨線程訪問控件實(shí)例

    這篇文章主要介紹了C#之WinForm跨線程訪問控件,實(shí)例講述了跨線程訪問控件的簡單實(shí)現(xiàn)方法與用法,需要的朋友可以參考下
    2014-10-10
  • C#導(dǎo)出文本內(nèi)容到word文檔的方法

    C#導(dǎo)出文本內(nèi)容到word文檔的方法

    這篇文章主要介紹了C#導(dǎo)出文本內(nèi)容到word文檔的方法,涉及C#操作word文檔的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C#串口通信實(shí)現(xiàn)方法

    C#串口通信實(shí)現(xiàn)方法

    這篇文章主要介紹了C#串口通信實(shí)現(xiàn)方法,詳細(xì)講述了C#串口通信所涉及的數(shù)據(jù)接收與發(fā)送方法,以及相關(guān)的線程調(diào)用方法,是非常典型的應(yīng)用,需要的朋友可以參考下
    2014-12-12
  • C#之繼承實(shí)現(xiàn)

    C#之繼承實(shí)現(xiàn)

    本文詳細(xì)講解了C#之繼承的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#實(shí)現(xiàn)讀取txt通用的方法小結(jié)

    C#實(shí)現(xiàn)讀取txt通用的方法小結(jié)

    這篇文章主要為大家詳細(xì)介紹了C#讀取txt通用的方法,兼容所有的UTF-8、Unicode(Little Endian)、BigEndianUnicode,有需要的小伙伴可以了解下
    2024-01-01
  • C#實(shí)現(xiàn)微信退款及對賬功能的示例詳解

    C#實(shí)現(xiàn)微信退款及對賬功能的示例詳解

    在招聘報名系統(tǒng)里,考務(wù)費(fèi)支付是其中一個環(huán)節(jié),支付方式很多種,比如銀聯(lián)、微信、支付寶等等,本次我們以微信支付進(jìn)行舉例,在實(shí)際的應(yīng)用中,對于支付成功的考生,我們會遇到實(shí)現(xiàn)退款的需求,所以本文給大家介紹了使用C#實(shí)現(xiàn)微信退款及對賬,需要的朋友可以參考下
    2023-11-11
  • 使用C#在注冊表中保存信息的例子

    使用C#在注冊表中保存信息的例子

    最近做的項(xiàng)目需要在注冊表中記錄一些用戶設(shè)置,方便在程序下次啟動時讀取設(shè)置,應(yīng)用上次用戶保存的設(shè)置,挺簡單的
    2014-04-04
  • WPF如何實(shí)現(xiàn)日期范圍選擇器

    WPF如何實(shí)現(xiàn)日期范圍選擇器

    這篇文章主要為大家詳細(xì)介紹了WPF如何實(shí)現(xiàn)日期范圍選擇器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • 使用C#實(shí)現(xiàn)AES加密與解密的示例

    使用C#實(shí)現(xiàn)AES加密與解密的示例

    在現(xiàn)代應(yīng)用程序中,數(shù)據(jù)加密是保護(hù)敏感信息安全的重要手段,AES(高級加密標(biāo)準(zhǔn))是一種廣泛使用的對稱加密算法,提供強(qiáng)大的數(shù)據(jù)保護(hù)功能,今天,我將為大家展示如何使用 C# 實(shí)現(xiàn) AES 加密和解密,需要的朋友可以參考下
    2024-12-12
  • C#常見Winform窗體效果詳解

    C#常見Winform窗體效果詳解

    這篇文章主要為大家詳細(xì)介紹了C#中常見Winform窗體效果實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04

最新評論

澄江县| 汾西县| 江永县| 江山市| 巩义市| 平武县| 盐亭县| 潮州市| 贵溪市| 曲阳县| 怀来县| 江津市| 肇源县| 津南区| 平远县| 云安县| 洪泽县| 潼关县| 龙海市| 平利县| 上蔡县| 霍邱县| 察雅县| 上犹县| 聂荣县| 牡丹江市| 彭阳县| 安塞县| 灯塔市| 南丹县| 济阳县| 甘洛县| 时尚| 武夷山市| 西安市| 新巴尔虎右旗| 霞浦县| 渝中区| 芷江| 铜山县| 娄底市|