Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > (Borland c++) Проблема с EnumWindows


Автор: Welemir 5.9.2011, 20:03
Код


#include <windows.h>
#include <conio.h>
#include <stdio.h>
#pragma hdrstop
#pragma argsused

LRESULT CALLBACK WndProc(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam);
typedef bool (WINAPI *MYPROC)(HWND hWnd, LPCTSTR lpString,int nMaxCount);
LPARAM lParam;

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {

HMODULE hm = GetModuleHandle("user32");
MYPROC mp = NULL;
mp = (MYPROC) GetProcAddress(hm,"GetWindowTextA");

   char buf[100];
   mp(hWnd,buf,100);
   printf("%s",buf);
   return true;

  }

int main(int argc, char* argv[])

{

   EnumWindows((WNDENUMPROC) WndProc,lParam);
   getch();
   return 0;

}
//---------------------------------------------------------------------------



Не работает данный код.Где ошибка ? Мб в указателях этих ?
Всплыло также несколько вопросов:

1) Почему в борланде 6 нету либ библиотек ? Каждый раз обращаться к либе уже надоело...В вижуал студио такого нет.Где взять либы ?) 
2) Каков точный синтаксис использования тайпдефа для функций ? Нигде не смог найти,только из примеров =\

Автор: boostcoder 5.9.2011, 20:07
может все же использовать какой-то адекватный компилятор? smile 

Автор: Welemir 5.9.2011, 20:42
А что,в борланде лажа ?)) Мне борланд сам нравится - он и грузится быстрее,и интерфейс,мм,адекватнее - попроще чем вижуалстудиоский))вообще ненавижу эту среду(вижуал студио) уже долгое время,поэтому и перешёл на борланд...Да и не переустанавливается он сейчас,зараза.После перезагрузки додохдит до 30-40% и пишет про кучу неустановленных компонентов,хотя я все папки поудалял с компа...(переустанавливал с образа) в общем геморрой ещё тот

Автор: boostcoder 5.9.2011, 20:59
Цитата(Welemir @  5.9.2011,  20:42 Найти цитируемый пост)
А что,в борланде лажа ?

полная. это самый убогий компилятор+IDE для вендуз.

Добавлено через 39 секунд
и тот факт что он вам нравится из-за беленьких рюшек - этого не изменит.

Автор: Welemir 5.9.2011, 21:20
В рот мне ноги! Вот как должно было быть:

EnumWindows((int (__stdcall *)())EnumWindowsProc,0);

А компилятор писал....думал прикол такой....Мсдн такого вообще не выдал ))А с WNDENUMPROC что случилось? ))

Всё-таки придется с вижуал студио чет делать =_=

Автор: volatile 5.9.2011, 23:49
Цитата(Welemir @  5.9.2011,  21:20 Найти цитируемый пост)
EnumWindows((int (__stdcall *)())EnumWindowsProc,0);

я бы сказал что это "ацкий кот", но это слишком мягко бы было сказано.
честно говоря, слов  нет...

Вот как должна выглядеть функция для EnumWindows.
Код

BOOL CALLBACK EnumWindowsProc ( HWND hwnd,  LPARAM lParam );
именно так и напишите её. И никаких приведений типов функций!

Добавлено через 3 минуты и 7 секунд
После того как вы напишите правильную функцию, вызывать надо так:
EnumWindows (EnumWindowsProc, lParam );


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)