Меня часто спрашивают: как отомстить человеку, какую программу ему переслать, чтобы как-то что-то? Некоторые люди доходят до того, что посылают вирусы, которые чуть ли не сносят систему, форматируют диски… Я противник таких действий, поэтому я буду описывать невинные шутки, которые ничего не удаляют и не воруют. Пройдёмте.
Итак. У жертвы стоит 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 и поставив ржущий смайл, отправит "я придурок". Дело закрыто.
(c) crystalbit, http://parsers.info
Подпишись на rss и будешь всегда в курсе
Чувак! Это гениально. Пытался сварганить подобное, но забросил.. Немного модернизирую твой код и накажу спамеров
Спасибо)
хнык, сделай откатную прогу..
Я придурок