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

Не находин хендел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
zinador
2 / 2 / 0
Регистрация: 15.11.2009
Сообщений: 100
23.05.2011, 16:27     Не находин хендел #1
сдрасте есть код,который не работает.
также есть окно с титлом 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")
вазращает нуль
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2011, 16:27     Не находин хендел
Посмотрите здесь:

Хендел консоли C++
Передача сообщений через хендел C++ Builder
C# Хендел окна на котором установлен фокус

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4248 / 2780 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
24.05.2011, 09:34     Не находин хендел #2
А просто FindWindow() находит?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2011, 12:00     Не находин хендел #3
Я так понимаю, что дочерние ищутся в родительском окне. Родительским указан "Рабочий стол", поэтому ищется в нём.
Кроме того, у Garena класс CWnd(вероятно), а не РичЕдит. Т.е. ты ищешь не то и не в том.
Сперва найди Garena, а в нём уже ищи РичЭдит.
zinador
2 / 2 / 0
Регистрация: 15.11.2009
Сообщений: 100
24.05.2011, 12:03  [ТС]     Не находин хендел #4
Так гарена я нашел,все классы ищет,а именно RichEdit20W2 нет че за фигня такая
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2011, 12:19     Не находин хендел #5
Это FindWindowEx(NULL,NULL,L"RichEdit20W",L"Garena") и не должно находить.
Повторяю, класс и имя не соответствуют друг-другу.
zinador
2 / 2 / 0
Регистрация: 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")
мне сказали вот так вот надо,но я слишком криворукий еще что бы понять это
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2011, 12:54     Не находин хендел #7
Дескриптор родительского окна, в котором ищут. NULL - рабочий стол
Дескриптор дочернего окна, с которого начинать искать. NULL - с первого
Класс окна. Либо атомом, либо строкой. У тебя строкой.
Заголовок окна. У тебя "Гарена", а на самом деле заголовка у контрола вообще нет.
И чему ты удивляешься?
zinador
2 / 2 / 0
Регистрация: 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
что тогда?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2011, 13:18     Не находин хендел #9
hw=FindWindowExA(hw,NULL,"RichEdit20",NULL);
Почему не RichEdit20W ?
zinador
2 / 2 / 0
Регистрация: 15.11.2009
Сообщений: 100
24.05.2011, 13:28  [ТС]     Не находин хендел #10
Цитата Сообщение от Deviaphan Посмотреть сообщение
hw=FindWindowExA(hw,NULL,"RichEdit20",NULL);
Почему не RichEdit20W ?
слабо на кнопку нажал) не дописал W

Добавлено через 5 минут
Deviaphan, можешь аську дать ,я тебе всю суть обьсянсю ,а то на форуме как-то не могу,если ты не занят ну и хочешь помочь )
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.05.2011, 13:41     Не находин хендел #11
Да я уже всё что знал - сказал.)
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,221
Завершенные тесты: 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 рич едита
Manjak
 Аватар для Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
24.05.2011, 16:22     Не находин хендел #13
Spy++ вам в помощь. Для началанужно найти родительское окно, а потом уже искать дочернее.
zinador
2 / 2 / 0
Регистрация: 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? у меня ругается компилятор
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,221
Завершенные тесты: 2
24.05.2011, 19:00     Не находин хендел #15
zinador, покеж ошибки
в опциях проекта
выруби поддержку unicode
Character Set ->> Not Set
или сделай приведение типов
Цитата Сообщение от zinador Посмотреть сообщение
GetWindowText(hwnd,(LPWSTR)txt,255);
Yandex
Объявления
24.05.2011, 19:00     Не находин хендел
Ответ Создать тему
Опции темы

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