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();
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中第一次出現的起始位置,若未出現,則