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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Micro
42 / 42 / 1
Регистрация: 12.11.2011
Сообщений: 429
#1

При попытке найти окно выдает 0 - C++

18.01.2012, 18:20. Просмотров 1427. Ответов 22
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
    HWND a = FindWindow((LPCWSTR) NULL, (LPCWSTR) "Безымянный — Блокнот");
    cout << (long) a <<endl;
    system("PAUSE");
}
в чем трабл?
Что не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2012, 18:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос При попытке найти окно выдает 0 (C++):

Компилятор выдает три ошибки, при попытке скомпилировать программу - C++
Добрый день. Мне по заданию нужно решить эту формулу: l=min(x+y,y-z)/max(x,y). Я написал код программы на C++, но компилятор выдает 3...

Ошибка при попытке удаления указателя - C++
Программа работает,но при попытке выйти из нее по условию,вылетает ошибка.Если закомментировать delete, то выходит без ошибок.Подскажите,...

Ошибка при попытке загрузки файла - C++
Задача состоит в том, чтобы по очереди загрузить файлы, введя их имена в консоль. #include &lt;fstream&gt; #include &lt;iostream&gt; using...

Ошибка при попытке создания шаблона - C++
В чём ошибка? Функции Map::isGardenWithoutWallFlag, Map::setNothing, Map::incrementRoad, Map::setFlagWall имеют действительно такие...

Вылет при попытке очистки консоли - C++
В программе много раз вызывается функция, которая очищает окно консоли с помощью команды system(&quot;cls&quot;); и перерисовывает консоль...

Ошибка при попытке открытия файла - C++
Добрый день. При выполнении функции открытия файла F.open(adr,ios::in) по несуществующему адресу программу выбивает при этом появляется...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.01.2012, 00:48 #16
ну е мае
Return value
Type: int
If the function succeeds, the return value is the length, in characters, of the copied string, not including the terminating null character. If the window has no title bar or text, if the title bar is empty, or if the window or control handle is invalid, the return value is zero. To get extended error information, call GetLastError.
Вольный перевод такой
Если функция завершается успешно, возвращаемое значение равно количеству символов,
скопированных в буфер не включая нуль символа в конце. Если окно не имеет тайтл
бара или текста, если заголовок тайтл бара пустой или если окно или контрол
невалидно, возвращается ноль. Для получения подробной информации вызовите
GetLastError

Так вот в третий раз попробую спросить. Что возвращает функция? Вы смотрели на эти возвращаемые значения. Вызывали ф-ию GetLastError?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
HWND test = FindWondow();
TCHAR a[500];
const int n = GetWindowText(test,a,500);
if (n == 0)
{
  const DWORD error = GetLastError();
  cout << "error code = " << error << endl;
}
else
{
  // в случаях, когда текст не получается, мы сюда заходим, или всетаки в ветку с ошибкой?
  cout << "Result:" << a << endl;
}
Micro
42 / 42 / 1
Регистрация: 12.11.2011
Сообщений: 429
21.01.2012, 01:49  [ТС] #17
C++
1
Error code = 1400
это выбило
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.01.2012, 01:54 #18
это значит Invalid window handle. Т.е. в функцию вы отдаете неправильный хендл окна.
Ваш файнд виндоу все таки хрень вернул, а не правильный хендл. У ф-ий поиска окон тоже есть коды возврата и всякие ошибки. Смотрите документацию, что там может произойти. Какие коды ошибок и т.п.
Micro
42 / 42 / 1
Регистрация: 12.11.2011
Сообщений: 429
21.01.2012, 02:06  [ТС] #19
http://ipic.su/img/img3/fs/kiss_3kb.1327097157.png
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.01.2012, 02:15 #20
Что это? Вы хотите из какого-то консольного окошка считать его содержимое чтоли. Так тут GetWindowText не подходит. Она только тайтлы возвращает. Универсального способа считывания текста из окон других приложений нет. Все зависит от того, что это за окна (точнее что это за контролы, в которых этот текст выводится). Ну разве что фоткать эти окна и распознавать на полученной картинке текст. Раз вы пытаетесь из стандартного виндового окна что-то считать, то может быть и есть какие-то API, которые позволят это сделать.
Вот тут пачка api функций, среди которых может быть и есть те, которые позволят вам сделать то, что вы хотите
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Короче это в раздел по WinAPI. Может там что-нибудь подскажут.
Micro
42 / 42 / 1
Регистрация: 12.11.2011
Сообщений: 429
21.01.2012, 02:25  [ТС] #21
Ну вот например как в VB.NET я получал текст
vb.net
1
2
3
4
5
6
 Private Sub READ_GLOBAL_CHAT(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MainTimer.Tick
        Dim TextLength = SendMessage(AllChat&, WM_GETTEXTLENGTH, 0, 0)
        GetTextAllChat = Space(TextLength) //GetTextAllChat - String
        SendMessage(AllChat&, WM_GETTEXT, TextLength + 1, GetTextAllChat)
        chat.Text = GetTextAllChat
    End Sub
Есть ли аналог Space() для с++?
-=ЮрА=-
Заблокирован
Автор FAQ
21.01.2012, 09:04 #22
Цитата Сообщение от Micro Посмотреть сообщение
Есть ли аналог Space() для с++?
,
Цитата Сообщение от Micro Посмотреть сообщение
WM_GETTEXT
- думаю речь идёт о банальном GetWindowTextA которая получает тайтл окна. См сюда http://vsokovikov.narod.ru/New_MSDN_...windowtext.htm
-=ЮрА=-
Заблокирован
Автор FAQ
21.01.2012, 09:20 #23
Вот код который ищет HWND консоли по её тайтлу
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
#include <windows.h>
#include <iostream>
using namespace std;
 
int main()
{
    HWND hWnd = NULL;
    char sWNDTEXT[MAX_PATH] = {0};
    cout<<"Enter new title of console : ";
    cin.getline(sWNDTEXT,MAX_PATH);
    if(!SetConsoleTitle(sWNDTEXT))
        cout<<"Error SetConsoleTitle\n";
    else
    if(!(hWnd = FindWindow(NULL,sWNDTEXT)))
        cout<<"Window with title ["<<sWNDTEXT<<"] not found\n";
    else
    if(!(GetWindowText(hWnd,sWNDTEXT,MAX_PATH)))
        cout<<"Error GetWindowText\n";
    else
    {
        cout<<"HWND of Console : 0x"<<oct<<hWnd<<endl;
        cout<<"GetWindowText : "<<sWNDTEXT<<endl;
    }
    system("pause");
    return 0;
}
Миниатюры
При попытке найти окно выдает 0   При попытке найти окно выдает 0  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2012, 09:20
Привет! Вот еще темы с ответами:

Программа вылетает при попытке открыть файл - C++
#include&lt;iostream.h&gt; #include&lt;windows.h&gt; #include&lt;conio.h&gt; #include&lt;fstream.h&gt; const int L=31; struct student{ char fam; char...

Ошибка при попытке подключить внешнюю библиотеку - C++
Делал всё по инструкции, только пути другие. Пишет: Гуглёж не помог. Когда-то вроде с glut вылезла такая же проблема, но я не...

Ошибки при попытке прочитать в указанном месте - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;locale&gt; using namespace std; struct stack { char c; struct stack...

Ошибка С2280 при попытке создания потока - C++
При попытке создания потока auto t = new thread(&amp;merge, fin, fout, maxmemory, p) вылезает error C2280: предпринята попытка ссылки на...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.01.2012, 09:20
Ответ Создать тему
Опции темы

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