Eli olen tekemässä ohjelmaa joka tarkistaa linkit mahdollisten meatspin/rick roll uudelleenohjauksien varalta. Ainoa ongelma on että minulla on webbrowser josta tarkistetaan onko sivu sama kuin haettu uudelleenohjaussivu (esim tr.im) mutta esim rick rollissa kuuluu ääni taustalta ja smouch.net/lol tapauksessa kun yrittää ohjelmasta päästä pois/hakea uusi sivu. Tulee näyttöön alertboxeja. Eli miten saisi nettisivun tyhjennettyä. Olen yrittänyt webbrowser1.documenttext = "" mutta se bugittaa selaimen täysin (lataa kokoajan uudestaan about:blank sivua). Miten sen saisi tehtyä toimivasti?
Laita niin että sitten se muokkaa asetuksista javascriptin pois ja ohjaa käyttäjän uudelle sivulle. Teet joko sellaseen sivun nettii missä lukee esim. Pääsysi on evätty sivulle koska siellä on turhaa materiaalia tai linkitä se vaikka google.fihin
Heippa Short Php!
mikäli on tarvetta tyhjennellä internet-cache'a ohjelmallisesti niin tässä olis valmis luokka...
Imports System Imports System.Runtime.InteropServices Public Class DeleteCache 'FindFirstURLCacheEntry-funktiolla voi etsiä ensimmäisen välimuistimerkinnän 'FindNextUrlCacheEntry-fuktiolla voi rullata läpi koko välimuistiluettelon 'DeleteUrlCacheEntry-funktiolla voi poistaa välimuistiluettelosta merkinnän <StructLayout(LayoutKind.Explicit, Size := 80)> _ Public Structure INTERNET_CACHE_ENTRY_INFOA <FieldOffset(0)> _ Public dwStructSize As UInteger <FieldOffset(4)> _ Public lpszSourceUrlName As IntPtr <FieldOffset(8)> _ Public lpszLocalFileName As IntPtr <FieldOffset(12)> _ Public CacheEntryType As UInteger <FieldOffset(16)> _ Public dwUseCount As UInteger <FieldOffset(20)> _ Public dwHitRate As UInteger <FieldOffset(24)> _ Public dwSizeLow As UInteger <FieldOffset(28)> _ Public dwSizeHigh As UInteger <FieldOffset(32)> _ Public LastModifiedTime As _ System.Runtime.InteropServices.ComTypes.FILETIME <FieldOffset(40)> _ Public ExpireTime As _ System.Runtime.InteropServices.ComTypes.FILETIME <FieldOffset(48)> _ Public LastAccessTime As _ System.Runtime.InteropServices.ComTypes.FILETIME <FieldOffset(56)> _ Public LastSyncTime As _ System.Runtime.InteropServices.ComTypes.FILETIME <FieldOffset(64)> _ Public lpHeaderInfo As IntPtr <FieldOffset(68)> _ Public dwHeaderInfoSize As UInteger <FieldOffset(72)> _ Public lpszFileExtension As IntPtr <FieldOffset(76)> _ Public dwReserved As UInteger <FieldOffset(76)> _ Public dwExemptDelta As UInteger End Structure <DllImport("wininet", SetLastError := True, CharSet := CharSet.Auto, EntryPoint := "FindFirstUrlCacheGroup", CallingConvention := CallingConvention.StdCall)> _ Public Shared Function FindFirstUrlCacheGroup(dwFlags As Integer, dwFilter As Integer, lpSearchCondition As IntPtr, dwSearchCondition As Integer, ByRef lpGroupId As Long, lpReserved As IntPtr) As IntPtr End Function <DllImport("wininet", SetLastError := True, CharSet := CharSet.Auto, EntryPoint := "FindNextUrlCacheGroup", CallingConvention := CallingConvention.StdCall)> _ Public Shared Function FindNextUrlCacheGroup(hFind As IntPtr, ByRef lpGroupId As Long, lpReserved As IntPtr) As Boolean End Function <DllImport("wininet", SetLastError := True, CharSet := CharSet.Auto, EntryPoint := "DeleteUrlCacheGroup", CallingConvention := CallingConvention.StdCall)> _ Public Shared Function DeleteUrlCacheGroup(GroupId As Long, dwFlags As Integer, lpReserved As IntPtr) As Boolean End Function <DllImport("wininet", SetLastError := True, CharSet := CharSet.Auto, EntryPoint := "FindFirstUrlCacheEntryA", CallingConvention := CallingConvention.StdCall)> _ Public Shared Function FindFirstUrlCacheEntry(<MarshalAs(UnmanagedType.LPTStr)> lpszUrlSearchPattern As String, lpFirstCacheEntryInfo As IntPtr, ByRef lpdwFirstCacheEntryInfoBufferSize As Integer) As IntPtr End Function <DllImport("wininet", SetLastError := True, CharSet := CharSet.Auto, EntryPoint := "FindNextUrlCacheEntryA", CallingConvention := CallingConvention.StdCall)> _ Public Shared Function FindNextUrlCacheEntry(hFind As IntPtr, lpNextCacheEntryInfo As IntPtr, ByRef lpdwNextCacheEntryInfoBufferSize As Integer) As Boolean End Function <DllImport("wininet", SetLastError := True, CharSet := CharSet.Auto, EntryPoint := "DeleteUrlCacheEntryA", CallingConvention := CallingConvention.StdCall)> _ Public Shared Function DeleteUrlCacheEntry(lpszUrlName As IntPtr) As Boolean End Function <STAThread> _ Private Shared Sub Main(args As String()) Const CACHEGROUP_SEARCH_ALL As Integer = &H0 Const CACHEGROUP_FLAG_FLUSHURL_ONDELETE As Integer = &H2 Const ERROR_FILE_NOT_FOUND As Integer = &H2 Const ERROR_NO_MORE_ITEMS As Integer = 259 Dim groupId As Long = 0 Dim cacheEntryInfoBufferSizeInitial As Integer = 0 Dim cacheEntryInfoBufferSize As Integer = 0 Dim cacheEntryInfoBuffer As IntPtr = IntPtr.Zero Dim internetCacheEntry As INTERNET_CACHE_ENTRY_INFOA Dim enumHandle As IntPtr = IntPtr.Zero Dim returnValue As Boolean = False enumHandle = FindFirstUrlCacheGroup(0, CACHEGROUP_SEARCH_ALL, IntPtr.Zero, 0, groupId, IntPtr.Zero) If enumHandle <> IntPtr.Zero AndAlso ERROR_NO_MORE_ITEMS = Marshal.GetLastWin32Error() Then Return End If While True returnValue = DeleteUrlCacheGroup(groupId, CACHEGROUP_FLAG_FLUSHURL_ONDELETE, IntPtr.Zero) If Not returnValue AndAlso ERROR_FILE_NOT_FOUND = Marshal.GetLastWin32Error() Then returnValue = FindNextUrlCacheGroup(enumHandle, groupId, IntPtr.Zero) End If If Not returnValue AndAlso (ERROR_NO_MORE_ITEMS = Marshal.GetLastWin32Error() OrElse ERROR_FILE_NOT_FOUND = Marshal.GetLastWin32Error()) Then Exit While End If End While enumHandle = FindFirstUrlCacheEntry(Nothing, IntPtr.Zero, cacheEntryInfoBufferSizeInitial) If enumHandle = IntPtr.Zero AndAlso ERROR_NO_MORE_ITEMS = Marshal.GetLastWin32Error() Then Return End If cacheEntryInfoBufferSize = cacheEntryInfoBufferSizeInitial cacheEntryInfoBuffer = Marshal.AllocHGlobal(cacheEntryInfoBufferSize) enumHandle = FindFirstUrlCacheEntry(Nothing, cacheEntryInfoBuffer, cacheEntryInfoBufferSizeInitial) While True internetCacheEntry = CType(Marshal.PtrToStructure(cacheEntryInfoBuffer, GetType(INTERNET_CACHE_ENTRY_INFOA)), INTERNET_CACHE_ENTRY_INFOA) cacheEntryInfoBufferSizeInitial = cacheEntryInfoBufferSize returnValue = DeleteUrlCacheEntry(internetCacheEntry.lpszSourceUrlName) If Not returnValue Then returnValue = FindNextUrlCacheEntry(enumHandle, cacheEntryInfoBuffer, cacheEntryInfoBufferSizeInitial) End If If Not returnValue AndAlso ERROR_NO_MORE_ITEMS = Marshal.GetLastWin32Error() Then Exit While End If If Not returnValue AndAlso cacheEntryInfoBufferSizeInitial > cacheEntryInfoBufferSize Then cacheEntryInfoBufferSize = cacheEntryInfoBufferSizeInitial cacheEntryInfoBuffer = Marshal.ReAllocHGlobal(cacheEntryInfoBuffer, CType(cacheEntryInfoBufferSize, IntPtr)) returnValue = FindNextUrlCacheEntry(enumHandle, cacheEntryInfoBuffer, cacheEntryInfoBufferSizeInitial) End If End While Marshal.FreeHGlobal(cacheEntryInfoBuffer) End Sub End Class
Mikäli haluat kääntää assemblyn .dll'ksi ja käyttää vaikkapa VB6 tahi VBA- ympäristössä niin katso täältä ohjeita comvisible-attribuutin käytöstä
Aihe on jo aika vanha, joten et voi enää vastata siihen.