-2
Pinvokeを使用してWindowsFomrs.Messageから文字列を取得しようとします。Pinvoke GlobalGetAtomNameでLParamを使用するには
しかし、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' –