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

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

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

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

12.02.2012, 11:20. Просмотров 423. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2012, 11:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Внедрил dll. Не могу получить инфу из listview через SendMessage() (C++):

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

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

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

Получить данные через указатель из dll на delphi - C#
Здравствуйте, помогите пожалуйста! имеется dll, написанная на delphi, где есть процедура: procedure GGetCell(Col : integer; Row :...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2012, 11:20
Привет! Вот еще темы с ответами:

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

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

Как получить данные? Функция SendMessage() - C++ WinAPI
#define ID_EDIT1 1003 TCHAR chint; TCHAR *chBuff; int n; static HWND hEdit1; ... hEdit1 = CreateWindow("edit", NULL, WS_CHILD |...

Отправка сообщения через SendMessage - C#
Здравствуйте,помогите пожалуйста с SendMessage,мне нужно отправить сообщение из моего textbox в textbox другого приложения,подскажите как...


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

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

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