информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] А может вместо процедур функции попробовать, иначе как ты результаты возвращаешь 03.07.03 17:09  Число просмотров: 1173
Автор: Cyril <sc> Статус: Member
<"чистая" ссылка>
<programming>
[Win32] Проблемы с окнами.... 03.07.03 15:40  
Автор: Darkhelmet Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Господа программеры, не могу понять в чем у меня баг подсобите....

вот код:
procedure get_child(h:wnd);stdcall;
begin
getwindowtext(h,тут буфер, тут размер);
listbox1.items.add(' This Child -> '+буфер);
result:=true;
end;

procedure get_w(h:wnd);stdcall;
begin
getwindowtext(h,тут буфер, тут размер);
enumchildwindow(h,@get_child,0);
listbox1.items.add(буфер);
result:=true;
end;

procedure get_all_window;
begin
enumwindows(@get_w,0);
end;


Короче вроде работает но, после первого перечисления дочерних окон вываливает (без ошибка), просто завершает перебор окон...

Вопрос может баг в исходнике, или кто знает как все окна перечислить, и родительские и дочернии...
[Win32] А может вместо процедур функции попробовать, иначе как ты результаты возвращаешь 03.07.03 17:09  
Автор: Cyril <sc> Статус: Member
<"чистая" ссылка>
Да ладно тебе Кирилл из Леспроекта прикалываться... У меня функции... 04.07.03 08:57  
Автор: Darkhelmet Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Скажи лучше почему при перечислении дочерних окон после первого перебора, больше не заходит в эту функцию...
Да ладно тебе, Тёмный Шлем из хрен знает откуда, никто над тобой не прикалывается ;-) 04.07.03 10:30  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 04.07.03 10:36  Количество правок: 1
<"чистая" ссылка>
В MSDN смотрим:

BOOL EnumWindows(
WNDENUMPROC lpEnumFunc, // pointer to callback function
LPARAM lParam // application-defined value
);

BOOL CALLBACK EnumWindowsProc(
HWND hwnd, // handle to parent window
LPARAM lParam // application-defined value
);

Тут же явно видно, что колбяка суть функция, которая возвращает булевое выражение... А ежели у тебя колбяка Procedure, то сорвёшь себе стек.
Вот правильная декларация колбяки на Delphi:
Function EnumWindowsProc(aWnd: HWND; aLParam: LPARAM): BOOL; StdCall;
Begin
//Не забудь вернуть TRUE, если хочецца продолжать перебор ;-)
Result := True;
End;

А у тебя — что это за процедура с одним параметром?
procedure get_w(h:wnd);stdcall;
begin
getwindowtext(h,тут буфер, тут размер);
enumchildwindow(h,@get_child,0);
listbox1.items.add(буфер);
result:=true;
end;

procedure get_all_window;
begin
enumwindows(@get_w,0); //Вот тут у тебя косяк — толкаешь адрес неправильной колбяки!
end;
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach