簡體   English   中英

將類類型對象轉換為Intptr

[英]convert a class type object to Intptr

嘿,我知道這可能很容易,但是相信我,我並沒有從google上發現它。 我試圖做以下事情:

unsafe static IntPtr __convertSearcherCallbackParameterToIntPtr (SearcherCallbackParameter searcherCallbackParameter ) { return (*(IntPtr*)&searcherCallbackParameter); }

其中SearcherCallbackParameter是一個類,我需要將其轉換為IntPtr,以便將其作為參數傳遞給Windows api。

我收到以下錯誤:無法獲取地址,獲取大小或聲明指向托管類型的指針

您可以只使用一個簡單的.NET委托,互操作層將負責編組。 以下代碼采用http://pinvoke.net/default.aspx/user32/EnumWindows.html中的本機函數聲明

盡管回調函數參數只是一個整數,所以實際上不必是IntPtr。

public delegate bool CallBackPtr(int hwnd, int lParam);


[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnumWindows(CallBackPtr lpEnumFunc, UInt32 lParam);


static bool callbackreport(int hwnd, int lparam)
{
    Console.WriteLine("{0} {1}", hwnd, lparam);
    return true;
}

static void Main(string[] args)
{
    EnumWindows(Program.callbackreport,0);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM