Страница 1 из 1
Присвоить переменной время из интернета
Добавлено: 16 авг 2009, 13:50
AlexZZZ
Уважаемые коллеги, добрый день!
Задача в следующем: нужно определить. подключен ли компьютер к интернет-сети, и если да, то получить точное время (независящее от системного времени компьютера, которое может быть выставлено с ошибкой).
В сети много сайтов, показывающие точное время, даже с учётом часового пояса, но реализовано всё это на скриптах и сделать обычный веб-запрос в Excel не получается.
Может, кто сталкивался с подобной задачей и может дать дельный совет по реализации?
Re: Присвоить переменной время из интернета
Добавлено: 17 авг 2009, 14:45
mc-black
Прочтите RFC по протоколу SNTP (упрощенный сетевой протокол времени), более доступный для изучения по сравнению с NTP. Серверов синхронизации точного времени сейчас и правда предостаточно, можно найти open source программы на тему и сдуть реализацию.
Re: Присвоить переменной время из интернета
Добавлено: 17 авг 2009, 15:51
Aent
Re: Присвоить переменной время из интернета
Добавлено: 17 авг 2009, 21:58
AlexZZZ
Aent, спасибо за ссылки, только хотелось реализовать всё в Excel, а тут VB.net. Например, не работает такая конструкция:
Код: Выделить всё
'connect
With Winsock1
If .State <> sckClosed Then .Close
.RemoteHost = ComboBox1.Text
.RemotePort = 37 'port 37 is the timserver port
.Connect
End With
И чем этот Winsock control (Winsock1), в Excel заменить, непонятно.
Re: Присвоить переменной время из интернета
Добавлено: 18 авг 2009, 05:29
EducatedFool
И чем этот Winsock control (Winsock1), в Excel заменить, непонятно.
Ничем не надо заменять. Его и используйте.
В
Tools - References найдите и подключите
Microsoft Winsock Control,
а также добавьте элемент управления
Winsock на форму
(найти его можно среди дополнительных компонентов)

Re: Присвоить переменной время из интернета
Добавлено: 18 авг 2009, 11:37
AlexZZZ
Ещё раз внимательно просмотрел весь список, но Microsoft WinSock Control у себя в списке не нашёл. Судя по приложенной картинке, требуется файл MSWINSCK.OCX. Доустановил офис, включая поддержку программирования для .NET, но этот файл не появился, как и Microsoft WinSock Control. Наверное, только установленого офиса недостаточно и нужно опять же устанавливать среду Visual Basic?
P/S: В интернет нашёл этот файл и поместил в папку WINDOWS\system32, но Microsoft WinSock Control в списке так и не появился. Видимо эту библиотеку нужно ещё зарегистрировать в системе. В общем, как представлю, какие проблемы могут быть для 60 пользовательских компьютеров, понимаю, что данный способ мне вряд-ли подойдёт, к сожалению.
А есть ли способ проще? Например, сайт, где веб-запрос таки можно выполнить? Чтобы это работало для большинства подключённых к интерент пользовательских компьютеров по умолчанию.
Re: Присвоить переменной время из интернета
Добавлено: 18 авг 2009, 16:59
EducatedFool
В интернет нашёл этот файл и поместил в папку WINDOWS\system32, но Microsoft WinSock Control в списке так и не появился. Видимо эту библиотеку нужно ещё зарегистрировать в системе
Да, надо регистрировать.
Но это делается очень просто:
Пуск - Выполнить -
regsvr32 MSWINSCK.OCX
В общем, как представлю, какие проблемы могут быть для 60 пользовательских компьютеров, понимаю, что данный способ мне вряд-ли подойдёт, к сожалению.
Да никаких проблем.
Моя надстройка тоже работает с сетью, и поэтому требует
MSWINSCK.OCX
Более того, я в коде динамически создаю
WinSock, поэтому, в моём случае, требуется ещё прописать в реестр лицензию для этого элемента управления.
Распространяю я свою надстройку в составе дистрибутива, выполненного с использованием программы
InnoSetup.
В скрипт достаточно добавить одну строку, чтобы получившийся exe-файл (дистрибутив) скопировал файл в системную директорию, и зарегистрировал его в системеЖ
[Files]
Source: "MSFLXGRD.OCX"; DestDir: "{sys}" ; Flags: regserver sharedfile
Source: "MSWINSCK.OCX"; DestDir: "{sys}" ; Flags: regserver sharedfile
Source: "DNS_Database.DNS"; DestDir: "{app}" ; Flags: onlyifdoesntexist