Отправляет email-рассылки с помощью сервиса Sendsay

Web-Мастеринг - с нуля до профи

  Все выпуски  

нет.


Информационный Канал Subscribe.Ru

Познавательное программирование

(comp.soft.prog.urisprog)

Выпуск 28


Здравствуйте, Уважаемые подписчики!

Демоны запутанности особенно опасны в Си. Кажется, что этот язык сам собой поощряет выбор неестественно усложненных решений для простых задач.
- Ален И. Голуб.



::: ЗАКАЖИ ПРЯМО СЕЙЧАС :::
СИМПСОНЫ и ФУТУРАМА в MPEG4 на 7 DVD:
  • 13 сезонов(!) культового мультсериала THE SIMPSONS
  • + 40 серий убойного мультсериала FUTURAMA (от создателей Симпсонов)!

    Эти 7DVD всего за 1050р!

    Для заказа посетите http://cd.moyserver.com
    (Доставка наложенным платежом по РФ.)
     

  • Статья

    CompStarter

    Вот после долгого молчания, связанного с устройством на работу и спорт-клуб, я решил написать очередную статью. Эта статья, возможно, заинтересует людей, которые постоянно сталкиваются с такой же проблемой, как и я. Наверное, Вы, частенько включая свой компьютер, замечаете что-то неладное: иконки на Рабочем столе отсортированы не так как Вы привыкли, а может хуже того, находите некоторые файлы в корзине или вообще не находите. Значит можно сделать простой вывод, что на Вашем компьютере кто-то работал без соответствующего разрешения. Лично я с этим сталкиваюсь постоянно. И вот мне как-то в голову пришла мысль написать небольшую программку, которая бы регистрировала дату и время загрузки компьютера при старте Windows. Вот код самой программы с необходимым количеством комментариев.

    Uses ... Registry, IniFiles;
    
    procedure TForm1.FormCreate(Sender: TObject);
    Var F                       : System.Text;
        Reg                     : TRegistry;
        Ini                     : TIniFile;
        RegPath                 : String;
        StrDay, StrMonth        : String;
        StrHour, StrMin, StrSec : String;
        Hour, Min, Sec, MSec    : Word;
        Days, Months, Years     : Word;
    begin
     // Если программы нет в автозапуске, то добавляем ее в автозапуск
     Reg:=TRegistry.Create;
     Reg.RootKey:=HKEY_LOCAL_MACHINE;
     RegPath:='\Software\Microsoft\Windows\CurrentVersion\Run';
     If Reg.OpenKey(RegPath, False) Then
       If Reg.ReadString(RegPath) = ''
         Then Reg.WriteString('CompStarter', ExtractFilePath(Application.ExeName) + 'CompStarter');
     Reg.Free;
    
     Ini:=TIniFile.Create('CompStarter.ini');
     If Ini.ReadDate('LastDate', 'Date', Date) <> Date Then
       Begin
         Ini.WriteDate('LastDate', 'Date', Date);
        
         // Раскладываем дату и время
         DecodeDate(Date, Years, Months, Days);
         DecodeTime(Time, Hour, Min, Sec, MSec);
    
         Case Months Of
           1 : StrMonth:='   Января   ';
           2 : StrMonth:='   Февраля  ';
           3 : StrMonth:='    Марта   ';
           4 : StrMonth:='   Апреля   ';
           5 : StrMonth:='    Мая     ';
           6 : StrMonth:='    Июня    ';
           7 : StrMonth:='    Июля    ';
           8 : StrMonth:='   Августа  ';
           9 : StrMonth:='  Сентября  ';
           10: StrMonth:='   Октября  ';
           11: StrMonth:='   Ноября   ';
           12: StrMonth:='   Декабря  ';
         End;
    
         // Приводим цифры к единому виду
         If Length(IntToStr(Days)) = 1 Then StrDay:='0' + IntToStr(Days) Else StrDay:=IntToStr(Days);
         If Length(IntToStr(Hour)) = 1 Then StrHour:='0' + IntToStr(Hour) Else StrHour:=IntToStr(Hour);
         If Length(IntToStr(Min)) = 1 Then StrMin:='0' + IntToStr(Min) Else StrMin:=IntToStr(Min);
         If Length(IntToStr(Sec)) = 1 Then StrSec:='0' + IntToStr(Sec) Else StrSec:=IntToStr(Sec);
    
         // Если файла статистики не существует, то создаем его
         AssignFile(F, ExtractFilePath(Application.ExeName) + 'Statistics.txt');
         If NOT FileExists(ExtractFilePath(Application.ExeName) + 'Statistics.txt') Then
           Begin
             Rewrite(F);
             Writeln(F, 'Дата загрузки компьютера:      Время загрузки компьютера:');
             Writeln(F, '');
             Writeln(F, ' ' + StrDay + StrMonth + IntToStr(Years) + ' года' +
                        '    -    ' + StrHour + ' ч. ' +  StrMin + ' мин. ' +
                        StrSec + ' сек. ');
           End
         Else
           Begin
             // Если файл статистики существует, то просто добавляем его
             Append(F);
             Writeln(F, ' ' + StrDay + StrMonth + IntToStr(Years) + ' года' +
                        '    -    ' + StrHour + ' ч. ' +  StrMin + ' мин. ' +
                        StrSec + ' сек. ');
           End;
         CloseFile(F);
       End;
    
     // Чтобы программа была не заметна, можно сделать ее скрытой
     If GetFileAttributes(PChar(Application.ExeName)) <> FILE_ATTRIBUTE_HIDDEN
       Then SetFileAttributes(PChar(Application.ExeName), faHidden);
            
     Ini.Free;
     Application.Terminate; // И как можно быстрее закрываем программу
    end;
    

    То есть, при старте программы идет проверка в реестре, входит ли наша программа в список программ, которые будут запущены при загрузке Windows. Далее идет разложение даты на день/месяц/год и времени на час/минуты/секунды/миллисекунды. Полученные дату и время мы записываем в файл статистики, из которого и можем узнать, когда был загружен компьютер. А еще как дополнение к программе можно запрашивать пароль при старте, и если он не угадан, то просто-напросто вырубать компьютер.

    ...
    Var Password: String;
    ...
     InputBox('Пароль:', 'Ну чё, может пароль угадаешь ?', Password);
     If Password <> 'UserName' Then ExitWindowsEx(EWX_SHUTDOWN,1);
    

    Как Вы, наверное, могли уже догадаться, у программы есть два больших недостатка. Во-первых, если нашу программу запустить вручную, то текущая дата и время будут записаны в файл статистики, что противоречит идее программы. И во-вторых, если компьютер просто перезагрузить, то дата и время также будут записаны в файл статистики. Чтобы избежать такую ситуацию, нужно где-то хранить последнюю дату загрузки программы. И если эта дата совпадает с текущей датой, то можно предположить, что программа уже была сегодня загружена и дата уже сохранена в файле статистики. Для этого и идет проверка текущей даты с сохраненной ранее датой. Сам файл статистики будет выглядеть примерно так:

    Дата загрузки компьютера:      Время загрузки компьютера:
    
     01   Января   2004 года    -    18 ч. 10 мин. 41 сек.
     03  Февраля   2004 года    -    11 ч. 33 мин. 40 сек.
     03   Марта    2004 года    -    12 ч. 27 мин. 54 сек.
     04  Апреля    2004 года    -    23 ч. 56 мин. 12 сек.
     05    Мая     2004 года    -    04 ч. 31 мин. 29 сек.
     06   Июня     2004 года    -    15 ч. 47 мин. 39 сек.
     07   Июля     2004 года    -    12 ч. 24 мин. 41 сек.
     08  Августа   2004 года    -    19 ч. 02 мин. 23 сек.
     09  Сентября  2004 года    -    20 ч. 43 мин. 35 сек.
     10  Октября   2004 года    -    01 ч. 51 мин. 34 сек.
     11   Ноября   2004 года    -    03 ч. 23 мин. 30 сек.
     12  Декабря   2004 года    -    13 ч. 33 мин. 01 сек.
    


    Совсем недавно, блуждая по сети я нашел две интересные ссылочки, которыми хочу поделиться с Вами:

    http://www.kolasc.net.ru/cdo/metod/programmer'scourse/language/index.htm - Учебник.
    http://www.ishodniki.ru/top/?cat=delphi_books - Коллекция учебников и статей.
    

    Любые комментарии, критику, пожелания и сообщения об ошибках настоятельная просьба присылать на e-mail.

    Гусев Сергей.
    e-mail: satanzone@yandex.ru
    site: http://icops.narod.ru





    TIREAL WEBCAM GUARD

    Программа для Веб-камеры, для которой я ранее набирал здесь тестеров вышла.
    Применение программы:
  • Охрана частных домов, квартир и офисов без трат на дорогостоящее оборудование
  • Организация на Веб-сайте трансляции изображения с Веб-камеры
  • Повседневное комфортное использование Веб-камеры для сохранения снимков и записи видео
    Скачать можно на фирменном сайте: http://www.tireal.com/wcguard.php




  • Все вопросы, пожелания и предложения ведущему рассылки, прошу слать на e-mail: urisff@inbox.ru
    Все статьи публикуются здесь только с разрешения (или рекомендации) автора.
    Если вы хотите опубликовать здесь свою статью, то сделайте это, переслав её мне (желательно в виде html, причём без картинок). В случае, если вы будете использовать приведённые в этой рассылке материалы, не забудьте сделать ссылку на эту рассылку.

    Ведущий рассылки:
    Набатников Иван, urisff@inbox.ru
    TIREAL company: http://www.tireal.com
    Старый сайт: http://newff.narod.ru


    Subscribe.Ru
    Поддержка подписчиков
    Другие рассылки этой тематики
    Другие рассылки этого автора
    Подписан адрес:
    Код этой рассылки: comp.soft.prog.urisprog
    Отписаться
    Вспомнить пароль

    В избранное