1. 程式人生 > >C#實現螢幕錄影

C#實現螢幕錄影

{

        
有關係統托盤

        
Win32

        
成員

        
///////////////////////////////////////////////////////////////////////////////////////////////
        
///<summary>
        
/// 程式初始化
        
///</summary>

privatevoid AppInit()
        
{
            enc 
=new WMEncoderClass();
            LoadSeting();
        }

        
///<summary>
        
/// 設定面板
        
///</summary>

        
///<param name="SkinName"></param>

privatevoid SetSkin(string SkinName)
        
{
            
this.skin.SerialNumber ="";
            
this.skin.SkinFile ="Skin\\"+ SkinName +".ssk";
        }

        
///<summary>
        
/// 初始壓縮選項列表
        
///</summary>

privatevoid InitCompression()
        
{
            
//
            ConfigManager.AppSetings appseting =new ConfigManager.AppSetings();
            
string Compression = appseting.ReadKeyValue("Compression");
            
//
            enc =new WMEncoderClass();
            wspim 
= enc.SourcePluginInfoManager;
            wspim.Refresh();
            IWMEncProfileCollection wpfc 
= enc.ProfileCollection;
            IWMEncProfile wp;
            
this.CompressionOptionListBox.Items.Clear();
            
for (int i =0; i < wpfc.Count; i++)
            
{
                wp 
= wpfc.Item(i);
                
this.CompressionOptionListBox.Items.Add(wp.Name);
                
if (wp.Name == Compression)
                    
this.CompressionOptionListBox.SelectedIndex = i;
            }


        }

        
///<summary>
        
/// 載入設定
        
///</summary>

privatevoid LoadSeting()
        
{
            ConfigManager.AppSetings appseting 
=new ConfigManager.AppSetings();
            
//是否錄製聲音
this.ChkSound.Checked =Convert.ToBoolean(appseting.ReadKeyValue("ChkSound"));
            
//是否隱藏主窗體
this.ChkHideMainForm.Checked = Convert.ToBoolean(appseting.ReadKeyValue("ChkHideMainForm"));
            
//快捷鍵設定
this.SkStartAndPause.Text = appseting.ReadKeyValue("SKey_StartAndPause");
           
this.SkStop.Text = appseting.ReadKeyValue("SKey_Stop");
           
this.SkShowAndHide.Text = appseting.ReadKeyValue("SKey_ShowAndHide");
            
//錄製區域
int rect = Convert.ToInt32(appseting.ReadKeyValue("CameraRect"));
           
if (rect ==1)
               
this.RWindow.Checked =true;
           
else
               
this.RScreen.Checked =true;
            
//
           Size sz = MainForm.GetScreenSize();
           
this.rw.Text  = sz.Width.ToString();
           
this.rh.Text = sz.Height.ToString();
        }

        
///<summary>
        
/// 取得選擇的壓縮選項
        
///</summary>
        
///<returns></returns>

private IWMEncProfile2 GetSelectCompressionOption()
        
{
            IWMEncProfileCollection wpfc 
= enc.ProfileCollection;
            IWMEncProfile wp;
            IWMEncProfile2 wp2 
=new WMEncProfile2Class();
            
if (this.CompressionOptionListBox.SelectedIndex ==-1)
            
{
                
returnnull;
            }

            
for (int i =0; i < wpfc.Count; i++)
            
{
                wp 
= wpfc.Item(i);

                
if (this.CompressionOptionListBox.SelectedItem.ToString() == wp.Name)
                
{
                    wp2.LoadFromIWMProfile(wp);
                    
return wp2;
                }

            }

            
returnnull;
        }

        
///<summary>
        
/// 開始錄製
        
///</summary>

privatevoid StartCamera()
        
{
            IWMEncSourceGroupCollection SrcGrpColl;
            IWMEncSourceGroup2 SrcGrp;
            IWMEncAudioSource SrcAud;
            IWMEncVideoSource2 SrcVid;
            IWMEncProfile2 Pro;
            enc 
=new WMEncoderClass();
            
//-------------------------------------------
try
            
{
                SrcGrpColl 
= enc.SourceGroupCollection;
                SrcGrp 
= (IWMEncSourceGroup2)SrcGrpColl.Add("SG_1");
                SrcVid 
= (IWMEncVideoSource2)SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_VIDEO);

                
//是否錄製聲音
if (this.ChkSound.Checked)
                
{
                    SrcAud 
= (IWMEncAudioSource)SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_AUDIO);
                    SrcAud.SetInput(
"Default_Audio_Device""DEVICE""");
                }

                SrcVid.SetInput(
"ScreenCapture1""ScreenCap""");

                
指定螢幕區域錄製

相關推薦

C#實現螢幕錄影

{         有關係統托盤         Win32         成員         /////////////////////////////////////////////////////////////////////////////////////////////

c#實現螢幕錄影功((成功)

using WMEncoderLib; using WMPREVIEWLib; using System.IO; WMEncoder Encoder; private void Form1_Load(object sender, System.EventAr

C++實現螢幕截圖(全屏截圖)

最近維護的專案,在某些情況下,光有日誌還不行,於是添加了截圖功能,特定情況下,會自動截圖,輔助分析,從而改程序序。以下是截圖實現程式碼。 void CDemoDlg::ScreenShot(void) { CWnd *pDesktop = GetDesktopWi

C#實現螢幕錄製

public partial class Form1 : Form { private MultimediaServer server; //在本地內嵌OMCS伺服器 private IMultimediaManager multimediaManager;

C++實現螢幕截圖(PNG或BMP)

上回分享了一個全屏截圖的程式碼,儲存為BMP, 實際使用的過程中我發現截圖檔案實在大,無賴又整成了PNG截圖,現在分享出來。 MakePNG.h //MakePNG.h #pragma once #include <GdiPlus.h> using nam

C#實現擷取當前螢幕的方法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.Windows; using S

c# 實現 ListBox 每一列可以有各自的顏色

font 效果 else graphic .com ror graphics 不能 c# 上圖是想實現的效果, 註意不是所有行一個顏色 首先把 listbox 的 DrawMode 屬性 改為 OwnerDrawFixed 然後 override listbox

設計模式——抽象工廠模式(C++實現

concrete out png return style bsp ctp img using 1 #include <iostream> 2 #include <string> 3 4 usin

設計模式——觀察者模式(C++實現

ace mes des ret rtu cto pattern virt date 1 #include <iostream> 2 #include <vector> 3 #include <algorithm>

設計模式C++實現——工廠方法模式

對象 類型 begin 創建對象 dia rate rod rtu log 模式定義: 工廠方法模式定義了一個創建對象的接口,但由子類決定要實例化的類是哪一個。工廠方法讓類把實例化推遲到子類。 模式結構: Creator是一個類,它

C++實現約瑟夫環的問題

content 人在 -h tel padding next family bsp sun 約瑟夫問題是個有名的問題:N個人圍成一圈。從第一個開始報數,第M個將被殺掉,最後剩下一個,其余人都將被殺掉。比如N=6,M=5。被殺掉的人的序號為5,4,6。2。3。最後剩下1

LR(1)文法分析器 //c++ 實現

返回 set 歸約 else 遍歷 close 入棧 inline 全部 1、先讀入終結符,非終結符,和全部產生式。 2、預處理:初始化;getpp()獲得每一個非終結符在產生式左邊時的產生式編號, 記錄在 string getp[]中(能夠多個)。 3.獲得全

AVLTree的實現算法(C++實現)

pen nod util ron bool allocator cti tor utili #include<stack>#include<utility>#include<allocators>#include<functiona

哈夫曼編碼解碼 C++實現

錯誤 urn using 過程 簡單 cin n) struct ren 哈夫曼編碼是一個通過哈夫曼樹進行的一種編碼,一般情況下,以字符:‘0’與‘1’表示。編碼的實現過程很簡單,只要實現哈夫曼樹,通過遍歷哈夫曼樹,這裏我們從每一個葉子結點開始向上遍歷,如果該結點為父節點的

[深入學習C#]C#實現多線程的方式:Task——任務

ren avr 利用 run 如何 創建 其中 continue rep 簡介   .NET 4包含新名稱空間System.Threading.Tasks,它 包含的類抽象出了線程功能。 在後臺使用ThreadPool。 任務表示應完成的某個單元的工作。 這個單元的工作可以

c++ 實現ping

n) time_t ply setuid details struct copyto 新版本 -o //頭文件 [cpp] view plain copy /* * File: CPing.h * Author: jaylong35 *

Linux c實現一個tcp文件服務器和客戶端

repr snippets 功能 stderr strcpy fprintf inet_addr 編寫 create 總體需求:編寫tcp文件服務器和客戶端。客戶端可以上傳和下載文件。 ===========================================

簡單測試--C#實現中文漢字轉拼音首字母

esp chart htm foreach ext ads linq 類庫 play 第一種: 這個是自己寫的比較簡單的實現方法,要做漢字轉拼音首字母,首先應該有一個存儲首字母的數組,然後將要轉拼音碼的漢字與每個首字母開頭的第一個漢字即“最小”的漢字作比較,這裏的最小指的是

設計模式——命令模式(C++實現

clear cto ive pre urn bak std oot style 1 [root@ ~/learn_code/design_pattern/19_order]$ cat order.cpp 2 #include <

字符串模式匹配KMP算法中的next數組算法及C++實現

完整 牛客網 names 數據 代碼 str 關於 clu .com 一、問題描述: 對於兩個字符串S、T,找到T在S中第一次出現的起始位置,若T未在S中出現,則返回-1。 二、輸入描述: 兩個字符串S、T。 三、輸出描述: 字符串T在S中第一次出現的起始位置,若未出現,則