Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Маленькая программа for fun назначения, но можно найти что-нибудь новое.


program WorkTable;

uses
  Windows;

const
  LVM_GETITEMCOUNT=$1000+4;     // ряд сообщений, которые я не нашел, что бы они
  LVM_SETITEMPOSITION=$1000+15; // были гдето описаны в Delphi(по-крайней мере у меня)

var
  i, n          : integer;
  SX,SY         : integer;
  x,y           : integer;
  IconCount     : integer;
  hwndLV        : HWND;

begin
  // получаем HWND рабочего стола, т.к. desktop является "внуком" окна ProgMan
  hwndLV := GetTopWindow(GetTopWindow(FindWindow(PChar('ProgMan'),nil)));

  // получаем размер экрана и количество иконок на нашем рабочем столе
  SX := GetSystemMetrics(SM_CXSCREEN);
  SY := GetSystemMetrics(SM_CYSCREEN);
  IconCount := SendMessage(hwndLV,LVM_GETITEMCOUNT,0,0);

  // а теперь большой цикл, где вложенный цикл изменяет положение отдельной иконки
  for n:=30000 downto 0 do
    for i:=IconCount downto 0 do
    begin
      x := random(SX);
      y := random(SY);
      SendMessage(hwndLV, LVM_SETITEMPOSITION, i,MAKELPARAM( x,y));
      sleep(100); // перенеся данный вызов в основной цикл можем добиться
                  //изменения положениЯ всех иконок на рабочем столе
    end;
  // кстати ве это чудо длиться (30 000*100)/1000=3000 секунд=50 минут
end.


Хотите поделиться своими творениями? Размещу с удовольствием, мыльте!

К списку статей


Есть комментарии, вопросы, ссылки на полезные ресурсы? Все это можно указать здесь:

E-mail для ответа:

Сообщение:



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS