Как программно в Internet Explorer нажать кнопку Clear Cache
Как будет выглядеть церковь MSIE:
1) При входе надо будет указывать логин и пароль, который затем будет огромными буквами записываться на стене, чтобы вы его в дальнейшем не забыли.
2) В разгар службы всех посетителей будут просить выйти из церкви, чтобы перезагрузить зависший алтарь.
3) Большинство молитв будет читаться на вьетнамском или турецком языке.
4) Минимум раз в день в церкви кто-нибудь громко будет совершать недопустимую операцию.
5) День, когда с церкви не упадет макушка и не треснет кого-нибудь по кумполу, будет считаться божьим чудом.
6) Главному настоятелю каждый день будут поступать сведения обо всех ваших передвижениях в церкви. Даже о том, что именно вы делали в туалете.
7) При попытке поискать адреса церквей других конфессий вам в первой строчку услужливо будут подсовывать "Святую церковь MSIE всеблагого Гейтса".
8) Периодически вместо икон на стенах будут возникать пустые квадратики с крестиком. Впрочем, хорошо еще, что с крестиком. На них хоть тоже можно молиться.
9) Пару раз в неделю, при попытке найти вход в церковь, вы будете наталкиваться на плакат: "Вход в дверь недоступен. Возможно, это вызвано техническими проблемами на Небесах".
Вам нужно будет использовать WinINet в Вашей TfrmMain: Uses WinINet; и добавить к TButton следующий обработчик btnEmptyCache:
procedure TfrmMain.btnEmptyCacheClick(Sender: TObject);
var
lpEntryInfo : PInternetCacheEntryInfo;
hCacheDir : LongWord;
dwEntrySize : LongWord;
dwLastError : LongWord;
begin
dwEntrySize := 0;
FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^ ), dwEntrySize);
GetMem(lpEntryInfo, dwEntrySize);
hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize);
if (hCacheDir <> 0) then
DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName);
FreeMem(lpEntryInfo);
repeat
dwEntrySize := 0;
FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^ ), dwEntrySize);
dwLastError := GetLastError;
if (GetLastError = ERROR_INSUFFICIENT_BUFFER) thenbegin
GetMem(lpEntryInfo, dwEntrySize);
if (FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize)) then
DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName);
FreeMem(lpEntryInfo);
end;
until
(dwLastError = ERROR_NO_MORE_ITEMS);
end;
Компьютерная шутка: посетить церковь, посвященную Microsoft Internet Explorer!
Теперь, когда мы готовы к делу, давайте исследовать предоставленный код.
Процедура btnEmptyCacheClick предназначена для очистки кэша в Internet Explorer с помощью WinINet. Вот разбивка того, что код делает:
Он инициализирует переменные: lpEntryInfo, hCacheDir, dwEntrySize и dwLastError.
Он вызывает функцию FindFirstUrlCacheEntry, чтобы найти первый URL-кашевой элемент. Эта функция возвращает handle к кэш-директории (hCacheDir) и устанавливает dwEntrySize в размер кэш-элемента.
Если кэш-директория не пуста (т.е. hCacheDir не равно 0), он вызывает функцию DeleteUrlCacheEntry, чтобы удалить кэш-элемент с именем URL, хранящимся в lpEntryInfo.
Код затем вступает в цикл, продолжающийся до тех пор, пока нет более кэш-элементов (т.е. dwLastError равно ERROR_NO_MORE_ITEMS).
В каждом итерации цикла он вызывает функцию FindNextUrlCacheEntry, чтобы найти следующий URL-кашевой элемент. Если эта функция возвращает ошибку (GetLastError равно ERROR_INSUFFICIENT_BUFFER), он выделяет новую память для lpEntryInfo и пытается снова.
Как только все кэш-элементы будут обработаны, процедура заканчивается.
В целом, этот код использует WinINet для очистки кэша Internet Explorer, перебирая кэш-директорию, удаляя каждый элемент и освобождая память, когда это необходимо.
В статье описывается способ программного нажатия кнопки "Clear Cache" в Internet Explorer с помощью WinINet API.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.