U盤里WMPInfo.xml是什么,可刪除嗎?WMP10同步功能的實現使用wmp的時候可以設置windows media player與某些設備同步,比如和光驅同步可以實現自動播放音樂光盤等等 。使用設備設置同步的時候,會放置一個名為WMPInfo.xml的文件,以跟蹤同步關系 。如果刪除了該文件,將導致windows media player丟失其與設備的同步關系信息 。
如何清除mediainfo關聯右鍵菜單首先,我也是深受K-Lite Codec Pack..右鍵糟蹋,因電腦視頻看不見封面 , 下了該軟件,然而這個右鍵霸占了我的快捷M鍵,讓我很是不爽,又無可奈何,因為怎么搞發現都搞不掉,我又是注冊表,又是改數據的,通通都沒用搞不掉他的原因是因為,他的主程序提前刪掉了,而附帶的快捷右鍵還遺留著,正確甩掉他的方式是: 1、重新安裝他的主程序,右鍵沒搞掉前,主程序不要刪,正所謂解鈴還須系鈴人啊........ 中華民族果然是博大精深,文化深似海 , 這波我是不服也得服.........2、使用360的右鍵菜單 。X掉他 , 對!沒錯!美滋滋3、然后去到主程序的文件夾里,正確清除,他的主程序文件夾里有一個紅色的圈圈按鈕,點了會自己卸載,不要從其他渠道卸載,卸不干凈,看一下我的效果圖愉快的擺脫其糟蹋 。祝你生活愉快,另外,注:如果你對當前的生活不滿意,可以聯系我,微19986137738送最佳事業機會平臺
c盤里的media文件夾可以刪嗎?1c盤里的media文件夾里面都是一些在“C:\WINDOWS\Media”位置 , 占用大量的硬盤空間,可以直接刪除,不會影響統運行的!
2 在“C:\WINDOWS\Media”位置,最好酌情處理,因為windows運行時有時會涉及、 。
U盤里的Autorun.inf文件夾可以刪嗎autorun.inf最好不刪
他是autorun病毒的免疫文件 。
如果刪除 。那就下個unlocker
mediainfo.dll怎么用樓主你好 , 你可以重新下載一個mediainfo.dll文件,然后按如下步驟操作:文件上傳了一、解壓后直接拷貝該文件到系統目錄里:1、Windows 95/98/Me系統,復制到C:\Windows\System目錄下 。2、Windows NT/2000系統,復制到C:\WINNT\System32目錄下 。3、Windows XP/WIN7/Vista系統,復制到C:\Windows\System32目錄下 。4、如果您的系統是64位的請將文件復制到C:\Windows\SysWOW64目錄二、打開"開始-運行-輸入regsvr32 mediainfo.dll",回車即可解決 。已上傳并提供下載連接,可根據需要下載 。mediainfo.dll下載地址:http://51dll.com/dll/file/?17232.1.5156.htm小技巧:如果無法進入桌面,可以啟動安全模式或者使用PE啟動電腦,然后修復 。【重要】:一定要選擇與系統版本一致的DLL才可以mediainfo.dll無法定位、丟失、找不到、加載失敗 等問題的修復
linux 下怎么用mediainfo可以看掃描方式,Interlaced是隔行掃描,也就是畫面有交錯的;Progressive是逐行掃描 。對于DVD的VOB文件還可以看場順序,Top Field First是奇數場優先;Bottom Field First 是偶數場優先 。例如,我用KMP查看媒體信息(KMP也是調用MediaInfo.dll的.
java讀取mediainfo怎么用樓主你好,你可以重新下載一個mediainfo.dll文件,然后按如下步驟操作: 文件上傳了 一、解壓后直接拷貝該文件到系統目...
怎么用MediaInfo查看場?可以看掃描方式,Interlaced是隔行掃描,也就是畫面有交錯的;Progressive是逐行掃描 。對于DVD的VOB文件還可以看場順序,Top Field First是奇數場優先;Bottom Field First 是偶數場優先 。例如,我用KMP查看媒體信息(KMP也是調用MediaInfo.dll的),部份內容如下:Format : MPEG Video
Format version : Version 2
Format profile : Main@Main
Format settings, Matrix : Default
Duration : 1mn 0s
Bit rate mode : Variable
Bit rate : 7 239 Kbps
Nominal bit rate : 9 800 Kbps
Width : 720 pixels
Height : 480 pixels
Display aspect ratio : 4:3
Frame rate : 29.970 fps
Standard : NTSC
Colorimetry : 4:2:0
Scan type : Interlaced
Scan order : Top Field First
如何用c++調用mediainfo獲取信息/*Copyright (c) MediaArea.net SARL. All Rights Reserved. * *Use of this source code is governed by a BSD-style license that can *be found in the License.html file in the root of the source tree. */ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//// Example for MediaInfoLib// Command line version////+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #ifdef MEDIAINFO_LIBRARY#include "MediaInfo/MediaInfo.h" //Staticly-loaded library (.lib or .a or .so)#define MediaInfoNameSpace MediaInfoLib;#else //MEDIAINFO_LIBRARY#include "MediaInfoDLL/MediaInfoDLL.h" //Dynamicly-loaded library (.dll or .so)#define MediaInfoNameSpace MediaInfoDLL;#endif //MEDIAINFO_LIBRARY#include #include using namespace MediaInfoNameSpace; #ifdef __MINGW32__#ifdef _UNICODE#define _itot _itow#else //_UNICODE#define _itot itoa#endif //_UNICODE#endif //__MINGW32 int main (int /*argc*/, Char * /*argv[]*/){//Information about MediaInfoMediaInfo MI;String To_Display=MI.Option(__T("Info_Version"), __T("0.7.13;MediaInfoDLL_Example_MSVC;0.7.13")).c_str();To_Display += __T("\r\n\r\nInfo_Parameters\r\n");To_Display += MI.Option(__T("Info_Parameters")).c_str();To_Display += __T("\r\n\r\nInfo_Codecs\r\n");To_Display += MI.Option(__T("Info_Codecs")).c_str();//An example of how to use the libraryTo_Display += __T("\r\n\r\nOpen\r\n");MI.Open(__T("Example.ogg"));To_Display += __T("\r\n\r\nInform with Complete=false\r\n");MI.Option(__T("Complete"));To_Display += MI.Inform().c_str();To_Display += __T("\r\n\r\nInform with Complete=true\r\n");MI.Option(__T("Complete"), __T("1"));To_Display += MI.Inform().c_str();To_Display += __T("\r\n\r\nCustom Inform\r\n");MI.Option(__T("Inform"), __T("General;Example : FileSize=%FileSize%"));To_Display += MI.Inform().c_str();To_Display += __T("\r\n\r\nGet with Stream=General and Parameter=\"FileSize\"\r\n");To_Display += MI.Get(Stream_General, 0, __T("FileSize"), Info_Text, Info_Name).c_str();To_Display += __T("\r\n\r\nGetI with Stream=General and Parameter=46\r\n");To_Display += MI.Get(Stream_General, 0, 46, Info_Text).c_str();To_Display += __T("\r\n\r\nCount_Get with StreamKind=Stream_Audio\r\n");#ifdef __MINGW32__Char* C1=new Char[33];_itot (MI.Count_Get(Stream_Audio), C1, 10);To_Display +=C1;delete[] C1;#elsetoStringStream SS;SS int main (int argc, Char *argv[]){//From: preparing an example file for readingFILE* F=fopen("Example.ogg", "rb"); //You can use something else than a fileif (F==0)return 1;//From: preparing a memory buffer for readingunsigned char* From_Buffer=new unsigned char[7*188]; //Note: you can do your own buffersize_t From_Buffer_Size; //The size of the read file buffer//From: retrieving file sizefseek(F, 0, SEEK_END);long F_Size=ftell(F);fseek(F, 0, SEEK_SET);//Initializing MediaInfoMediaInfo MI;//Preparing to fill MediaInfo with a bufferMI.Open_Buffer_Init(F_Size, 0);//The parsing loopdo{//Reading data somewhere, do what you want for this.From_Buffer_Size=fread(From_Buffer, 1, 7*188, F);//Sending the buffer to MediaInfosize_t Status=MI.Open_Buffer_Continue(From_Buffer, From_Buffer_Size);if (Status&0x08) //Bit3=Finishedbreak;//Testing if there is a MediaInfo request to go elsewhereif (MI.Open_Buffer_Continue_GoTo_Get()!=(MediaInfo_int64u)-1){fseek(F, (long)MI.Open_Buffer_Continue_GoTo_Get(), SEEK_SET);//Position the fileMI.Open_Buffer_Init(F_Size, ftell(F));//Informing MediaInfo we have seek}}while (From_Buffer_Size>0);//FinalizingMI.Open_Buffer_Finalize(); //This is the end of the stream, MediaInfo must finnish some work//Get() exampleString To_Display=MI.Get(Stream_General, 0, __T("Format"));#ifdef _UNICODEstd::wcout << To_Display;#elsestd::cout<< To_Display;#endif}*/
MediaInfo顯示的這些是什么意思?有誰知道?常規
完整的名稱l:\視頻\movoo24a.多媒體文件格式
格式多媒體文件格式
格式/信息音頻、視頻轉換
文件大小104kB
時間2秒120毫秒
整體比特率403千位節/秒
視頻
序列號0
格式聯合圖象專家組
編解碼器序列號視頻編碼格式
時間2秒71毫秒
比特率275千位節/秒
寬度176像素
高度144像素
顯示長寬比1.222
幀率9.174每秒幀數
色彩空間亮度和色差信號
僅供參考
U盤里的.mediaInfo可以刪除嗎怎麼?你刪不掉?這是什麼軟件呀??。∧閿夢募鬯榛恐菩隕境∈翟誆恍芯透袷交疷盤(這是下下策)?。。?說說具體情況 就選中然后刪除delete
MediaInfo怎么使用一軟件簡介
一用來分析視頻和音頻文件的編碼和內容信息
⑴內容信息:標題 , 作者,專輯名 , 音軌號,日期,總時間……
⑵視頻:編碼器,長寬比,幀頻率 , 比特率……
⑶音頻:編碼器,采樣率,聲道數,語言,比特率……
⑷文本:語言和字幕
⑸段落:段落數 , 列表
DivX, XviD, H263, H.263, H264, x264, ASP, AVC, iTunes, MPEG-1, MPEG1, MPEG-2, MPEG2, MPEG-4, MPEG4, MP4, M4A, M4V, QuickTime, RealVideo, RealAudio, RA, RM, MSMPEG4v1, MSMPEG4v2, MSMPEG4v3, VOB, DVD, WMA, VMW, ASF, 3GP, 3GPP, 3GP2
二支持格式
⑴視頻格式:MKV, OGM, AVI, DivX, WMV, QuickTime, Real, MPEG-1, MPEG-2, MPEG-4, DVD (VOB)...
(編碼器:DivX, XviD, MSMPEG4, ASP, H.264, AVC...)
⑵音頻格式:OGG, MP3, WAV, RA, AC3, DTS, AAC, M4A, AU, AIFF...
⑶字幕格式:SRT, SSA, ASS, SAMI...multiplexer, demuxer, mixer, muxer, video decoder, audio decoder, PAL, NTSC
二功能特點
一支持眾多視頻和音頻文件格式
二多種查看方式:表格,樹狀圖 , 文本,網頁 , 自定義……
三信息導出:CSV,表格 , 文本,網頁,HTML , 自定義……
四與Windows資源管理器整合:拖放,右鍵菜單
三查看文件
一使用右鍵菜單查看
⑴設置MediaInfo
⒈單擊[選項]菜單/選擇[參數設置]
⒉單擊[設置]/勾選“[資源管理器]右鍵菜單”/[確定]
⒊退出MediaInfo
⑵查看文件
⒈右擊文件/選擇[MediaInfo]
(自動啟動MediaInfo)
⒉單擊[查看]菜單/選擇查看方式
二使用添加文件
⒈啟動MediaInfo
⒉單擊[選擇多媒體文件]或[選擇文件夾]或[瀏覽]按扭/添加要查看的文件
⒊單擊[查看]菜單/選擇查看方式
mediainfo是哪家公司的產品完整的名稱l:\視頻\movoo24a.多媒體文件格式
格式多媒體文件格式
格式/信息音頻、視頻轉換
文件大小104kB
時間2秒120毫秒
整體比特率403千位節/秒
視頻
序列號0
格式聯合圖象專家組
編解碼器序列號視頻編碼格式
時間2秒71毫秒
比特率275千位節/秒
寬度176像素
高度144像素
顯示長寬比1.222
幀率9.174每秒幀數
色彩空間亮度和色差信號
僅供參考
如何清除mediainfo關聯右鍵菜單除不常用菜單項
或許右鍵菜單中的有些選項你并不常用 , 或者,有些軟件已被刪除,
但其右鍵菜單中的選項卻仍占用著屏幕空間 。要刪除這些無用的右鍵菜單項,請按下述方法操作:
1. 單擊Windows的“開始”菜單,單擊“運行”,在“打開”框中鍵入“regedit”,
單擊“確定”按鈕,打開“注冊表編輯器”窗口 。
2. 展開“HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers”分支,在其下找到要刪除的
無用項 , 然后右鍵單擊該項,再單擊“刪除”將其刪除即可清除右鍵菜單中的對應選項 。對于僅在
3.關閉“注冊表編輯器”窗口 。
怎么樣,經過以上工作,右鍵菜單清爽多了吧!
清理文件右鍵
運行 regedit 展開HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers
分支 在其下找到要刪除的無用項 刪除即可清潔右鍵菜單中的對應選項
清理IE右鍵!
右鍵菜單:添加到Windows media Player列表 怎樣去除?解決的辦法:1、從控制面板中依次進入“程序/默認程序/設置程序訪問和計算機的默認值”,選擇“自定義”并展開;2、找到“選擇默認的媒體播放機”小節(如圖2),在這里取消“Windows Media Player”后面的“啟用對此程序的訪問”復選框的選擇 , 確認之后即可生效 。3、現在 , MP3文件的右鍵菜單就再也不會出現與Windows Media Player有關的多余選項 。
mediainfolite 0.7.59安裝后只有影音文件有右鍵mediainfo菜單,如何使所有文件都有此菜單?32位系統使用:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\MediaInfo\Command]
@="\"C:\\Program Files\\K-Lite Codec Pack\\Tools\\MediaInfo.exe\" \"%1\""
64位系統使用:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\MediaInfo\Command]
@="\"C:\\Program Files (x86)\\K-Lite Codec Pack\\Tools\\MediaInfo.exe\" \"%1\""
根據系統類別,把以上代碼復制到記事本,另存為*.reg文件,雙擊導入注冊表即可 。
怎樣清除顯卡右鍵菜單如何清理你的電腦右鍵菜單
如何清除顯卡驅動在右鍵加入的菜單?1.打開記事本
2.把下面的所有文字復制進去:
@ ECHO OFF
@ ECHO.
@ ECHO.
@ ECHO.說明
@ ECHO -----------------------------------------------------------------------
@ ECHO 很多顯卡在裝了驅動之后,桌面右鍵會多出一項或多項菜單,這些功能并不實用 ,
@ ECHO 還會拖慢右鍵的彈出速度,以Intel的集成顯卡為甚 。遲純的反應速度嚴重地影響
@ ECHO 了使用者的心情 。我們最好清除它 。《GhostXP電腦公司特別版》作者編 。
@ ECHO -----------------------------------------------------------------------
PAUSE
regsvr32 /u /s igfxpph.dll
reg delete HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers /f
reg add HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers\new /ve /d {D969A300-E7FF-11d0-A93B-00A0C90F2719}
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v HotKeysCmds /f
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v IgfxTray /f
3.點文件-保存
4.在類型里選擇“所有文件”
5.保存為后綴名為“.bat”的文件如:“清除多余右鍵菜單.bat”
6.運行
mediainfo怎么設置中文很多播放器本身就可以顯示,也可以用專業的工具 。1、下載MediaInfo這個軟件 。這是個免費的測試視頻詳細信息的專業軟件 。2、第一次運行,可以選擇語言 。支持簡體中文 。2、打開界面后,把視頻拖進去,然后就會顯示基本信息 。詳細信息可以選擇文本或樹狀顯示,最為詳細 。
C# 如何引用MediaInfo.dll 有代碼的更好.在項目解決方案下面有個引用的,你可以右擊那個引用->添加引用就OK了,使用的時候到代碼里面打mediainfo后面打點看看里面具體說明有什么類....
如何在我的linux源碼中導入mediainfo可以看掃描方式,Interlaced是隔行掃描,也就是畫面有交錯的;Progressive是逐行掃描 。對于DVD的VOB文件還可以看場順序,Top Field First是奇數場優先;Bottom Field First 是偶數場優先 。例如,我用KMP查看媒體信息(KMP也是調用MediaInfo.dll的.
C#控制臺程序如何引用外部的dll 最好有圖 謝謝一、DLL與應用程序
動態鏈接庫(也稱為DLL,即為“Dynamic Link Library”的縮寫)是Microsoft Windows最重要的組成要素之一 , 打開Windows系統文件夾,你會發現文件夾中有很多DLL文件,Windows就是將一些主要的系統功能以DLL模塊的形式實現 。
動態鏈接庫是不能直接執行的,也不能接收消息,它只是一個獨立的文件,其中包含能被程序或其它DLL調用來完成一定操作的函數(方法 。注:C#中一般稱為“方法”),但這些函數不是執行程序本身的一部分,而是根據進程的需要按需載入,此時才能發揮作用 。
DLL只有在應用程序需要時才被系統加載到進程的虛擬空間中,成為調用進程的一部分 , 此時該DLL也只能被該進程的線程訪問 , 它的句柄可以被調用進程所使用,而調用進程的句柄也可以被該DLL所使用 。在內存中,一個DLL只有一個實例,且它的編制與具體的編程語言和編譯器都沒有關系,所以可以通過DLL來實現混合語言編程 。DLL函數中的代碼所創建的任何對象(包括變量)都歸調用它的線程或進程所有 。
下面列出了當程序使用 DLL 時提供的一些優點:[1]
1)使用較少的資源
當多個程序使用同一個函數庫時 , DLL 可以減少在磁盤和物理內存中加載的代碼的重復量 。這不僅可以大大影響在前臺運行的程序,而且可以大大影響其他在 Windows 操作系統上運行的程序 。
2)推廣模塊式體系結構
DLL 有助于促進模塊式程序的開發 。這可以幫助您開發要求提供多個語言版本的大型程序或要求具有模塊式體系結構的程序 。模塊式程序的一個示例是具有多個可以在運行時動態加載的模塊的計帳程序 。
3)簡化部署和安裝
當 DLL 中的函數需要更新或修復時,部署和安裝 DLL 不要求重新建立程序與該 DLL 的鏈接 。此外,如果多個程序使用同一個 DLL,那么多個程序都將從該更新或修復中獲益 。當您使用定期更新或修復的第三方 DLL 時 , 此問題可能會更頻繁地出現 。
二、DLL的調用
每種編程語言調用DLL的方法都不盡相同,在此只對用C#調用DLL的方法進行介紹 。首先,您需要了解什么是托管,什么是非托管 。一般可以認為:非托管代碼主要是基于win 32平臺開發的DLL , activeX的組件,托管代碼是基于.net平臺開發的 。如果您想深入了解托管與非托管的關系與區別,及它們的運行機制,請您自行查找資料 , 本文件在此不作討論 。
(一)調用DLL中的非托管函數一般方法
首先,應該在C#語言源程序中聲明外部方法,其基本形式是:
[DLLImport(“DLL文件”)]
修飾符 extern 返回變量類型 方法名稱 (參數列表)
其中:
DLL文件:包含定義外部方法的庫文件 。
修飾符: 訪問修飾符,除了abstract以外在聲明方法時可以使用的修飾符 。
返回變量類型:在DLL文件中你需調用方法的返回變量類型 。
方法名稱:在DLL文件中你需調用方法的名稱 。
參數列表:在DLL文件中你需調用方法的列表 。
注意:需要在程序聲明中使用System.Runtime.InteropServices命名空間 。
DllImport只能放置在方法聲明上 。
DLL文件必須位于程序當前目錄或系統定義的查詢路徑中(即:系統環境變量中Path所設置的路徑) 。
返回變量類型、方法名稱、參數列表一定要與DLL文件中的定義相一致 。
若要使用其它函數名,可以使用EntryPoint屬性設置,如:
[DllImport("user32.dll", EntryPoint="MessageBoxA")]
static extern int MsgBox(int hWnd, string msg, string caption, int type);
其它可選的 DllImportAttribute 屬性:
CharSet 指示用在入口點中的字符集,如:CharSet=CharSet.Ansi;
SetLastError 指示方法是否保留 Win32"上一錯誤" , 如:SetLastError=true;
ExactSpelling 指示 EntryPoint 是否必須與指示的入口點的拼寫完全匹配,如:ExactSpelling=false;
PreserveSig指示方法的簽名應當被保留還是被轉換 , 如:PreserveSig=true;
CallingConvention指示入口點的調用約定 , 如:CallingConvention=CallingConvention.Winapi;
此外,關于“數據封送處理”及“封送數字和邏輯標量”請參閱其它一些文章[2] 。
C#例子:
1.啟動VS.NET,新建一個項目,項目名稱為“Tzb”,模板為“Windows 應用程序” 。
2.在“工具箱”的“ Windows 窗體”項中雙擊“Button”項,向“Form1”窗體中添加一個按鈕 。
3.改變按鈕的屬性:Name為 “B1”,Text為 “用DllImport調用DLL彈出提示框”,并將按鈕B1調整到適當大小,移到適當位置 。
4.在類視圖中雙擊“Form1”,打開“Form1.cs”代碼視圖,在“namespace Tzb”上面輸入“using System.Runtime.InteropServices;”,以導入該命名空間 。
5.在“Form1.cs[設計]”視圖中雙擊按鈕B1,在“B1_Click”方法上面使用關鍵字 static 和 extern 聲明方法“MsgBox”,將 DllImport 屬性附加到該方法,這里我們要使用的是“user32.dll”中的“MessageBoxA”函數,具體代碼如下:
[DllImport("user32.dll", EntryPoint="MessageBoxA")]
static extern int MsgBox(int hWnd, string msg, string caption, int type);
然后在“B1_Click”方法體內添加如下代碼,以調用方法“MsgBox”:
MsgBox(0," 這就是用 DllImport 調用 DLL 彈出的提示框哦! "," 挑戰杯 ",0x30);
6.按“F5”運行該程序,并點擊按鈕B1
怎樣在C#中調用DLL中的函數,最好有代碼和詳細說明[C#動態調用C++編寫的DLL函數]
by jingzhongrong2008-05-08 動態加載DLL需要使用Windows API函數:LoadLibrary、GetProcAddress以及FreeLibrary 。我們可以使用DllImport在C#中使用這三個函數 。
[DllImport("Kernel32")]
public static extern int GetProcAddress(int handle, String funcname);
[DllImport("Kernel32")]
public static extern int LoadLibrary(String funcname);
[DllImport("Kernel32")]
public static extern int FreeLibrary(int handle);
當我們在C++中動態調用Dll中的函數時,我們一般的方法是:
假設DLL中有一個導出函數,函數原型如下:
BOOL __stdcall foo(Object &object, LPVOID lpReserved);
1、首先定義相應的函數指針:
typedef BOOL (__stdcall *PFOO)(Object &object, LPVOID lpReserved);
2、調用LoadLibrary加載dll:
HINSTANCE hInst = ::LoadLibraryW(dllFileName);
3、調用GetProcAddress函數獲取要調用函數的地址:
PFOO foo = (PFOO)GetProcAddress(hInst,"foo");
if(foo == NULL)
{
FreeLibrary(hInst);
return false;
}
4、調用foo函數:
BOOL bRet = foo(object,(LPVOID)NULL);
5、使用完后應釋放DLL:
FreeLibrary(hInst);
那么在C#中應該怎么做呢?方法基本上一樣,我們使用委托來代替C++的函數指針,通過.NET Framework 2.0新增的函數GetDelegateForFunctionPointer來得到一個委托的實例:
下面封裝了一個類,通過該類我們就可以在C#中動態調用Dll中的函數了:
public class DLLWrapper
{
///
/// API LoadLibrary
///
[DllImport("Kernel32")]
public static extern int LoadLibrary(String funcname);
///
/// API GetProcAddress
///
[DllImport("Kernel32")]
public static extern int GetProcAddress(int handle, String funcname);
///
/// API FreeLibrary
///
[DllImport("Kernel32")]
public static extern int FreeLibrary(int handle);
///
///通過非托管函數名轉換為對應的委托, by jingzhongrong
///
///通過LoadLibrary獲得的DLL句柄
///非托管函數名
///對應的委托類型
///委托實例,可強制轉換為適當的委托類型
public static Delegate GetFunctionAddress(int dllModule, string functionName, Type t)
{
int address = GetProcAddress(dllModule, functionName);
if (address == 0)
return null;
else
return Marshal.GetDelegateForFunctionPointer(new IntPtr(address), t);
}
///
///將表示函數地址的IntPtr實例轉換成對應的委托, by jingzhongrong
///
public static Delegate GetDelegateFromIntPtr(IntPtr address, Type t)
{
if (address == IntPtr.Zero)
return null;
else
return Marshal.GetDelegateForFunctionPointer(address, t);
}
///
///將表示函數地址的int轉換成對應的委托,by jingzhongrong
///
public static Delegate GetDelegateFromIntPtr(int address, Type t)
{
if (address == 0)
return null;
else
return Marshal.GetDelegateForFunctionPointer(new IntPtr(address), t);
}
}
通過這個類,我們這樣調用DLL:
1、聲明相應的委托(正確聲明很重要,否則不能調用成功,后面有詳細介紹) 。
2、加載DLL:
int hModule = DLLWrapper.LoadLibrary(dllFilePath);
if (hModule == 0)
return false;
3、獲取相應的委托實例:
FOO foo = (FOO)DLLWrapper.GetFunctionAddress(hModule, "foo", typeof(FOO));
if (foo == null)
{
DLLWrapper.FreeLibrary(hModule);
return false;
}
4、調用函數:
foo(...);
5、.NET并不能自動釋放動態加載的DLL,因此我們在使用完DLL后應該自己釋放DLL:
DLLWrapper.FreeLibrary(hModule);
下面我們將就委托應如何聲明進行相應的討論 , 在實際操作過程中,我發現使用DllImport方法和動態調用方法兩者在C#中對DLL中函數原型的聲明是有些區別的,下面我介紹動態調用中委托的聲明:
1、首先應該注意的是,C++中的類型和C#中類型的對應關系,比如C++中的long應該對應C#中的Int32而不是long,否則將導致調用結果出錯 。
2、結構的聲明使用StructLayout對結構的相應布局進行設置,具體的請查看MSDN:
使用LayoutKind指定結構中成員的布局順序,一般可以使用Sequential:
[StructLayout(LayoutKind.Sequential)]
struct StructVersionInfo
{
public int MajorVersion;
public int MinorVersion;
}
另外,如果單獨使用內部類型沒有另外使用到字符串、結構、類,可以將結構在C#中聲明為class:
[StructLayout(LayoutKind.Sequential)]
class StructVersionInfo
{
public int MajorVersion;
public int MinorVersion;
}
對應C++中的聲明:
typedef struct _VERSION_INFO
{
int MajorVersion;
int MinorVersion;
} VERSION_INFO, *PVERSION_INFO;
如果結構中使用到了字符串,最好應指定相應的字符集:
[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode)]
部分常用的聲明對應關系(在結構中):
C++:字符串數組
wchar_t Comments[120];
C#:
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 120)]
public string Comments;
C++:結構成員
VERSION_INFO ver;
C#
publicStructVersionInfo ver;
C++:函數指針聲明
PFOO pFoo; //具體聲明見文章前面部分
C#:
publicIntPtr pFoo; //也可以為 public int pFoo;
//不同的聲明方法可以使用上面DLLWrapper類的相應函數獲取對應的委托實例
如果在結構中使用到了union,那么可以使用FieldOffset指定具體位置 。
3、委托的聲明:
當C++編寫的DLL函數需要通過指針傳出將一個結構:如以下聲明:
void getVersionInfo(VERSION_INFO *ver);
對于在C#中聲明為class的結構(當VERSION_INFO聲明為class)
delegate voidgetVersionInfo(VERSION_INFO ver);
如果結構聲明為struct,那么應該使用如下聲明:
delegate voidgetVersionInfo(refVERSION_INFO ver);
注意:應該使用ref關鍵字 。
如果DLL函數需要傳入一個字符串,比如這樣:
BOOL __stdcall jingzhongrong1(const wchar_t* lpFileName, int* FileNum);
那么使用委托來調用函數的時候應該在C#中如下聲明委托:
delegate bool jingzhongrong1(
[MarshalAs(UnmanagedType.LPWStr)]String FileName,
ref int FileNum);
注意:應該使用[MarshalAs(UnmanagedType.LPWStr)]和String進行聲明 。
如果要在DLL函數中傳出一個字符串,比如這樣:
void __stdcall jingzhongrong2(
wchar_t* lpFileName, //要傳出的字符串
int* Length);
那么我們如下聲明委托:
//使用委托從非托管函數的參數中傳出的字符串,
//應該這樣聲明,并在調用前為StringBuilder預備足夠的空間
delegate void jingzhongrong2(
[MarshalAs(UnmanagedType.LPWStr)] StringBuilder lpFileName,
ref int Length,
);
在使用函數前 , 應先為StringBuilder聲明足夠的空間用于存放字符串:
StringBuilder fileName = new StringBuilder(FileNameLength);
MediaInfo顯示的這些內容是什么意思文件名:L:\video\mov0024a.avi應該是你手機內存卡上的錄像 。文件大小104kB,總長持續時間2.12秒,總碼率403kbps 。視頻分辨率176×144,編碼器為MJPEG,視頻碼率275kbps,幀率9.174fps(……幻燈片……)總之……你的手機該換換了……
怎樣查看一個視頻文件的參數等數據?漢化版的維翠視頻編輯器,可以看
怎么查看視頻的一些參數視頻格式轉換軟件格式工廠及3gp-video-converter中,都可以查看視頻的屬性 。
如果是3gp-video-converter , 可以直接把能正常播放的視頻加入到3gp-video-converter中,在素材上點右鍵---屬性,這時就有視頻的6個關鍵參數了:格式(壓縮方式)、幀速率、視頻分辨率、音頻格式(壓縮方式)、采樣速率和聲道 。
如果用格式工廠,同樣把能正常播放的視頻加入到格式工廠中,在窗口中點“多媒體文件信息”按鈕,出現全部的參數,只不過是英文的
怎么查看視頻的參數?暴風影音是一個比較好的視頻播放器 , 同時可以查看視頻的詳細格式參數如:比特率、幀率、采樣率、分辨、格式、視頻編碼、視頻大少、縱橫比、音頻編碼、音頻聲道等 。具體操作:用暴風影音打開一個視頻,在菜單欄選擇“查看”再勾選你要查看的選項,比如說統計欄里就有很多你需要的參數;播放-濾鏡,這里也有一些相關設置 。
怎樣用MediaInfo 軟件檢測視頻的格式點文件選擇打開
文件然后下面就顯示出這個文件的格式!
選擇打開文件夾就是一次多?。∫彩且桓齦魷允荊∠旅嬗型甲邢縛聰攏『嗆竅M锏僥?br>示!在瀏
覽路徑那里選擇你想看的文件!
安裝了Adobe Acrobat之后 , 點擊文件的右鍵菜單,沒有“轉換為Adobe PDF”和“在Acrobat中合并支持的文件”

