-2
我想嘗試使用Pinvoke從WindowsFomrs.Message獲取字符串。如何在Pinvoke中使用LParam GlobalGetAtomName
但GlobalGetAtomName需要ushort,我有LParam這是一個IntPtr。
我該如何轉換它?
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern uint GlobalGetAtomName(ushort nAtom, StringBuilder lpBuffer, int nSize);
protected override void WndProc(ref Message m)
{
Console.WriteLine("HWnd: " + m.HWnd.ToString());
Console.WriteLine("LParam: " + m.LParam.ToString());
Console.WriteLine("WParam: " + m.WParam.ToString());
Console.WriteLine("Msg: " + m.Msg.ToString());
int nSize = 514;
StringBuilder AtomName = new StringBuilder(nSize);
nSize = GlobalGetAtomName(m.LParam, AtomName, nSize);
Console.WriteLine("String: " + AtomName);
base.WndProc(ref m);
}
對不起,是你的問題實在沒有什麼比我怎麼投的IntPtr到USHORT更多?如果是這樣,爲什麼不問這個?當然,這也是重複的。 –
@DavidHeffernan我以爲我給了最小的背景。對不起,如果這是令人困惑。你有答案嗎? – ManInMoon
恩,呃,施放它:'(ushort)m.LParam' –