Como limpar o cache quando seu aplicativo hospeda um controle WebBrowser no Visual C++ .NET ou no Visual C++ 2005

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 815718
Para uma versão deste artigo do Microsoft Visual Basic. NET, consulte 311289.
Para obter uma Microsoft Visual translation from VPE for Csharp .NET versão deste artigo, consulte 326201.

NESTA TAREFA

INTRODUÇÃO
Este artigo passo a passo descreve como usar as funções de API do WinInet para limpar o cache diretamente.

Talvez você precise limpar o cache programaticamente quando seu aplicativo hospeda um controle WebBrowser . No entanto, esse recurso não está disponível através de interfaces do controle WebBrowser .

back to the top

Usar funções WinInet

Você pode usar as seguintes funções WinInet para limpar o cache diretamente:

FindFirstURLCacheEntry

Use esta função para localizar a primeira entrada de cache.

FindNextUrlCacheEntry

Use esta função para enumerar o cache.

DeleteUrlCacheEntry

Use esta função para excluir cada entrada.

Observação Os exemplos de código neste artigo usar todas essas funções.

Observação Essas funções estão disponíveis com o Microsoft Internet Explorer versão 5.0 e posterior. Portanto, você deve incluir as verificações apropriadas para evitar erros. Os exemplos de código neste artigo incluem as verificações apropriadas para evitar erros.

back to the top

Limpar todos os arquivos no cache usando funções WinInet no Visual C++ .NET ou no Visual C++ 2005

