#c# #winapi #listview #sendmessage
#c# #winapi #просмотр списка #отправить сообщение
Вопрос:
я пытаюсь получить текст в SysListView32 из другого приложения с помощью C #. я могу получить LVM_GETITEMCOUNT
хорошо, но LVM_GETITEMW = 0x1000 13
всегда возвращает -1
. как я могу получить текст с помощью C #? я новичок. большое спасибо!
ParenthWnd = FindWindow(ParentClass, ParentWindow);
if (!ParenthWnd.Equals(IntPtr.Zero))
{
zWnd = FindWindowEx(ParenthWnd, zWnd, zClass, zWindow);
if (!zWnd.Equals(IntPtr.Zero))
{
int user = SendMessage(zWnd, LVM_GETITEMCOUNT, 0, 0);
}
Ответ №1:
Вам нужно больше работать над чтением и записью LVITEM
памяти, поскольку вы работаете с элементом управления, принадлежащим другому процессу. Поэтому вам необходимо прочитать и записать память в этом процессе. Вы не можете сделать это без вызова ReadProcessMemory
, WriteProcessMemory
и т.д.
Наиболее часто цитируемым примером используемых методов является эта статья Code Project: Кража памяти программы. Следите за 32/64-разрядными ошибками.
Комментарии:
1. я понял! большое вам спасибо. social.msdn.microsoft.com/Forums/zh-CN/2212/thread /…