Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2009, 02:42   #1
Dionix
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 38
Восклицание Написать клиент для вконтакте...

Привет всем!!!
надеюсь вы мне очень поможете!
Я в Delphi нуб.. но мне очень нужно написать клиент для контакте..
основные мои вопросы - это импорт новых сообщений и возможность ответа на них прямо из клиента...
способ авторизации в контакте...
короче мне нужно всё.. что вы сможете предложить по клиенту вконтакте в целом!

спасибо вам огромное, за то что вы потрудились прочитать это сообщение! но я буду ещё больше благодарен за ваши примеры и пояснения! спасибо!
Dionix вне форума Ответить с цитированием
Старый 04.10.2009, 02:45   #2
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Отправка сообщения
Код:
procedure ParsText(s_incom:string);
var
  s:string;
begin
  s:=s_incom;
  secure:=copy(s,pos('secure',s),length(s)-pos('secure',s));
  secure:=copy(secure,pos('value',secure),length(secure)-pos('value',secure));
  secure:=copy(secure,pos('"',secure)+1,pos('/>',secure)-10);

  chas:=copy(s,pos('chas',s),length(s)-pos('chas',s));
  chas:=copy(chas,pos('value',chas),length(chas)-pos('value',chas));
  chas:=copy(chas,pos('"',chas)+1,pos('/>',chas)-10);

  photo:=copy(s,pos('"photo"',s),length(s)-pos('"photo"',s));
  photo:=copy(photo,pos('value',photo),length(photo)-pos('"photo"',photo));
  photo:=copy(photo,pos('"',photo)+1,pos('/>',photo)-10);
end;

function SendMessageToId(ToId:integer;Subject:string;Msg:Tstrings):boolean;
var param,response:tstringlist;
begin
param := TStringList.Create;
response := TStringList.Create;
 param.clear;
 response.Text := form1.HTTP1.Post('http://vkontakte.ru/mail.php?act=write&to='+inttostr(toid),param);
 ParsText(response.Text);
 response.Clear;
 //showmessage(secure);
 //showmessage(chas);
 //showmessage(photo);
 param.Add('act=sent');//ок const
 param.Add('ajax=1');//ок const
 param.Add('secure='+secure);
 param.Add('chas='+chas);
 param.Add('photo='+photo);
 param.Add('to_id='+inttostr(toid)); //здесь id того, кому шлется сообщения
 param.Add('to_reply=0'); // const
 param.Add('toFriends='); // const
 param.Add('title='+Subject ); //Тема сообщения
 param.Add('message='+Msg.Text);//Текст сообщения
try

response.Text := form1.http1.Post('http://vkontakte.ru/mail.php', param);
finally     //---
if pos('/login.php',response.Text)>0 then form3.CheckBox1.Checked:=false;
if pos('отправлено',response.Text)>0 then result := true else result := false;
end;        //---

end;

//------- использовать :

SendMessageToId(ID,'Тема','Сообщение');

//---------------------

