从第三方应用程序获取列表视图
本文关键字:列表 视图 获取 应用程序 第三方 | 更新日期: 2023-09-27 18:28:00
我正试图从第三方应用程序获取列表视图,下面是我如何实现这个
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, StringBuilder lParam);
const int LVM_GETITEMCOUNT = 0x018B;
const int LVM_GETITEMTEXT = 0x0189;
// Get ListBox contents hwnd
private List<string> GetListViewContents(IntPtr listviewHwnd)
{
int cnt = (int)SendMessage(listviewHwnd, LVM_GETITEMCOUNT, IntPtr.Zero, null);
List<string> listViewContents = new List<string>();
for (int i = 0; i < cnt; i++)
{
StringBuilder sb = new StringBuilder(256);
IntPtr getText = SendMessage(listviewHwnd, LVM_GETITEMTEXT, (IntPtr)i, sb);
listViewContents.Add(sb.ToString());
}
return listViewContents;
}
然后,我使用UISpy获取应用程序上listview属性的句柄,并使用以下代码填充我的应用程序列表框:
IntPtr ks = new IntPtr(0x00040FA8); // temp handle for the 3rd party listview
listBox1.DataSource = GetListViewContents(ks);
没有返回任何数据,问题出在哪里?
您正在将StringBuffer传递给需要特定结构的对象,根据http://msdn.microsoft.com/en-us/library/windows/desktop/bb761055(v=vs.85).aspx
您应该看看64位中的Getting Text from SysListView32