Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2011, 01:42   #1
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию неполадки при исп. EnumWindows

Обнаружил некоторые неполадки при использовании EnumWindows.
Вот код:
Код:
var
  Form1: TForm1;

function EnumWindowsWnd(H: HWND): BOOL; stdcall;

implementation

{$R *.dfm}

function EnumWindowsWnd(H: HWND): BOOL; stdcall;
begin
  Result := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  for I := 1 to 10 do
  begin
    EnumWindows(@EnumWindowsWnd, 0);
    ShowMessage(IntToStr(I));  // Здесь всегда 0
  end;
end;
Когда добавляю в цикл EnumWindows, то в результате значение счетчика I всегда 0.
В чем может быть дело?
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 24.12.2011, 01:47   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а потом еще ошибки должны быть, ибо вы портите стек.

прототип функции таков:
Код:
EnumWindowsProc(hwnd:THandle;lparam:LPARAM):booleam;stdcall;
а не то что у вас.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.12.2011, 01:47   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> В чем может быть дело?

lParam потерялся

Код:
BOOL CALLBACK EnumWindowsProc(
  __in  HWND hwnd,
  __in  LPARAM lParam
);
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 24.12.2011, 05:53   #4
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Спасибо. Просто встретил неправильный пример в книге.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при присвоении объекту производного класса объекта базового класса с исп. явного приведения типов Lanx Помощь студентам 0 06.04.2011 20:24
[Проблема] Программное изменение заголовка чужого окна по хендлу процесс(EnumWindows) Человек_Борща Общие вопросы Delphi 8 08.01.2011 22:40
samsung ml-1641 как устранить неполадки при печати? alex(21) Компьютерное железо 1 28.11.2010 19:53
при исп. combobox отображ в listbox вносить в stringgrid. twister_answer Помощь студентам 0 26.05.2010 15:16
EnumWindows внури объекта King Nothing Win Api 10 24.06.2008 07:43