function SetStatus(Status:string):boolean;
var param,response:tstringlist; i:integer;
begin
param := TStringList.Create;
response := TStringList.Create;
response.Text := form1.http1.Post('http://vkontakte.ru/profile.php', param);
response.Text := Stringreplace(response.Text,'''',#13,[rfreplaceall,rfignorecase]);
for i := 0 to response.Count - 1 do
begin
 if ((response[i]='activityhash') and (trim(response[i+1])='value=')) then
  begin

  param.Clear;
  param.Add('setactivity='+form3.StatusText.text);//ок
  param.Add('activityhash='+trim(response[i+2]))
  end;


end;
//form2.Memo1.Lines := response;
//form2.Show;
response.Text := form1.http1.Post('http://vkontakte.ru/profile.php', param);
if pos(form3.StatusText.text,response.Text)>0 then result := true else result := false;

end;
function AddFriend(id:integer;Msg:tstrings):boolean;
var param,response:tstringlist;i:integer;
begin
param := TStringList.Create;
response := TStringList.Create;
param.Add('act=request_form');//ок
param.Add('fid='+inttostr(id));//ок
response.Text := form1.HTTP1.Post('http://vkontakte.ru/friends_ajax.php',param);
//if pos('name=\"hash\"',response.Text)>0 then showmessage('Хэш получен почти ');
response.Text := Stringreplace(response.Text,'\','',[rfreplaceall,rfignorecase]);
response.Text := Stringreplace(response.Text,'"',#13,[rfreplaceall,rfignorecase]);
for i := 0 to response.Count - 1 do
begin
//response[i]:=Stringreplace(response.Text,'\','',[rfreplaceall,rfignorecase]);
 if ((trim(response[i])='hash') and (trim(response[i+1])='value=')) then
  begin
  param.Clear;
  param.Add('act=accept_friend');//ок
  param.Add('fid='+inttostr(id));//ок
  param.Add('hash='+trim(response[i+2]));
  param.Add('cats=');//ок
  param.Add('verbose=1');//ок
  param.Add('selectedItems=');//ок
  param.Add('selectedItems_custom=');//ок
  param.Add('message='+msg.Text);//ок
  end;
end;
response.Text := form1.HTTP1.Post('http://vkontakte.ru/friends_ajax.php',param);
if pos('получил уведомление',response.Text)>0 then result := true else result := false;
end;
Вроде понятны все функции по названиям ...
По аналогии всё можно сделать без особых проблем ... разбирайся )
Сразу скажу сделать спам бота не получится так просто

Последний раз редактировалось Lime; 04.10.2009 в 02:49.
Lime вне форума Ответить с цитированием
Старый 04.10.2009, 02:58   #3
Dionix
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 38
Радость

Цитата:
Сообщение от Lime Посмотреть сообщение
Сразу скажу сделать спам бота не получится так просто

в каком смысле СПАМ-БОТ ??? может я что-то неправильно понимаю... но помойму ты хочешь сказать что я делаю спамера? только бот-спамера...


кстати... спасибо за информацию про отправку сообщений!
а можешь подсказать как реализовать импорт в приложение входящих сообщений?
Dionix вне форума Ответить с цитированием
Старый 04.10.2009, 03:06   #4
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Радость

Цитата:
Сообщение от Dionix Посмотреть сообщение
а можешь подсказать как реализовать импорт в приложение входящих сообщений?
Подсказать могу - самому лень делать потому как нет нужды)
Нужно парсить страничку _http://vkontakte.ru/mail.php?id=xxxxxxxx
Где ххх это твой id . Сообщения "прочитанные" и "не прочитанные" оформляются по разному.
Соответственно выделяеш текст сообщения и параметры его оформления.

Цитата:
Сообщение от Dionix Посмотреть сообщение
в каком смысле СПАМ-БОТ ??? может я что-то неправильно понимаю... но помойму ты хочешь сказать что я делаю спамера? только бот-спамера...
Ничего таково сказать не хотел , хотел лишь предупредить на будущее
Lime вне форума Ответить с цитированием
Старый 04.10.2009, 03:11   #5
Dionix
Пользователь
 
Регистрация: 04.10.2009
Сообщений: 38
Печаль

Цитата:
Сообщение от Lime Посмотреть сообщение
Нужно парсить страничку _http://vkontakte.ru/mail.php?id=xxxxxxxx
Где ххх это твой id . Сообщения "прочитанные" и "не прочитанные" оформляются по разному.
Соответственно выделяеш текст сообщения и параметры его оформления
а как это ПАРСИТЬ???
Dionix вне форума Ответить с цитированием
Старый 08.10.2009, 00:41   #6
mihab2009
Пользователь
 
Регистрация: 28.07.2009
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Dionix Посмотреть сообщение
а как это ПАРСИТЬ???
Если надо спарсить куски текста, ограниченные с обоих сторон все одинаково, я обычно делаю как-то так:
Код:
responseres.Text:=idhttp1.Get('http://.....' );
for i:=0 to n do
begin
  pos1:=pos('позиция до', responseres.Text);
  responseres.Text:=copy(responseres.Text, pos1, Length(responseres.Text));
  pos1:=pos('позиция после', responseres.Text);
  strlist.Add(copy(responseres.Text, 1, pos1));
end;
Хотя наверно есть варианты попроще, но я их пока не знаю
mihab2009 вне форума Ответить с цитированием
Старый 01.12.2009, 19:31   #7
buket
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 18
По умолчанию

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

Что за дурная манера цитировать целый лист?
Кому это нужно?
Читаем правила.

Последний раз редактировалось mihali4; 02.12.2009 в 22:11.
buket вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна рабочая программа для взлома аккаунта вконтакте Grom007 Фриланс 22 13.12.2011 23:55
Как написать сервис-клиент используя Indy 3vg3n Работа с сетью в Delphi 0 14.03.2009 11:04
Нужно написать программу(клиент-сервер) Koluchiy Фриланс 2 12.03.2007 23:39
Предлагаю написать свой клиент icq -=DeS=- Свободное общение 6 04.03.2007 13:47