Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
zinador
2 / 2 / 2
Регистрация: 15.11.2009
Сообщений: 100
#1

Не находин хендел

23.05.2011, 16:27. Просмотров 1109. Ответов 14
Метки нет (Все метки)

сдрасте есть код,который не работает.
также есть окно с титлом Garena там же есть класс RichEdit20W
по сути должно работать .
А неработает
C++
1
2
if(FindWindowEx(NULL,NULL,L"RichEdit20W",L"Garena")!=NULL)
    ui->label->setText("SS");
C++
1
FindWindowEx(NULL,NULL,L"RichEdit20W",L"Garena")
вазращает нуль
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2011, 16:27
Ответы с готовыми решениями:

Хендел консоли
Делаю вот такое: #include <iostream> #include <windows.h> using namespace std; void main()...

Передача сообщений через хендел
Здравствуйте. Как мне зная хендел окна передать сообщение Left, Top, Width, Height, WindowState?

Хендел окна на котором установлен фокус
Как узнать дескриптор окна на котором установлен фокус? И еще как обрабатывать нажатие кнопок если...


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

Или воспользуйтесь поиском по форуму:
14
Kastaneda
Jesus loves me
Эксперт С++
4824 / 2998 / 345
Регистрация: 12.12.2009
Сообщений: 7,563
Записей в блоге: 2
Завершенные тесты: 1
24.05.2011, 09:34 #2
А просто FindWindow() находит?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2011, 12:00 #3
Я так понимаю, что дочерние ищутся в родительском окне. Родительским указан "Рабочий стол", поэтому ищется в нём.
Кроме того, у Garena класс CWnd(вероятно), а не РичЕдит. Т.е. ты ищешь не то и не в том.
Сперва найди Garena, а в нём уже ищи РичЭдит.
0
zinador
2 / 2 / 2
Регистрация: 15.11.2009
Сообщений: 100
24.05.2011, 12:03  [ТС] #4
Так гарена я нашел,все классы ищет,а именно RichEdit20W2 нет че за фигня такая
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2011, 12:19 #5
Это FindWindowEx(NULL,NULL,L"RichEdit20W",L"Garena") и не должно находить.
Повторяю, класс и имя не соответствуют друг-другу.
0
zinador
2 / 2 / 2
Регистрация: 15.11.2009
Сообщений: 100
24.05.2011, 12:27  [ТС] #6
что-то я не понял.
вот иерархия классов SkinWindow(Garena)-CMainWindow() -#32770()-RichEdit20W()
в скобочках назание титлов.

короче подскажите как в другую программу в текстовое поле(class "RichEdit20W" name "RichEdit20W2) передать текст.
C++
1
FindWindowEx(NULL,NULL,L"RichEdit20W",L"Garena")
мне сказали вот так вот надо,но я слишком криворукий еще что бы понять это
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2011, 12:54 #7
Дескриптор родительского окна, в котором ищут. NULL - рабочий стол
Дескриптор дочернего окна, с которого начинать искать. NULL - с первого
Класс окна. Либо атомом, либо строкой. У тебя строкой.
Заголовок окна. У тебя "Гарена", а на самом деле заголовка у контрола вообще нет.
И чему ты удивляешься?
0
zinador
2 / 2 / 2
Регистрация: 15.11.2009
Сообщений: 100
24.05.2011, 12:59  [ТС] #8
Аа все понял. но опять же омг
C++
1
2
3
4
 HWND hw=FindWindowExA(NULL,NULL,"#32770",NULL);
    hw=FindWindowExA(hw,NULL,"RichEdit20",NULL);
    if(hw !=NULL)
        ui->label->setText("SSS");
первая строчка проходит,а вторая нет.
хотя класс RichEdit20 Находится в классе #32770
что тогда?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2011, 13:18 #9
hw=FindWindowExA(hw,NULL,"RichEdit20",NULL);
Почему не RichEdit20W ?
0
zinador
2 / 2 / 2
Регистрация: 15.11.2009
Сообщений: 100
24.05.2011, 13:28  [ТС] #10
Цитата Сообщение от Deviaphan Посмотреть сообщение
hw=FindWindowExA(hw,NULL,"RichEdit20",NULL);
Почему не RichEdit20W ?
слабо на кнопку нажал) не дописал W

Добавлено через 5 минут
Deviaphan, можешь аську дать ,я тебе всю суть обьсянсю ,а то на форуме как-то не могу,если ты не занят ну и хочешь помочь )
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2011, 13:41 #11
Да я уже всё что знал - сказал.)
0
m1Rr0r
247 / 230 / 45
Регистрация: 05.02.2010
Сообщений: 3,283
Завершенные тесты: 2
24.05.2011, 15:59 #12
копай в сторону EnumWindows и EnumChildWindows
перебирай все дочерние окна Garena и ищи имя своего рич едита , и если у дочернего будут тоже дочерние их тоже перебирай =) думаю идея понятна
так найдешь хендл

Добавлено через 46 минут
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
#include <windows.h>
#include <vector>
#include <iostream>
using namespace std;
 
char targetClass[]="RichEdit20W";
vector <HWND> target;
 
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{
    char txt[256]={0};
    char buff[256]={0};
    GetWindowText(hwnd,txt,255);
    GetClassName(hwnd,buff,255);
    CharToOem(txt,txt);
    cout<<hwnd<<" | "<<txt<<" | "<<buff<<endl;
    if(strstr(buff,targetClass)!=NULL)
    {
        target.push_back(hwnd);
 
    }
    return TRUE;
}
 
int main(int argc,char *argv[])
{
    HWND main = FindWindowW(NULL,L"Garena");
    EnumChildWindows(main,EnumChildProc,NULL);
    for(int i=0;i<target.size();i++)
        cout<<"\nTarget -> "<<target.at(i);
    return 0;
}
как то так....
кстати у меня нашло 2 рич едита
1
Manjak
269 / 175 / 46
Регистрация: 12.03.2010
Сообщений: 494
24.05.2011, 16:22 #13
Spy++ вам в помощь. Для началанужно найти родительское окно, а потом уже искать дочернее.
0
zinador
2 / 2 / 2
Регистрация: 15.11.2009
Сообщений: 100
24.05.2011, 18:20  [ТС] #14
я через Spy++ копал ,там как раз вся иерархия окон,классов .

Добавлено через 7 минут
Цитата Сообщение от m1Rr0r Посмотреть сообщение
кстати у меня нашло 2 рич едита
Да,да Да! там как раз 2 рич эдита,только я непойму
C++
1
2
3
GetWindowText(hwnd,txt,255);
        GetClassName(hwnd,buff,255);
        CharToOem(txt,txt);
разве txt и buff Не должны быть LPWSTR? у меня ругается компилятор
0
m1Rr0r
247 / 230 / 45
Регистрация: 05.02.2010
Сообщений: 3,283
Завершенные тесты: 2
24.05.2011, 19:00 #15
zinador, покеж ошибки
в опциях проекта
выруби поддержку unicode
Character Set ->> Not Set
или сделай приведение типов
Цитата Сообщение от zinador Посмотреть сообщение
GetWindowText(hwnd,(LPWSTR)txt,255);
0
24.05.2011, 19:00
Ответ Создать тему
Опции темы

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