0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 14
1

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

12.02.2012, 11:20. Показов 548. Ответов 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);
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2012, 11:20
Ответы с готовыми решениями:

Получить доступ к Listview сторонней программы через SendMessage
Всем привет. Проблема заключается в следующем: в сеть включено МФУ, на котором нужно сканировать....

ак получить развернутую инфу если кликнуть по строчке ListView?
Как получить развернутую инфу если кликнуть по строчке ListView, пробовал, но получается только...

Как добавить инфу в Listview
Допустим я нажимаю кнопку "Старт", и при гуде как сделать чтобы инфа об акке вписывалась в...

Получить данные через указатель из dll на delphi
Здравствуйте, помогите пожалуйста! имеется dll, написанная на delphi, где есть процедура: ...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2012, 11:20

Как получить указатель на класс DLL через QLibrary ?
Чтоб можно было потом дёргать функции этого класса и юзать переменные, зная их имена...

SendKey,SendMessage не могу разобрать
Всем привет! Не получается с передачей команды другому окну. Пробовал через SendKey передать, но...

Как получить int64 из SendMessage
SendMesaage возращает только integer, а как сделать чтобы возращалось int64 ???

Получить сообщения на API отправленные SendMessage
Как вызвать процедуру при получении сообщения из другого приложение? Сообщение отправляется...

Как получить данные? Функция SendMessage()
#define ID_EDIT1 1003 TCHAR chint; TCHAR *chBuff; int n; static HWND hEdit1; ... hEdit1 =...

Как настроить отправку сообщений sendMessage(sendMessage)?
Доброго времени суток! Подскажите пожалуйста как решить проблему: хочу создать простого телеграм...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru