- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
program Project1;
uses
windows,
Messages;
function EnumWindowsWnd(h: hwnd): BOOL; stdcall;
var
rect:TRect;
index:Integer;
begin
if not IsWindowVisible(h) then
begin
Result:=true;
exit;
end;
//Получаю габариты найденного окна
GetWindowRect(h,rect);
//Генерирую случайное число
index:=random(2);
if index=0 then
begin
//Если оно 0, то увеличиваю...
rect.Top:=rect.Top+3;
rect.Left:=rect.Left+3;
end
else
begin
//Иначе уменьшаю...
rect.Top:=rect.Top-3;
rect.Left:=rect.Left-3;
end;
MoveWindow(h,rect.Left,rect.Top,rect.Right-rect.Left,rect.Bottom-rect.Top,true);
Result:=true;
end;
var
h:THandle;
begin
//Запускаю цикл
while true do
begin
//Запускаю перечисление всех окон
EnumWindows(@EnumWindowsWnd,0);
//Делаю задержку в 100 мс.
h:=CreateEvent(nil, true, false, '');
WaitForSingleObject(h, 1000);
CloseHandle(h);
end;
end.
Код не мой, скачано с фан-сайта борланд.
P.S.: капча сейчас - 5555.
Даже хэндл не забывает закрыть - явно знает, что делает. Профи.
>1000
А вы предлагаете Sleep? Согласно документации, она не обязана выжидать указанное время.
If there are no other threads ready to run, the function returns immediately, and the thread continues execution.
Не знаю, правда, возможно ли такое на практике...
Сколько лет я так заблуждался.
а я думал только кокосы колоть.! (С)