我想通过 发送 ListView_FindItem 这个消息 查找 指定 桌面图标名字的 索引,
总是 返回的 -1, 那位 能解释下
// hprocess 桌面进程的句柄
// hWndListView 桌面 listview 的 句柄, 
void FindItemParam(IN HANDLE hProcess, IN HWND hWndListView, IN INT iItem)
{
DWORD dwDataLen = 0;
DWORD dwWritten = 0; LVFINDINFO* lpRemoteItemInfo = NULL;
// 
try
{
// 初始化
LVFINDINFO  lviData = {0};
dwDataLen = sizeof(LVFINDINFO); TCHAR sz[MAX_PATH] ={0};
strcpy(sz,"xxx");// 这个是 桌面图标的 名称
lviData.flags = LVFI_STRING;
lviData.psz = sz; // 远程分配内存
lpRemoteItemInfo = (LVFINDINFO*)VirtualAllocEx(hProcess, NULL, dwDataLen, MEM_COMMIT, PAGE_READWRITE);
DWORD dwWritten = 0;
if (!::WriteProcessMemory(hProcess, lpRemoteItemInfo, &lviData, dwDataLen, & dwWritten))
{
throw((LONG)__LINE__);
}
int iret =ListView_FindItem(hWndListView, -1, lpRemoteItemInfo);// 这里总是返回 -1
if (iret == -1)
{
throw((LONG)__LINE__);
}
// 获取
if (!::ReadProcessMemory(hProcess, lpRemoteItemInfo, &lviData, dwDataLen, &dwWritten))
{
throw((LONG)__LINE__);
}
}
catch (LONG& lLine)
{
}
catch(...)
{
}
// 
if (lpRemoteItemInfo != NULL)
{
int iRet = VirtualFreeEx(hProcess, lpRemoteItemInfo, 0, MEM_RELEASE);
lpRemoteItemInfo = NULL;
}
}