• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Как Написать Много-поточное Приложение Для Вконтакте

Андрей

Принятый Кодер
Регистрация
17 Дек 2015
Сообщения
58
Баллы
60
//Помогите написать такое приложение в потоке.
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, sSkinManager, Vcl.StdCtrls, sButton,
  sEdit, sMemo, sLabel, httpsend, lib, sCheckBox, sGroupBox, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sEdit1: TsEdit;
    sEdit2: TsEdit;
    sButton1: TsButton;
    sButton3: TsButton;
    sEdit3: TsEdit;
    sMemo2: TsMemo;
    sLabel1: TsLabel;
    sButton4: TsButton;
    sGroupBox1: TsGroupBox;
    sButton5: TsButton;
    sButton6: TsButton;
    sButton2: TsButton;
    Timer1: TTimer;
    Timer2: TTimer;
    TrayIcon1: TTrayIcon;
    sButton7: TsButton;
    procedure sButton1Click(Sender: TObject);
    procedure sButton5Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure sButton6Click(Sender: TObject);
    procedure sButton7Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    response, token, uid: string;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.sButton1Click(Sender: TObject);
var
temp, login, pass: string;
begin
login:=sEdit1.Text;
  pass:=sEdit2.Text;
  response:=send('GET', 'https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username='+login+'&password='+pass+'&captcha_key=&captcha_sid=');
  if Pos('token', response)<>0 then begin
    temp:=copy(response, pos('access_token":"', response), pos('","expires_in', response)-3);
    delete(temp, 1, 15);
    token:=temp;
    sButton2.Enabled:= true;
    sButton3.Enabled:= true;
    sButton4.Enabled:= true;
    sButton5.Enabled:= true;
    sButton7.Enabled:= true;
    Timer1.Enabled:= true;
    sMemo2.Enabled:= true;
    sEdit3.Enabled:= true;
  end
  else ShowMessage:=('Ошибка авторизации');
end;

procedure TForm1.sButton5Click(Sender: TObject);
begin
Timer2.Enabled:= true;
sButton6.Enabled:= true;
sButton5.Enabled:= false;
end;

procedure TForm1.sButton6Click(Sender: TObject);
begin
Timer2.Enabled:= false;
sButton5.Enabled:= true;
sButton6.Enabled:= false;
end;

procedure TForm1.sButton7Click(Sender: TObject);
begin
sButton5.Enabled:= true;
sButton6.Enabled:= true;
sButton7.Enabled:= false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var temp:string;
begin
  response:=send('GET', 'https://api.vk.com/method/account.setOnline?v=5.24&access_token=' + token);
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var temp:string;
begin
response:=send('GET', 'https://api.vk.com/method/friends.deleteAllRequests?v=5.24&access_token=' + token);
end;

end.
oXeEC6ohx9E.jpg
 
Последнее редактирование:
//Помогите написать такое приложение в потоке.
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, sSkinManager, Vcl.StdCtrls, sButton,
  sEdit, sMemo, sLabel, httpsend, lib, sCheckBox, sGroupBox, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sEdit1: TsEdit;
    sEdit2: TsEdit;
    sButton1: TsButton;
    sButton3: TsButton;
    sEdit3: TsEdit;
    sMemo2: TsMemo;
    sLabel1: TsLabel;
    sButton4: TsButton;
    sGroupBox1: TsGroupBox;
    sButton5: TsButton;
    sButton6: TsButton;
    sButton2: TsButton;
    Timer1: TTimer;
    Timer2: TTimer;
    TrayIcon1: TTrayIcon;
    sButton7: TsButton;
    procedure sButton1Click(Sender: TObject);
    procedure sButton5Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure sButton6Click(Sender: TObject);
    procedure sButton7Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    response, token, uid: string;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.sButton1Click(Sender: TObject);
var
temp, login, pass: string;
begin
login:=sEdit1.Text;
  pass:=sEdit2.Text;
  response:=send('GET', 'https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username='+login+'&password='+pass+'&captcha_key=&captcha_sid=');
  if Pos('token', response)<>0 then begin
    temp:=copy(response, pos('access_token":"', response), pos('","expires_in', response)-3);
    delete(temp, 1, 15);
    token:=temp;
    sButton2.Enabled:= true;
    sButton3.Enabled:= true;
    sButton4.Enabled:= true;
    sButton5.Enabled:= true;
    sButton7.Enabled:= true;
    Timer1.Enabled:= true;
    sMemo2.Enabled:= true;
    sEdit3.Enabled:= true;
  end
  else ShowMessage:=('Ошибка авторизации');
