国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

c# Winform 程序嵌入PPT

這篇具有很好參考價(jià)值的文章主要介紹了c# Winform 程序嵌入PPT。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

記錄一下,嵌入ppt程序遇到的問(wèn)題。。。。。。。。。。。。。。。。。。。。。。。。。。。

在網(wǎng)上找了很多資料,關(guān)于嵌入ppt瀏覽ppt的例子和方法,使用下來(lái)都是一大推問(wèn)題。。

最后選擇了打開(kāi)ppt程序,把ppt程序嵌入頁(yè)面UI中這個(gè)方法,但同樣問(wèn)題都一抹多,慶幸問(wèn)題最后都有驚無(wú)險(xiǎn)解決掉了

1、office asstant 沒(méi)有安裝

在程序中第一次寫(xiě)下代碼,直接打開(kāi)ppt程序,當(dāng)時(shí)就拋異常:office asstant not install.

using POWERPOINT = Microsoft.Office.Interop.PowerPoint;
using OFFICECORE = Microsoft.Office.Core;

objApp = new POWERPOINT.Application();

objPresSet = objApp.Presentations.Open(filePath, OFFICECORE.MsoTriState.msoTrue, OFFICECORE.MsoTriState.msoTrue, OFFICECORE.MsoTriState.msoFalse);

搞人心態(tài),網(wǎng)上也查不到什么原因,難道大家都沒(méi)有遇到過(guò)嗎。。

其實(shí)我估計(jì)也是office環(huán)境問(wèn)題,同事運(yùn)行我這段代碼是沒(méi)問(wèn)題的,最后把同事的office環(huán)境給搞過(guò)來(lái)了。

原來(lái)我用的office是2013版本的,最后換成了2016,然后安裝了三個(gè)插件,不知道是版本還是插件問(wèn)題,沒(méi)下去深究。

2、第一次打開(kāi)ppt并瀏覽了后,關(guān)閉界面,然后第二次瀏覽ppt,究拋異常了,原因是第一次打開(kāi)的ppt程序并沒(méi)有關(guān)閉。。。怪自己太辣雞了,技術(shù)差,哈哈哈

下面是ppt嵌入的效果,沒(méi)有直接嵌入ppt編輯界面,直接嵌入的是ppt的播放界面。

c# Winform 程序嵌入PPT

?

最后貼一段代碼,打開(kāi)ppt嵌入界面的。


using POWERPOINT = Microsoft.Office.Interop.PowerPoint;
using OFFICECORE = Microsoft.Office.Core;

POWERPOINT.Application objApp = null;
POWERPOINT.Presentation objPresSet = null;
POWERPOINT.SlideShowWindows objSSWs;

[DllImport("user32.dll")]
public static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
[DllImport("user32.dll")]
public static extern int MoveWindow(IntPtr hWnd, int x, int y, int nWidth, int nHeight, bool BRePaint);
[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int fLag);

public void PPTOpen(string filePath)
        {
            try
            {
                //打開(kāi)一個(gè)ppt程序
                objApp = new POWERPOINT.Application();
                ShowWindow((IntPtr)objApp.HWND, SW_HIDE);

                //打開(kāi)一個(gè)ppt,隱藏編輯窗口.
                //Open的三個(gè)參數(shù):ppt路徑,是否只讀,是否顯示標(biāo)題,是否顯示ppt編輯界面
                objPresSet = objApp.Presentations.Open(filePath, OFFICECORE.MsoTriState.msoTrue, OFFICECORE.MsoTriState.msoTrue, OFFICECORE.MsoTriState.msoFalse);

                //objPresSet.SlideShowSettings.ShowType這個(gè)屬性值建議自己去嘗試,每個(gè)對(duì)應(yīng)的    值會(huì)有不同的驚喜哦,就不貼每個(gè)屬性對(duì)應(yīng)值得效果圖了
                objPresSet.SlideShowSettings.ShowType = PpSlideShowType.ppShowTypeWindow;


                //設(shè)置該屬性是為了防止ppt播放完畢后彈出是否保存界面
                objPresSet.Saved = OFFICECORE.MsoTriState.msoTrue;
                objSlides = objPresSet.Slides;
                if (objSlides.Count == 0)
                {
                    MessageBox.Show("空白幻燈片,不能播放");
                    return;
                }

                //開(kāi)始播放ppt
                objSSS = this.objPresSet.SlideShowSettings;
                slideShowWindow = objSSS.Run();

                //沒(méi)嵌入之前隱藏播放窗口
                ShowWindow(GetParent(GetParent((IntPtr)slideShowWindow.HWND)), SW_HIDE);
 

                //移動(dòng)ppt程序界面到程序中 slideShowWindow.HWND傳入的是ppt播放界面的句柄,如果                
                //想嵌入ppt編輯界面,也可傳objApp.HWND
                EmbedProcessEx((IntPtr)slideShowWindow.HWND, panelTeachContent);
            }
            catch (Exception ex)
            {

            }
        }
 private bool EmbedProcessEx(IntPtr nHwnd, Control control)
        {

            IntPtr hwnd = (IntPtr)nHwnd;
            
            if (control == null || hwnd == IntPtr.Zero) return false;
            try
            {
                SetParent(hwnd, control.Handle);
                MoveWindow(hwnd, 0, 0, control.Width, control.Height, true);
            }
            catch (Exception ex)
            {
                return false;
            }
            return true;

        }


