1
A
回答
5
像這樣的工作,假設你有一個IBaseFilter參考:
[DllImport("oleaut32.dll", CharSet = CharSet.Auto)]
internal static extern int OleCreatePropertyFrame(
IntPtr hwndOwner,
uint x, uint y,
[MarshalAs(UnmanagedType.LPWStr)]
string caption,
uint objectCount,
[MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.IUnknown)]
object[] lplpUnk,
int cPages,
IntPtr pageClsID,
Guid lcid,
uint dwReserved,
IntPtr lpvReserved);
public void DisplayPropertyPages(Form form, IBaseFilter filter)
{
var propertyPages = filter as ISpecifyPropertyPages;
DsCAUUID pages;
FilterInfo info;
int hr = filter.QueryFilterInfo(out info);
DsError.ThrowExceptionForHR(hr);
if (propertyPages == null)
{
throw new ApplicationException("IBaseFilter doesn't implement ISpecifyPropertyPages");
}
hr = propertyPages.GetPages(out pages);
DsError.ThrowExceptionForHR(hr);
var filters = new IBaseFilter[1];
filters[0] = filter;
hr = OleCreatePropertyFrame(form.Handle, 0, 0, info.achName, 1, filters,
pages.cElems, pages.pElems, Guid.Empty, 0, IntPtr.Zero);
Marshal.FreeCoTaskMem(pages.pElems);
DsError.ThrowExceptionForHR(hr);
}
1
請在MSDN檢查OleCreatePropertyFrame的說明()。
Guid lcid無效。結果: 託管調試助手'PInvokeStackImbalance'在'D:\ CVS \ Dev \ Filters \ H264 \ H264mfxEncoder \ Samples \ C#\ H264EncoderTest \ bin \ Debug \ H264EncoderTest.vshost.exe'中檢測到問題。 附加信息:對PInvoke函數'H264EncoderTest!H264EncoderTest.CGraph :: OleCreatePropertyFrame'的調用使堆棧不平衡。這很可能是因爲託管的PInvoke簽名與非託管目標籤名不匹配。檢查PInvoke簽名的調用約定和參數是否與目標非託管簽名相匹配。
必須是:uint lcid 和hr = OleCreatePropertyFrame(form.Handle,0,0,info.achName,1,filters,pages.cElems,pages.pElems,0,0,IntPtr.Zero);
相關問題
- 1. 如何顯示對話框
- 2. 使用invokeLater逐個顯示對話框
- 3. 如何使用C#在Vista下顯示確認對話框?
- 4. 如何使用PyQt和QtDesigner來設計自定義對話框來顯示自定義對話框?
- 5. 如何使用進度微調顯示一個對話框?
- 6. 這是默認對話框jquery顯示
- 7. 如何在使用ShowDialog顯示對話框時控制對話框的位置?
- 8. 顯示對話框
- 9. 顯示對話框
- 10. android顯示來電對話框
- 11. 方法來顯示對話框
- 12. 如何在Android中顯示對話框中的對話框?
- 13. 使用MVVM Foundation Messenger顯示對話框
- 14. 使用活動顯示對話框?
- 15. 使用PendingIntent顯示對話框
- 16. 使用WebBrowser顯示對話框
- 17. 使用Javascript顯示對話框
- 18. 使用MVVM Foundation Messenger顯示對話框
- 19. 顯示在YUI使用JavaScript對話框
- 20. 尋找一個優雅的「不要再顯示我這個對話框」對話框在C#
- 21. C++顯示OSX權限對話框
- 22. 顯示對話框不顯示對話框
- 23. primefaces使用commandlink來隱藏一個對話框並顯示另一個對話框
- 24. 如何只顯示對話框一次
- 25. 如何顯示打印對話框
- 26. 如何阻止Umbraco顯示對話框?
- 27. 如何顯示加載對話框
- 28. 如何顯示Windows登錄對話框?
- 29. 如何在BlackBerry中顯示對話框
- 30. 如何在asp.net中顯示對話框
是的,這將工作。您在DirectShow.NET示例(http://sourceforge.net/projects/directshownet/files/DirectShowSamples/)中的Samples \ Misc \ Toolkit \ FilterGraphTools.cs`文件中包含此代碼。但是如果你不明白這個代碼,試着看看DirectShow是如何工作的!在這些示例中,編譯並運行`Samples \ Players \ PlayWnd`項目並探索代碼... – Cipi 2011-03-10 09:44:38