end;

procedure TForm1.sButton5Click(Sender: TObject);
begin
Timer2.Enabled:= true;
sButton6.Enabled:= true;
sButton5.Enabled:= false;
end;

procedure TForm1.sButton6Click(Sender: TObject);
begin
Timer2.Enabled:= false;
sButton5.Enabled:= true;
sButton6.Enabled:= false;
end;

procedure TForm1.sButton7Click(Sender: TObject);
begin
sButton5.Enabled:= true;
sButton6.Enabled:= true;
sButton7.Enabled:= false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var temp:string;
begin
  response:=send('GET', 'https://api.vk.com/method/account.setOnline?v=5.24&access_token=' + token);
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var temp:string;
begin
response:=send('GET', 'https://api.vk.com/method/friends.deleteAllRequests?v=5.24&access_token=' + token);
end;

end.
***Скрытый текст не может быть процитирован.***
c6agfELiDlw.jpg
Про авторизацию вы можете почитать тут
Тут вы можете почитать о потоках
http://guardianelinks.de/index.php?threads/in-a-streaming-delphi-РАБОТА-С-ПОТОКАМИ-В-delphi.5/
http://guardianelinks.de/index.php?threads/Многопоточность-Класс-tthread.132/

ну а здесь ваш ответ,я написал в нутри кода описания
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, sSkinManager, Vcl.StdCtrls, sButton,
  sEdit, sMemo, sLabel, httpsend, lib, sCheckBox, sGroupBox, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sEdit1: TsEdit;
    sEdit2: TsEdit;
    sButton1: TsButton;
    sButton3: TsButton;
    sEdit3: TsEdit;
    sMemo2: TsMemo;
    sLabel1: TsLabel;
    sButton4: TsButton;
    sGroupBox1: TsGroupBox;
    sButton5: TsButton;
    sButton6: TsButton;
    sButton2: TsButton;
    Timer1: TTimer;
    Timer2: TTimer;
    TrayIcon1: TTrayIcon;
    sButton7: TsButton;
    procedure sButton1Click(Sender: TObject);
    procedure sButton5Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure sButton6Click(Sender: TObject);
    procedure sButton7Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    response, token, uid: string;
  end;


type
VKpotok = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
VKpotok:=tVKpotok.Create(False); // создаем поток
end;


procedure VKpotok.Execute;
var
temp, login, pass: string;
begin
login:=sEdit1.Text;
  pass:=sEdit2.Text;
  response:=send('GET', 'https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username='+login+'&password='+pass+'&captcha_key=&captcha_sid=');
  if Pos('token', response)<>0 then begin
    temp:=copy(response, pos('access_token":"', response), pos('","expires_in', response)-3);
    delete(temp, 1, 15);
    token:=temp;
    sButton2.Enabled:= true;  // будет выбивать ошибку так как в скилете потока,к компоненту нужно обращаться через форму к примеру Form1.sbutton2.enable:=false;
    sButton3.Enabled:= true;  // так что нужно переделать
    sButton4.Enabled:= true;
    sButton5.Enabled:= true;
    sButton7.Enabled:= true;
    Timer1.Enabled:= true;
    sMemo2.Enabled:= true;
    sEdit3.Enabled:= true;
  end
  else ShowMessage:=('Ошибка авторизации');
end;

procedure TForm1.sButton5Click(Sender: TObject);
begin
Timer2.Enabled:= true;
sButton6.Enabled:= true;
sButton5.Enabled:= false;
end;

procedure TForm1.sButton6Click(Sender: TObject);
begin
Timer2.Enabled:= false;
sButton5.Enabled:= true;
sButton6.Enabled:= false;
end;

procedure TForm1.sButton7Click(Sender: TObject);
begin
sButton5.Enabled:= true;
sButton6.Enabled:= true;
sButton7.Enabled:= false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var temp:string;
begin
  response:=send('GET', 'https://api.vk.com/method/account.setOnline?v=5.24&access_token=' + token);
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var temp:string;
begin
response:=send('GET', 'https://api.vk.com/method/friends.deleteAllRequests?v=5.24&access_token=' + token);
end;

end.
Вам почитать синхронизация потоков и критические секции.
 
Вверх Снизу