次のコードはWindows XPで正常に動作し、Windows 7でも一度動作していましたが、動作しなくなりました。私は残念なことに理由を理解できないようです。他の誰かに問題があったのですか?ListView(LVM_GETITEM)でデスクトップアイコンを読む - Windows 7の問題
具体的には、問題のないすべてのアイコンとその場所を見つけます。/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0を返すアイコン名です....
WriteProcessMemory(vProcess, vPointer, Marshal.UnsafeAddrOfPinnedArrayElement(vItem, 0),Marshal.SizeOf(typeof(LVITEM)), ref vNumberOfBytesRead);
SendMessage(vHandle, LVM_GETITEMW, j, vPointer.ToInt32());
ReadProcessMemory(vProcess, (IntPtr)((int)vPointer + Marshal.SizeOf(typeof(LVITEM))), Marshal.UnsafeAddrOfPinnedArrayElement(vBuffer, 0), vBuffer.Length, ref vNumberOfBytesRead);
string vText = Encoding.Unicode.GetString(vBuffer, 0, (int)vNumberOfBytesRead);
string IconName = Marshal.PtrToStringAnsi(vItem[0].pszText);
VTEXTもIconNameどちらも何も表示さ:(
pszText用としてを、私はこれらの両方を試してみました:
vItem[0].pszText = (IntPtr)((int)vPointer + Marshal.SizeOf(typeof(LVITEM)));
vItem[0].pszText = Marshal.AllocHGlobal(512);
ただ、参考のために:
private const int LVM_FIRST = 0x1000;
private const uint LVM_GETITEMW = LVM_FIRST + 75;
フルコード:(すべての余分なC onsole.WriteLines、私はデバッグしていた) http://pastebin.com/RXd2uwx3
あなたが観察したように、ドキュメント化されていないメカニズムを使用するのではなく、さまざまなバージョンのWindowsで機能しない傾向があるので、[文書化されたテクニック](http://blogs.msdn.com/b/oldnewthing/archive /2004/07/20/188696.aspx)? –