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

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

Восстановить пароль Регистрация
 
maxgold
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 14
12.02.2012, 11:20     Внедрил dll. Не могу получить инфу из listview через SendMessage() #1
День добрый, уважаемые программисты!
Внедрил 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()
Посмотрите здесь:

C++ програмно нажать TAB через SendMessage
как можно получить LIB, имея DLL? C++
как получить инфу из (sockaddr *)->sa_data из функции recvfrom? C++
Внедрение DLL: Не получается вытащить данные из listview чужой программы. C++
Подгрузка dll через dll C++
C++ Привязка dll\.exe (получить информацию о железе)
Не могу вызвать функцию из .dll C++
C++ Не могу подгрузить DLL

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

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

Текущее время: 22:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru