Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
maxgold
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 14
#1

Внедрил dll. Не могу получить инфу из listview через SendMessage() - C++

12.02.2012, 11:20. Просмотров 419. Ответов 0
Метки нет (Все метки)

День добрый, уважаемые программисты!
Внедрил dll в стороннее приложение через CreateRemoteThread. В DLL_PROCESS_ATTACH обработчике создаю поток. А в самом потоке пытаюсь получить содержимое listview в адресном пространстве этого приложения. SendMessage 0 возвращает. Вот сам код потока:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
    HWND wndHandle = FindWindow(NULL, TEXT("Window name"));
    HWND listviewHandle;
    RECT rcClient;
    if(GetClientRect(wndHandle, &rcClient) != NULL)
    {
        _itoa(rcClient.bottom, buf, 10);
        MessageBox(NULL, "OK",buf, MB_OK);
        _itoa(rcClient.left, buf, 10);
        MessageBox(NULL, "OK",buf, MB_OK);
        _itoa(rcClient.right, buf, 10);
        MessageBox(NULL, "OK",buf, MB_OK);
        _itoa(rcClient.top, buf, 10);
        MessageBox(NULL, "OK",buf, MB_OK);
    }
    else
    {
        LPVOID lpMsgBuf;
        FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL);
        MessageBox( NULL, (LPCSTR)lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION );
    }
    POINT lvPoint;
    lvPoint.x=rcClient.left+100;
    lvPoint.y=rcClient.bottom-200;
    listviewHandle = ChildWindowFromPoint(wndHandle, lvPoint);
    if(GetClassName(listviewHandle, buf, 32) != NULL)
    {
        MessageBox(NULL, "OK", buf, MB_OK);
    }
    else
    {
        LPVOID lpMsgBuf;
        FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL);
        MessageBox( NULL, (LPCSTR)lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION );
    }
    
    if(GetClientRect(listviewHandle, &rcClient) != NULL)
    {
        /*
        _itoa(rcClient.bottom, buf, 10);
        MessageBox(NULL, "OK",buf, MB_OK);
        _itoa(rcClient.left, buf, 10);
        MessageBox(NULL, "OK",buf, MB_OK);
        _itoa(rcClient.right, buf, 10);
        MessageBox(NULL, "OK",buf, MB_OK);
        _itoa(rcClient.top, buf, 10);
        MessageBox(NULL, "OK",buf, MB_OK);
        */
    }
    else
    {
        LPVOID lpMsgBuf;
        FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL);
        MessageBox( NULL, (LPCSTR)lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION );
    }
 
    _itoa((int)listviewHandle, buf, 10);
    MessageBox(NULL, buf, TEXT("listviewHandle:"), MB_OK);
    int i = (int) SendMessage(listviewHandle, LVM_GETITEMCOUNT, 0, 0);
    _itoa(i, buf, 10);
    MessageBox(NULL, buf, TEXT("listviewHeader:"), MB_OK);
    HWND listviewHeader = (HWND) SendMessage(listviewHandle, LVM_GETHEADER, 0, 0);
    int j = (int) SendMessage(listviewHeader, HDM_GETITEMCOUNT, 0, 0);
    _itoa(j, buf, 10);
    MessageBox(NULL, buf, TEXT("listviewHeader:"), MB_OK);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2012, 11:20     Внедрил dll. Не могу получить инфу из listview через SendMessage()
Посмотрите здесь:

Не могу получить строку через getline - C++
Есть класс class door { public: float squaredoor (); //функция расчета площади двери void printdoor ();...

програмно нажать TAB через SendMessage - C++
Как правильно передать нажатие? SendMessage(hwnd,WM_CLOSE,0,0); окно закрывает. SendMessage (hwnd, WM_KEYDOWN, VK_TAB, 0); А...

Не могу получить доступ к private данным через дружественную функцию - C++
Заголовочный файл: class Vector { private: int * vect; int size; public: Vector(); explicit Vector(int size1); ...

Как получить инфу из (sockaddr *)->sa_data из функции recvfrom? - C++
помогите плз... тут один урод вздумал чат каждые 10мин ронять... я перехватил API функцию чата recvfrom содержимое пакета читается...

Внедрение DLL: Не получается вытащить данные из listview чужой программы. - C++
В общем ситуация такая. Есть чужая программа, в ней элемент управления(ЭУ) похож на listview, но его класс отличается от стандартного. В...

Подгрузка dll через dll - C++
Доброго времени суток! Около двух часов потратил на поиски нужной информации, но так ничего и не нашёл. Возможно, плохо искал. Вообщем...

Не могу подгрузить DLL - C++
Всем привет, Столкнулся с такой проблемой: не могу подгрузить dll. Выдает ошибку 998. Функцию в dll уже упростил до простого return...

Не могу вызвать функцию из .dll - C++
Добрый день ... Полазил по форумам и гайдам .... Пишу такой вот header: extern "C++" __declspec(dllexport) int function (int,int); ...

Получить версию файла *.dll - C++
в файле ресурсов скомпилировал dll и указал ей версию типа 1.0 как в коде c++ определить что мы используем нужную версию библиотеки, а в...

Как можно получить LIB, имея DLL? - C++
Подскажите, пожалуйста, как можно получить LIB, имея DLL? Есть ли такие утилиты, если да, то где их можно найти? Спасибо!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru