私はこれを徹夜で戦ってきました。私は何が間違っているのではない。デスクトップアイコン+キャプションサイズを取得しようとしています。デスクトップのハンドルを見つけてSysListView32_hwndという変数に入れておく関数があります。私はWindowsスパイプログラムで正しいことを確認しました。ここで私は問題を抱えている部分です。LVM_GETITEMRECTメッセージでデスクトップアイコンのサイズを取得する
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および私は
エクスプローラをクラッシュさせている/例外を引き起こしている行がわかりますか? – jadarnel27
@ jardarnel27それは簡単です、それはSendMessageです –
@Davidあなたのために、おそらく簡単です。プログラムのどこが爆発しているのかという疑問を言うのは良い習慣です。そうすれば、人々は推測/推測する必要はありません。 – jadarnel27