IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> перебор окон, открытых
Client
сообщение 1.07.2010 21:16
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


погуглив, получил такой код
function enumproc(wnd:hwnd; lparam:lparam):BOOL; stdcall;
var
s,ss:array [1..30] of char;
s1:string [30];
begin
GetClassName(wnd,@s,20);
GetWindowText(wnd,@ss,20);
form3.Memo1.Lines.Add(ss);
Result:=true;
end;


procedure TForm3.Button1Click(Sender: TObject);
var
wnd,wnd1,wnd2:hwnd;
s: array [1..30] of char;
begin
Memo1.Clear;
EnumWindows(@enumproc,0)
end;
Выводит очень большой список, а мне нужно только список тех окон, которые открыты. Мне надо найти окно по части имени, вот и решил перебрать все окна smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 2.07.2010 20:27
Сообщение #2


Гость






Мне, кстати, проще. Меня Ада приучила к точному описанию типов - никаких отступлений, никаких авто-преобразований. Вот, смотри:
1) попробуем написать CallBack-функцию, используя не нужные типы, а замену:
Прикрепленное изображение
Что видим? Не получилось обмануть компилятор, это не тот прототип, программа компилироваться отказалась.

2) Чуть-чуть поправим программу, сделаем правильный прототип, но вызовем EnumWindows как процедуру, без обработки возвращаемого значения:
Прикрепленное изображение
Что? Опять не то, "Нельзя использовать функцию EnumWindows как процедуру"

3) Ну хорошо, уговорили, пускай она возвращает результат...
Прикрепленное изображение
Вот теперь все в порядке, откомпилировано...

Вот так и привыкаешь аккуратно использовать типы smile.gif
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 13.07.2025 17:51
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"