Я придурок. QIP. Диверсия
Меня часто спрашивают: как отомстить человеку, какую программу ему переслать, чтобы как-то что-то? Некоторые люди доходят до того, что посылают вирусы, которые чуть ли не сносят систему, форматируют диски… Я противник таких действий, поэтому я буду описывать невинные шутки, которые ничего не удаляют и не воруют. Пройдёмте.

Итак. У жертвы стоит qip. Наша задача: написать простую программу-шутку, которая не навредит пользователю, но … Тут я долго думал что же такое написать. Чтобы было весело в общем.

К чему присмотреться? Сегодня мой взор пал на смайлы.

[смайлы в qip]

Идём в Program files, в папку, где установлен qip. Папка Skins. В ней есть файлы skins.cfg и current.cfg. В первом перечислены папки, в которых скины, во втором на первой строчке имя папки текущего скина. У меня это ICQ5.
Что ж, идём в папку ICQ5. Там находим папку Smilies, а в ней Animated и Static. Почему две? Да потому что в настройках qip можно выбрать, какие смайлы мы используем.

[_define.ini]

В обеих папках есть такой файл — _define.ini. Откроем его, смотрим:

O:-),O=)
:-),: ),= )
:-(,: (,;(
;-),; )
: - P
8 - )
: - D
:-[
=-O
:-*
:'(
:-X,:-x
>:o
: - |
:-\,:-/
*JOKINGLY*
]:->
[:-}
*KISSED*
:-!
*TIRED*
*STOP*
*KISSING*
@}->--
*THUMBS UP*
*DRINK*
*IN LOVE*
@=
*HELP*
\m/
%)
*OK*
*WASSUP*,*SUP*
*SORRY*
*BRAVO*
*ROFL*,*LOL*
*PARDON*
*NO*
*CRAZY*
*DONT_KNOW*,*UNKNOWN*
*DANCE*
*YAHOO*,*YAHOO!*
*HI*,*PREVED*,*PRIVET*,*HELLO*
*BYE*
*YES*
;D,*ACUTE*
*WALL*,*DASH*
*WRITE*,*MAIL*
*SCRATCH*

Что это? На каждой строчке написаны текстовые эквиваленты какого-либо смайла, их может быть несколько через запятую, все они, будучи в сообщении, заменяются картинкой соответствующего смайла (по алфавиту, как я понял), а при выборе нами смайла для вставки и отправки с ним сообщения, отправляется первый в списке эквивалент. Матчасть на этом закончим.

[программа]

Сначала задумка. Для примера сделаем так: выбирая смайл *ROFL*, человек будет отправлять «я придурок». Чисто ради примера и наглядности.
Идём в delphi, New Application. Project -> Remove from project -> удаляем Form1/Unit1. Project -> View source. Перед нами сам проект, без формы.
Удалим всё лишнее, оставим только

program dqip;

uses
  windows;

begin

end.

Функцию для получения пути к qip возьмём отсюда: Получение пути к qip на delphi.

Далее,

var
  i,p:integer;
  qpath:string;

begin
  qpath:=GetQIPPath;
  for i:=1 to Length(qpath) do
    if qpath[i]='\' then
      p:=i;

В p теперь позиция последнего символа \, сейчас обрежем, чтобы получить чисто папку, а не полный путь к exe — он нам не нужен. Да, я знаю про ExtractFilePath, но ради него я не стал подключать SysUtils.

  Delete(qpath, p+1, MaxINT);

Прибавляем единицу чтобы оставить косую черту.
Теперь найдём папку смайлов скина:

  AssignFile(f, qpath+'Skins\current.cfg');
  Reset(f);
  Readln(f, qskin);
  CloseFile(f);

  qpath:=qpath+'Skins\'+qskin+'\Smilies\';

Прочитаем из файла в массив, внесем изменения:

  AssignFile(f, qpath+'Animated\_define.ini');
  Reset(f);
  repeat
    l:=Length(arr);
    SetLength(arr,l+1);
    Readln(f, arr[l]);
    if Pos('*ROFL*', arr[l]) then
      arr[l]:=' y i?eao?ie ,'+arr[l];
  until eof(f);
  CloseFile(f);

И запишем:

  Rewrite(f);
  for i:=0 to Length(arr)-1 do
    writeln(f, arr[i]);
  Closefile(f);

Аналогично с другим, смотри уже в прикрепленном исходнике.

[что теперь?]

Теперь наш дружок, перезапустив qip и поставив ржущий смайл, отправит «я придурок». Дело закрыто.

скачать

И ещё по поводу розыгрышей — можно купить замороженную капусту и заказать другу доставку домой. Вот он образуется :) К слову, лидер российского рынка по оптовой поставке замороженных овощей и фруктов, компания Гранд-Престиж, предоставляет доставку за 4 часа без выходных по Санкт-Петербургу.

(c) crystalbit, http://parsers.info
Подпишись на rss и будешь всегда в курсе