- 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.
Dr_Stertor 08.12.2016 23:44 # +2
Даже хэндл не забывает закрыть - явно знает, что делает. Профи.
bayan 08.12.2016 23:58 # +1
Steve_Brown 09.12.2016 10:34 # −1
>1000
А вы предлагаете Sleep? Согласно документации, она не обязана выжидать указанное время.
If there are no other threads ready to run, the function returns immediately, and the thread continues execution.
Не знаю, правда, возможно ли такое на практике...
guest 09.12.2016 15:06 # +2
Steve_Brown 09.12.2016 16:41 # 0
Сколько лет я так заблуждался.
guest 09.12.2016 16:56 # 0
bayan 09.12.2016 17:04 # 0
а я думал только кокосы колоть.! (С)
CHayT 09.12.2016 17:00 # −1