私は一晩中これと戦ってきました。何が悪いのかさっぱりわかりません。デスクトップ アイコン + キャプション サイズを取得しようとしています。デスクトップ ハンドルを見つけて SysListView32_hwnd という変数に入れる関数がいくつかあります。Windowsスパイプログラムで正しいことを確認しました。ここが私が悩んでいる部分です。
Rectangle rct = new Rectangle();
IntPtr pRct = Marshal.AllocHGlobal(Marshal.SizeOf(rct));
Marshal.StructureToPtr(rct, pRct, true);
SendMessage(SysListView32_hwnd, LVM_GETITEMRECT, (IntPtr)0, pRct);
Rectangle Rect = (Rectangle)Marshal.PtrToStructure(pRct, typeof(Rectangle));
Marshal.FreeHGlobal(pRct);
Debug.WriteLine(Rect.Height + " " + Rect.Width);
毎回エクスプローラーがクラッシュします。C# Visual Studio 2010 Windows 7 x64 で、64 ビット プログラムとしてコンパイルしています
必要に応じて、ここに私の完全なアプリがあります