2017-02-23 2 views
-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); 
} 
+1

申し訳ありませんが、あなたの質問は本当に私がのIntPtrがUSHORTにキャストどうやっ以外の何ものでもありませんか?もしそうなら、それを聞かないでください。もちろん、それは重複もあります。 –

+0

@DavidHeffernan私は最小の背景を与えていると思った。それが混乱するなら、ごめんなさい。あなたは私の答えがありますか? – ManInMoon

+0

さて、それをキャスト: '(ushort)m.LParam' –

答えて

0

キャストを所望の型に値:

(ushort)m.LParam 
関連する問題