1. Pascal / Говнокод #21803

    −126

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 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 Декабря 2016

    Комментарии (8) RSS

    • Очень порадовало вот это место:
      h:=CreateEvent(nil, true, false, '');
      WaitForSingleObject(h, 1000);
      CloseHandle(h);

      Даже хэндл не забывает закрыть - явно знает, что делает. Профи.
      Ответить
      • Да, мощный способ сделать задержку. Лоу левел, я бы сказал, способ. Эевенты именно для того и придумали
        Ответить
        • >100 мс.
          >1000

          А вы предлагаете Sleep? Согласно документации, она не обязана выжидать указанное время.
          If there are no other threads ready to run, the function returns immediately, and the thread continues execution.
          Не знаю, правда, возможно ли такое на практике...
          Ответить
          • Ты процитировал кусок относящийся к "A value of zero", т.е. sleep(0)
            Ответить
            • Ох, спасибо, теперь понял.
              Сколько лет я так заблуждался.
              Ответить
              • ну ты лол
                Ответить
                • Так вот для чего ты нужен Кожаный Клык,
                  а я думал только кокосы колоть.! (С)
                  Ответить
          • Теперь ясно, что и у андроидов бывает бессоница.
            Ответить

    Добавить комментарий