![]() |
|
|
#1 (permalink) |
|
МСП, NGN, ВОСП
|
WebBrowser
Хочу написать программу WebBrowser, который после обновления страницы, определял, была ли она изменена.
Думал так - при обновлении страницы, копирую её содержимое, и сравниваю её с обновлённой. Как скопировать содержимое? Пытался использовать компонент Webbrowser в Делфи. |
|
|
|
|
|
#2 (permalink) |
|
Местный
Регистрация: 03.03.2007
Адрес: Москва, Люблино
Возраст: 33
Сообщений: 946
|
Да уж, совсем Дельфи людей головой думать отучил! Привычка использовать все готовое никак не способствует ни техническому прогрессу, ни, что самое страшное, собственному образованию.
Это - личное мнение старого программиста, так что без обид. ![]() Не знаю, как работает этот компонент, но, думаю, что в куче его свойств есть отвечающее за текстовое содержимое полученной страницы. Которое ты можешь сравнивать с сохраненным ранее и принимать решение об изменении страницы. Без лишнего шума содержимое страницы можно получить, используя Internet API. Для этого надо открыть MSDN и внимательно читать про функции InternetOpen, InternetOpenUrl, InternetQueryDataAvailable, InternetReadFile, InternetCloseHandle. Так можешь скачать страничку целиком, сохранить в массив, в файл, переписать на бумажку с экрана, и сравнивать как пожелаешь. Можно сделать еще проще, но для этого надо немного почитать про протокол HTTP 1.0. А именно: используя тот же API, отправляем на сервер запрос, в заголовке которого пишем If-Modified-Since: Fri, 04 Jan 2008 21:30:00 GMT и читаем его ответ. В ответ получим либо HTTP/1.0 304 Not Modified, либо HTTP/1.0 200 OK и саму страницу. |
|
|
|
|
|
#3 (permalink) | |
|
МСП, NGN, ВОСП
|
Цитата:
Как отправлять запрос, как его получить? Или дай ссылку с подробным описанием (или сам напиши пример, если не трудно). Просто программированием я вообще не занимаюсь, писал тока раньше небольшии программы для расчёта чего-либо, а с api функциями никогда не сталкивался. |
|
|
|
|
|
|
#4 (permalink) |
|
Child of Darkness
|
Поищи здесь: http://delphikingdom.ru/asp/itemq.asp?ItemID=44
__________________
http://sky.62live.ru/ ftp://sky.62live.ru/ |
|
|
|
|
|
#5 (permalink) |
|
Местный
Регистрация: 03.03.2007
Адрес: Москва, Люблино
Возраст: 33
Сообщений: 946
|
Вот кусок кода, который читает страницу по заданному URL и сохраняет ее в файл. Разобраться здесь не трудно. Как и в прошлый раз советую внимательно читать MSDN, без него точно ничего не получится.
Код:
void GetInfo(char *url)
{
HINTERNET hRootHandle, hOpenUrlHandle;
DWORD dwSize = 0, dwDownloaded = 0;
LPTSTR lpszData;
HANDLE h;
DWORD bytes;
BOOL x;
hRootHandle = InternetOpen("Viewer",
INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
hOpenUrlHandle = InternetOpenUrl(hRootHandle, url, NULL, 0,
INTERNET_FLAG_RAW_DATA, 0);
while (1)
{
x = InternetQueryDataAvailable(hOpenUrlHandle,
&dwSize, 0, 0);
if (dwSize == 0 || !x) break;
lpszData = new TCHAR[dwSize+1];
InternetReadFile(hOpenUrlHandle, (LPVOID)lpszData,
dwSize, &dwDownloaded);
lpszData[dwDownloaded] = '\0';
if (dwDownloaded == 0) break;
h = CreateFile("file.txt", GENERIC_WRITE, 0, 0,
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
SetFilePointer(h, 0, 0, FILE_END);
WriteFile(h, lpszData, dwDownloaded, &bytes, 0);
CloseHandle(h);
delete []lpszData;
}
InternetCloseHandle(hOpenUrlHandle);
InternetCloseHandle(hRootHandle);
}
|
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
| Опции темы | |
| Опции просмотра | |
|
|