最后,就醬紫吧。。。。

同理,其他語(yǔ)言也類似,用了w32API的SetParent和MoveWindow文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-450743.html

到了這里,關(guān)于c# Winform 程序嵌入PPT的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 關(guān)于uniapp全局掛載變量/方法的問(wèn)題,沒(méi)遇到過(guò)點(diǎn)進(jìn)來(lái)吧,記錄一下我踩過(guò)的坑。

    事情是這樣的,我在用uniapp做一個(gè)微信小程序,遇到了個(gè)問(wèn)題,是在封裝uni.request()到全局方法的時(shí)候,其實(shí)就很簡(jiǎn)單的,是關(guān)于 this的指向問(wèn)題 (若想了解此問(wèn)題的話,點(diǎn)這里去看大佬的文章!?。。?,找?guī)讉€(gè)小時(shí)的博客都未能解決。 建uniapp項(xiàng)目時(shí)用了vue3,那么就要遵

    2024年02月16日
    瀏覽(19)
  • C# Winform程序跟隨系統(tǒng)啟動(dòng)

    C# Winform程序跟隨系統(tǒng)啟動(dòng)

    ? ?說(shuō)明:有時(shí)候Winform程序,寫(xiě)完了,安裝在window服務(wù)器上,需要每天重啟服務(wù)器(擔(dān)心程序運(yùn)行舊了就會(huì)卡),每次重啟后又擔(dān)心程序沒(méi)啟動(dòng),這篇文章可以解決這個(gè)問(wèn)題 Window 10系統(tǒng)測(cè)試 設(shè)備名稱?? ?i7BooK 處理器?? ?Intel(R) Core(TM) i7-6660U CPU @ 2.40GHz ? 2.40 GHz 機(jī)帶 RAM?? ?8

    2023年04月09日
    瀏覽(20)
  • C#桌面程序 winform 集成內(nèi)置WebApi C# 創(chuàng)建HTTP Web API服務(wù),winform項(xiàng)目創(chuàng)建HTTP WEB服務(wù),不使用IIS業(yè)務(wù) C#桌面程序WebApi C#winform集

    C#桌面程序 winform 集成內(nèi)置WebApi C# 創(chuàng)建HTTP Web API服務(wù),winform項(xiàng)目創(chuàng)建HTTP WEB服務(wù),不使用IIS業(yè)務(wù) C#桌面程序WebApi C#winform集

    ?在維護(hù)舊的項(xiàng)目時(shí),有時(shí)需要提供APP連接的需求,就要提供HTTP服務(wù),winform項(xiàng)目就要提供HTTP服務(wù),就不用再去寫(xiě)個(gè)c# web的IIS相關(guān)的業(yè)務(wù)了,簡(jiǎn)化項(xiàng)目的復(fù)雜度。只需要簡(jiǎn)單化實(shí)例就可以實(shí)現(xiàn)提供HTTP服務(wù)

    2024年02月08日
    瀏覽(37)
  • C# WinForm程序安全徹底退出方法

    本文講解在C#退出WinForm程序的方法, 目錄 4種常用方法 退出實(shí)例 1.this.Close();?? 只是關(guān)閉當(dāng)前窗口,若不是主窗體的話,是無(wú)法退出程序的,另外若有托管線程(非主線程),也無(wú)法干凈地退出; 2.Application.Exit();? 強(qiáng)制所有消息中止,退出所有的窗體,但是若有托管線程(

    2024年02月16日
    瀏覽(22)
  • C#中簡(jiǎn)單Winform程序編譯(待驗(yàn)證)

    C#中簡(jiǎn)單Winform程序編譯(待驗(yàn)證)

    1、文件架構(gòu) 2、MainWindow.xaml 3、MainWindow.xaml.cs 4、測(cè)試程序

    2024年02月16日
    瀏覽(22)
  • C#:WinForm應(yīng)用程序中用鼠標(biāo)移動(dòng)控件位置

    有時(shí)候在WinForm程序中,我們需要用鼠標(biāo)移動(dòng)程序窗口中的對(duì)象(例如圖片對(duì)象等)的位置,可以通過(guò)定義控件的鼠標(biāo)事件來(lái)實(shí)現(xiàn)。以命名為pictureBox1的PictureBox控件為例,分別定義它的MouseDown(按下鼠標(biāo)按鈕)、MouseMove(移動(dòng)鼠標(biāo))、MouseUp(釋放鼠標(biāo)按鈕)三個(gè)事件,代碼如

    2024年02月16日
    瀏覽(33)
  • 淺聊一下 C#程序的 內(nèi)存映射文件 玩法

    淺聊一下 C#程序的 內(nèi)存映射文件 玩法

    前段時(shí)間訓(xùn)練營(yíng)里有朋友問(wèn) 內(nèi)存映射文件 是怎么玩的?說(shuō)實(shí)話這東西理論我相信很多朋友都知道,就是將文件映射到進(jìn)程的虛擬地址,說(shuō)起來(lái)很容易,那如何讓大家眼見(jiàn)為實(shí)呢?可能會(huì)難倒很多人,所以這篇我以自己的認(rèn)知嘗試讓大家眼見(jiàn)為實(shí)。 在任何討論之前,內(nèi)存文件

    2024年02月08日
    瀏覽(21)
  • 記錄一下,C#運(yùn)行nodejs調(diào)用js文件提示報(bào)錯(cuò):Error: node:internal/modules/cjs/loader:1080

    個(gè)人記錄一下,C#運(yùn)行nodejs調(diào)用js文件提示報(bào)錯(cuò): 報(bào)錯(cuò)提示信息: Error: node:internal/modules/cjs/loader:1080 throw err; ? ^ ?Error: Cannot find module \\\'F:鎴戠殑....................” .....................下面還有很多報(bào)錯(cuò)內(nèi)容 還有英文提示模塊未找到的提示。 我另一個(gè)文件運(yùn)行沒(méi)報(bào)錯(cuò),運(yùn)行正常有

    2024年02月11日
    瀏覽(30)
  • C#實(shí)例:多功能Windows窗體應(yīng)用程序Helloworld_WinForm

    C#實(shí)例:多功能Windows窗體應(yīng)用程序Helloworld_WinForm

    有了創(chuàng)建一個(gè)Windows窗體應(yīng)用程序的經(jīng)驗(yàn),就可以開(kāi)始嘗試運(yùn)用更多的控件實(shí)現(xiàn)更多豐富的功能界面。以下分享我基于項(xiàng)目Helloworld_WinForm 使用常用C#Windows窗體控件 實(shí)現(xiàn)一些小功能。 每一節(jié)標(biāo)題為所用到的控件,全文以實(shí)際制作過(guò)程為序編制。 1、創(chuàng)建窗體Form 項(xiàng)目創(chuàng)建時(shí)會(huì)默

    2024年02月04日
    瀏覽(26)
  • C# 關(guān)于使用newlife包將webapi接口寄宿于一個(gè)控制臺(tái)程序、winform程序、wpf程序運(yùn)行

    C# 關(guān)于使用newlife包將webapi接口寄宿于一個(gè)控制臺(tái)程序、winform程序、wpf程序運(yùn)行

    C# 關(guān)于使用newlife包將webapi接口寄宿于一個(gè)控制臺(tái)程序、winform程序、wpf程序運(yùn)行 安裝newlife包 Program的Main()函數(shù)源碼 MyController 源碼 MyHttpHandler 源碼 源代碼百度鏈接 鏈接:https://pan.baidu.com/s/15OxTDOBO_y5bFyrzPW3XPw?pwd=sr3c 提取碼:sr3c

    2024年02月15日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包