文章插圖
1、打開一個的Adobe Acrobat的進入到該界面當中 。點擊左側上角中的 文件 的選項 。2、選中了的文件 的選項,彈出了下拉菜單選中為 合并 的選項 。3、選中了合并的選項之后,彈出了下一級菜單選中為 合并文件到單個pdf的選項 。4、進入到合并文件的窗口當中,選中一個文件。5、選中了文件之后,點擊 刪除 按鈕 。6、可以看到是對于當前中的,文件的被刪除合并成功了 。
安裝了WPS文件之后,右鍵無法創建WORD文件?可以是要軟件修復的方法解決:1、首先,打開360安全衛士首頁,在右下方找到“人工服務”圖標 , 鼠標左鍵單擊打開人工服務 。2、然后,在上方查找方案的搜索框中輸入“右鍵菜單無法新建Office文件”,搜索問題的解決方案 。3、打開搜索結果中第一條工具方案,在這里可以看到癥狀表現和出現該問題的可能原因,仔細閱讀查看是否遇到的問題相符合,如若相符 , 點擊立即修復 。4、可以看到正在為您修復您所遇到的問題,稍等片刻等進度條進行完畢,等待修復完成 。5、最后見證奇跡的時刻到了,修復已完成,可以新建office了 。如果仍然沒有解決問題,可以點擊“還沒有解決”字樣查找其他解決方案即可 。
MediaInfo查看視頻參數的一個問題?.大小 : 2.02 GiB (100%) 100%是表示無損嗎? 百分比是越高越清晰嗎? bits/(pixel*frame)(數據密度) : 3.988 數據密度又是什么意思?
有些avi后綴的視頻用mediainfo測出來格式是mpeg-4(Base Media),這種情況是發布者假冒的avi嗎?可能發布者只是把后綴改了以下 。
射手影音提示缺少MediaInfo.dll怎么辦?首先 你去百度下mediainfo.dll 下載下來放入系統盤下的(一般是C:)windows\system32下
是不是 你的殺軟件的問題你把殺軟關了 再安裝試試
我要安裝格式工廠,電腦出現丟失mediainfo.dll,應該怎么辦??win7的系統 重新下載了還是安裝出錯 怎么辦mediainfo.dll不是系統組件,應該是格式化工廠依賴這個DLL,但是你下載的格式化工廠沒有這個組件 , 你可以選擇其他的下載點進行下載,下載一個包含這個DLL的安裝包就行了 。
有關unrar.dll在射手影音安裝中出現的問題把你的射手影音卸載后重新下載最新版安裝使用 , 不要用老的更新試試,應該有用
電腦提示media library.dll丟失怎么辦?【mediainfo】第一種辦法卸載了在裝一遍 。第二種去網上找到對應的dll下載了放到相應的文件夾里去
- 音樂在線播放
- 怎么清理筆記本鍵盤里的灰塵 筆記本鍵盤里的灰塵如何清除
- 鍵盤里面的灰塵怎么清理 鍵盤里面的灰塵如何清理
- 3d電影下載
- 百度網盤離線下載
- u盤文件刪不掉
- u盤文件無法刪除
- spotlight
- flashget
- drivergenius