Para limpar todos os arquivos no cache usando as funções WinInet no Visual C++ .NET ou no Visual C++ 2005, execute essas etapas:
  1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. No Visual Studio .NET 2002, clique em Projetos do Visual c++ em Tipos de projeto e, em seguida, clique em Projeto Win32 em modelos .

    No Visual Studio .NET 2003, clique em Projetos do Visual c++ em Tipos de projeto e, em seguida, clique em Projeto de console do Win32 em modelos .

    No Visual Studio 2005, clique em Visual C++ em Tipos de projeto e, em seguida, clique em Projeto Win32 em modelos .
  4. Na caixa de texto nome , digite Q815718 , digite C:\test na caixa de texto local e, em seguida, clique em OK .
  5. No Solution Explorer, clique duas vezes em Q815718.cpp em Arquivos de origem pasta.
  6. Adicionar as seguintes instruções incluir na janela código após a instrução # include "stdafx.h" e antes da função _tmain :
    #include <windows.h>#include <wininet.h>
  7. Substitua o código na função _tmain com o código a seguir:
    	// Pointer to a GROUPID variable	GROUPID groupId = 0;		// Local variables	DWORD cacheEntryInfoBufferSizeInitial = 0;    DWORD cacheEntryInfoBufferSize = 0;    int *cacheEntryInfoBuffer = 0;    INTERNET_CACHE_ENTRY_INFOA *internetCacheEntry;    HANDLE enumHandle = NULL;    BOOL returnValue = false;	// Delete the groups first.    // Groups may not always exist on the system.    // For more information, visit the following Microsoft Web site:    // http://msdn2.microsoft.com/en-us/library/ms909365.aspx			    // By default, a URL does not belong to any group. Therefore, that cache may become    // empty even when the CacheGroup APIs are not used because the existing URL does not belong to any group.			    enumHandle = FindFirstUrlCacheGroup(0, CACHEGROUP_SEARCH_ALL, 0, 0, &groupId, 0);	// If there are no items in the Cache, you are finished.	if (enumHandle != NULL && ERROR_NO_MORE_ITEMS == GetLastError())		return 0;		// Loop through Cache Group, and then delete entries.	while(1)	{		// Delete a particular Cache Group.		returnValue = DeleteUrlCacheGroup(groupId, CACHEGROUP_FLAG_FLUSHURL_ONDELETE, 0);				if (!returnValue && ERROR_FILE_NOT_FOUND == GetLastError())		{				returnValue = FindNextUrlCacheGroup(enumHandle, &groupId, 0);		}				if (!returnValue && (ERROR_NO_MORE_ITEMS == GetLastError() || ERROR_FILE_NOT_FOUND == GetLastError()))		{			break;		}	}	// Start to delete URLs that do not belong to any group.	enumHandle = FindFirstUrlCacheEntry(NULL, 0, &cacheEntryInfoBufferSizeInitial);	if (enumHandle == NULL && ERROR_NO_MORE_ITEMS == GetLastError())                return 0;		cacheEntryInfoBufferSize = cacheEntryInfoBufferSizeInitial;	internetCacheEntry =  (INTERNET_CACHE_ENTRY_INFOA *)malloc(cacheEntryInfoBufferSize);	enumHandle = FindFirstUrlCacheEntry(NULL, internetCacheEntry, &cacheEntryInfoBufferSizeInitial);    while(1)	{		cacheEntryInfoBufferSizeInitial = cacheEntryInfoBufferSize;				returnValue = DeleteUrlCacheEntry(internetCacheEntry->lpszSourceUrlName);								if (!returnValue)		{				returnValue = FindNextUrlCacheEntry(enumHandle, internetCacheEntry, &cacheEntryInfoBufferSizeInitial);		}				DWORD dwError = GetLastError();		if (!returnValue && ERROR_NO_MORE_ITEMS == dwError)		{			break;		}							if (!returnValue && cacheEntryInfoBufferSizeInitial > cacheEntryInfoBufferSize)		{			cacheEntryInfoBufferSize = cacheEntryInfoBufferSizeInitial;			internetCacheEntry =  (INTERNET_CACHE_ENTRY_INFOA *)realloc(internetCacheEntry, cacheEntryInfoBufferSize);			returnValue = FindNextUrlCacheEntry(enumHandle, internetCacheEntry, &cacheEntryInfoBufferSizeInitial);							}	}		free(internetCacheEntry);	printf("deleted the cache entries\n");	return 0;
    Observação você deve adicionar o common language runtime oferecem suporte a compilador opção (/ CLR: oldSyntax) no Visual C++ 2005 a compilar com êxito o exemplo de código anterior. Para adicionar a opção de compilador de suporte de tempo de execução idioma comum no Visual C++ 2005, siga estas etapas:
    1. Clique em Project e clique em <ProjectName> propriedades .

      Observação <ProjectName> é um espaço reservado para o nome do projeto.
    2. Expanda Configuration Properties e, em seguida, clique em Geral .
    3. Clique para selecionar Common Language Runtime suporte, sintaxe antiga (/ CLR: oldSyntax) no projeto oferece suporte a Common Language Runtime configuração no painel à direita, clique em Aplicar e em seguida, clique em OK .
    Para obter mais informações sobre o common language runtime oferece suporte à opção do compilador, visite o seguinte site da Microsoft:
    / clr (Common Language Runtime Compilation)
    http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
  8. Para vincular o código com êxito, adicione o arquivo da biblioteca WinInet.lib. Para fazer isso, execute as seguintes etapas:
    1. No Solution Explorer, clique no nó de projeto Q815718 com o botão direito do mouse e, em seguida, clique em Propriedades .
    2. Expanda Configuration Properties , expanda vinculador e, em seguida, clique em entrada .
    3. Digite WinInet.lib na propriedade Dependências adicionais e, em seguida, clique em OK .
  9. Pressione CTRL + SHIFT + S para salvar o projeto.
  10. Pressione CTRL + SHIFT + B para criar a solução.
  11. Pressione CTRL+F5 para executar o programa.
  12. Para confirmar que os arquivos em seu cache de Internet temporários foram excluídos, execute estas etapas no Microsoft Internet Explorer:
    1. No menu Ferramentas , clique em Opções da Internet .
    2. Na guia Geral , clique em configurações em arquivos de Internet temporários .
    3. Clique em Exibir arquivos .

      Observe que todos os arquivos no cache do Internet Explorer foram excluídos.
Back to the top
Referências
Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
262110COMO: Limpar cache quando seu aplicativo hospeda um controle WebBrowser
Para obter informações sobre desenvolvimento do Microsoft .NET Framework, visite o seguinte site da Web do Microsoft Developer Network (MSDN):Para obter mais informações sobre a sintaxe do WinInet cache funções, visite o seguinte site da MSDN:Para obter mais informações sobre como desenvolver soluções baseadas na Web para o Microsoft Internet Explorer, visite o seguinte site da MSDN:Back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 815718 - Última Revisão: 06/26/2009 01:21:20 - Revisão: 4.0

Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition

  • kbmt kbwebbrowser kbcominterop kbprogramming kbcode kbcaching kbapi kbhowtomaster KB815718 KbMtpt
Comentários