原创 獲取Filter的三種途徑

一、通過CLSID IBaseFilter *pF = 0; HRESULT hr = CoCreateInstance(clsid, 0, CLSCTX_INPROC_SERVER, IID_IBaseFilter, r

原创 誰的事情誰做,千萬不要代勞

 一直在想,如何高效的重複使用代碼,做界面的時候,也常想如何讓一個對話框類複用。由於對話框類比較特殊,一般都是針對特定的需求制定,有幾個編輯框,幾個組合框,幾個按鈕,有沒有複選框等等,各不相同,要複用對話框是比較難的。 偶爾也有一些窗口可

原创 局域網音頻對講

局域網音頻對講涉及到音頻採集、音頻播放、網絡傳輸等技術,需要使用到多線程處理的方式。 首先,網絡中會傳輸兩種類型的數據,一種是命令數據(信令),一種是音頻數據。 其次,對講的任何一端都需要接收音頻數據,播放音頻同時採集音頻,發送音頻數據。

原创 Inno Setup 小技巧2--Shellexec

Inno Setup 的Shellexec的功能類似乎Windows API 的ShellExecute函數,執行某種操作,可以是開啓一個進程,可以打開一個瀏覽器等等。 不過,Inno Setup 的Shellexec有一個優點,這個優點

原创 linux下mysql數據庫C語言編程

在linux上安裝好mysql後,建立我們測試用的數據庫和表,並插入記錄,sql語句如下: CREATE DATABASE ta; use ta CREATE TABLE t1 ( id INTEGER NOT NULL ,

原创 DLL的一點體會

做了一個測試程序,包括DllA.dll、DllB.dll、DllFun.dll、test1.exe和test2.ext 主要代碼如下: //DllFun.cpp //一個全局整型變量g_Count //Fun_Plus_Count函數返回

原创 配置linux的編程環境

最近開始接觸linux編程,以前只有Windows的C++編程基礎,對linux十分陌生,因此,所有東西從頭學。 工欲善其事,必先利其器。開發環境十分重要,一個好的開發環境會給編程帶來很多方便。我需要編寫的是網絡程序,因此我的配置如下:

原创 winsock 多播(組播)

組播,就是有一組主機,一個主機發送數據,組內其他的主機都會收到。首先,根據上圖講述組播的原理: 我們把路由器192.168.0.1端口也看做一臺主機,這樣就有四臺主機連接到交換機上。根據以太網的原理,交換機不知道IP地址的存在,只知道M

原创 std字符串轉換函數

#include <ShlObj.h> #include <Psapi.h> std::string SW2A(std::wstring& strW) { std::string curLocale = setlocale(LC_AL

原创 註冊DirectShow Filter信息

編寫自己的DirectShow Filter,除了編寫實現功能的代碼之外,要使自己的DLL稱爲一個Filter,還有一個重要的工作需要做,那就是註冊信息。DirectShow Filter有兩種信息註冊,一種是包含Filter的DLL作爲

原创 Mapping

HANDLE WINAPI CreateFileMapping( __in HANDLE hFile, __in LPSECURITY_ATTRIBUTES lpAttributes, __

原创 流協議

TCP流套接字使用send函數發送數據,send函數的返回值表示實際發送的數據大小。爲什麼要返回這樣的一個值呢,難道不是把給定的緩衝區的數據全部發送出去嗎?確實是這樣。 send的函數實際上是把發送緩衝區的數據拷貝到系統發送數據緩衝區,當

原创 根據進程名關閉進程

BOOL CloseProcess(CString strProcessName) { HANDLE Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCES

原创 開機自動運行

// 開機自動運行 BOOL SetAutoRun(TCHAR* pszExeName, TCHAR* pszPath, BOOL bAddOrRemove) { HKEY hRegKey = NULL; BOOL bR

原创 DirectShow基礎編程 採集視頻數據

視頻數據採集大致可以分爲四個步驟: 1、創建Capture Graph Builder 和Filter Graph Manager,將兩者關聯。 2、創建Filter,並添加到Graph中。 3、根據媒體類型等信息連接Filter。 4、