
這是我想要呼叫的方法,圖中ELM_TEXT_INFO是一個結構體,我要給結構體成員賦值,然后呼叫這個方法。已經在unsafe中嘗試過下圖,(textParam是結構體實體化)

但是報下圖的錯

請問該怎么改啊?(求生欲強的新手,勿噴
)
uj5u.com熱心網友回復:
定義為:ref ELM_TEXT_INFO pTextInfo
uj5u.com熱心網友回復:
謝謝。但是參考時,又出現了 其他資訊: 傳遞給系統呼叫的資料區域太小。 (例外來自 HRESULT:0x8007007A)
如果宣告結構前有 [StructLayout(LayoutKind.Explicit, CharSet = CharSet.Unicode)]
那么給成員賦的值會亂,您知道這個怎么解決嗎?

uj5u.com熱心網友回復:
.Explicit 是精確布局,需要你手動控制offsetSequential是宣告順序布局,優先使用Sequential
這個請自己百度
我先拋個磚
https://blog.csdn.net/aoshilang2249/article/details/39429731
ps:這塊東西你需要知道,“pinvoke 記憶體對齊方式”,同時需要自己測驗。因為我們沒辦法知道對方到呼叫什么,所以只能先按常規默認的測驗,如果不行在換特殊的試驗。如果你有C++的h頭的話,翻譯會容易點
uj5u.com熱心網友回復:
哦,看了一下宣告,你用的是MSI,這個是個常用基礎庫,理論上應該很容易找到h頭定義不過,去msdn上瞄了一眼
msi.h頭居然沒有定義
https://docs.microsoft.com/zh-cn/windows/win32/api/msi/
另外http://www.pinvoke.net也無法搜索的資訊
你這用的就很難說是啥了
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/205207.html
標籤:C#
上一篇:在js里給asp控制元件Image控制元件顯示圖片,在線等 !
下一篇:C# List.Sort() 出現無法排序,原因是 IComparer.Compare() 方法回傳不一致的結果。一個值與本身比較不相等,或者一個值與另外一個值
