Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
1

EnumWindows - ошибка в коде

18.03.2015, 08:44. Показов 1086. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нашел вот интернете такой код, немного подправил его, а то куча ошибок сыпалось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int iCmdShow)
    {
        EnumWindows(&notepad::Form1::EnumWindowsProc, NULL);
 
        return 0;
    }
 
    BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
    {
 
        char class_name[80];
        char title[80];
        GetClassName(hwnd,class_name, sizeof(class_name));
        GetWindowText(hwnd,title,sizeof(title));
        cout <<"Window title: "<<title<<endl;
        cout <<"Class name: "<<class_name<<endl<<endl;
 
 
        return TRUE;
    }
Теперь компилятор выдает только одну ошибку:
error C3374: невозможно получить адрес "notepad::Form1::EnumWindowsProc", пока не будет создан экземпляр делегата

Как исправить?)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2015, 08:44
Ответы с готовыми решениями:

EnumWindows
Мне нужно получить дескриптор окна в dll. я использую функцию EnumWindows, в которой меняю...

Функция EnumWindows()
Добрый день. У меня возникла такая проблема: нужна разработать две программы , одна с которых...

EnumWindows перебор HWND до выполнения условий
Рассмотрим ситуацию на примере блокнота. Как оно должно быть. Запускаем программу. Программа...

Как корректно вызвать EnumWindows в классе?
собственно, сам вопрос уже описан в теме, но вот к примеру, есть у меня заголовочный файл в котором...

4
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
18.03.2015, 09:02 2
может просто
C
1
EnumWindows(EnumWindowsProc, NULL);
?
1
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
18.03.2015, 12:26  [ТС] 3
так и было изначально, но выдавало ошибку:
error C3867: notepad::Form1::EnumWindowsProc: в вызове функции отсутствует список аргументов; используйте "&notepad::Form1::EnumWindowsProc" для создания указателя на член

Вообще вот код в изначальном виде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
 
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int iCmdShow)
    {
        EnumWindows(EnumWindowsProc, NULL);
 
        return 0;
    }
 
    BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
    {
 
        char class_name[80];
        char title[80];
        GetClassName(hwnd,class_name, sizeof(class_name));
        GetWindowText(hwnd,title,sizeof(title));
        cout <<"Window title: "<<title<<endl;
        cout <<"Class name: "<<class_name<<endl<<endl;
 
 
        return TRUE;
    }
Эту //BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
Строку закоментил, потому что выдавало ошибку:
error C2535: BOOL notepad::Form1::EnumWindowsProc(HWND,LPARAM): функция-член уже определена или объявлена

Добавлено через 1 час 58 минут
Не знаю есть ли разница, но я пишу в Visual Studio 2010 Express, WinForm, используя многобайтовую кодировку.

Добавлено через 1 час 12 минут
Вот такой вариант работает в консоли:
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
// ConsoleApplication1.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <Windows.h> //для определения окна
#include <WinUser.h> //для определения окна
#include <stdio.h>
#include "psapi.h"
#include <iostream>
#include <ostream>
#include <clocale>
#include <conio.h>
#include <ShellAPI.h> //для запуска процессов
#include <time.h>
#include <fstream>
#include <string> 
#pragma comment(lib, "user32.lib")
 
using namespace System;
using namespace std;
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
 
int main(array<System::String ^> ^args)
{
 
    setlocale(LC_CTYPE, "Russian"); //Руссифицирую текст в консоли
    EnumWindows(&EnumWindowsProc, 0);
    getchar();
    return 0;
}
 
 
 
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
 
    
    char class_name[80];
    char title[80];
 
    GetClassName(hwnd, class_name, sizeof(class_name)); //получаем класс окна
    GetWindowText(hwnd, title, sizeof(title)); //получаем заголовок окна
    cout << "Window title: " << title << endl;
    cout << "Class name: " << title << endl;
 
    return 1;
}
Но в WinForm не хочет, выдает всё ту же ошибку:
error C3374: невозможно получить адрес "notepad::Form1::EnumWindowsProc", пока не будет создан экземпляр делегата
0
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
18.03.2015, 17:49 4
т.е. ты взял кусок WinAPI'шного кода и запихнул в класс формы проекта Windows Forms? Конечно так работать не будет. По .NET'у вообще то другая ветка форума
0
175 / 123 / 48
Регистрация: 30.11.2012
Сообщений: 1,324
18.03.2015, 21:33  [ТС] 5
Цитата Сообщение от rao Посмотреть сообщение
т.е. ты взял кусок WinAPI'шного кода и запихнул в класс формы проекта Windows Forms? Конечно так работать не будет. По .NET'у вообще то другая ветка форума
Спасибо, я уже разобрался)
Могут возникнуть еще проблемы в ходе реализации моей задачи, в случае возникновения таких задам вопрос в соответствующей ветке форума, спасибо за подсказку) когда никогда не сталкивался с какой либо функцией, трудно разобраться к какой теме она принадлежит)
0
18.03.2015, 21:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2015, 21:33
Помогаю со студенческими работами здесь

Ошибка в коде
Доброго времени суток. Прошу пожалуйста помочь найти ошибку в коде, не буду ничего объяснять,...

Ошибка в коде
Не появляется текст при нажатии на кнопку. При нажатии на кнопку я запускаю цикл и высчитываю...

Ошибка в коде
Добрый день, подскажите в чем тут дело? При компиляции выдает такую ошибку, я так понял, что выход...

В коде WinAPI ошибка
помогите пожалуйста найти ошибку в коде программы, строил на C++ в Microsoft Visual C++ 2010...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru