Interface IAttachmentExecute (shobjidl_core.h)
Expõe métodos que funcionam com aplicativos cliente para apresentar um ambiente de usuário que fornece download seguro e troca de arquivos por meio de anexos de email e mensagens.
Herança
A interface IAttachmentExecute herda da interface IUnknown . IAttachmentExecute também tem estes tipos de membros:
Métodos
A interface IAttachmentExecute tem esses métodos.
IAttachmentExecute::CheckPolicy Fornece um teste booliano que pode ser usado para tomar decisões com base na política de execução do anexo. |
IAttachmentExecute::ClearClientState Remove qualquer estado armazenado baseado no GUID do cliente. Um exemplo pode ser uma configuração baseada em uma caixa marcada que indica que um prompt não deve ser exibido novamente para um tipo de arquivo específico. |
IAttachmentExecute::Execute Executa uma ação em um anexo. |
IAttachmentExecute::P rompt Apresenta uma interface do usuário de prompt para o usuário. |
IAttachmentExecute::Save Salva o anexo. |
IAttachmentExecute::SaveWithUI Apresenta ao usuário uma interface do usuário de erro explicativo se a ação salvar falhar. |
IAttachmentExecute::SetClientGuid Especifica e armazena o GUID para o cliente. |
IAttachmentExecute::SetClientTitle Especifica e armazena o título da janela do prompt. |
IAttachmentExecute::SetFileName Especifica e armazena o nome proposto do arquivo. |
IAttachmentExecute::SetLocalPath Define e armazena o caminho para o arquivo. |
IAttachmentExecute::SetReferrer Define a zona de segurança associada ao arquivo de anexo com base no arquivo de referência. |
IAttachmentExecute::SetSource Define um caminho ou URL alternativo para a origem de uma transferência de arquivo. |
Comentários
Essa interface pressupõe o seguinte:
- O cliente tem políticas ou configurações para suporte e comportamento de anexo.
- O cliente interage com o usuário.
Aqui está um exemplo de como um cliente de email pode usar IAttachmentExecute.
// CClientAttachmentInfo, defined by the client, implements all the
// necessary client functionality concerning attachments.
class CClientAttachmentInfo;
// Creates an instance of IAttachmentExecute
HRESULT CreateAttachmentServices(IAttachmentExecute **ppae)
{
// Assume that CoInitialize has already been called for this thread.
HRESULT hr = CoCreateInstance(CLSID_AttachmentServices,
NULL,
CLSCTX_INPROC_SERVER,
IID_IAttachmentExecute,
(void**)&pAttachExec);
if (SUCCEEDED(hr))
{
// Set the client's GUID.
// UUID_ClientID should be created using uuidgen.exe and
// defined internally.
(*ppae)->SetClientGuid(UUID_ClientID);
// You also could call SetClientTitle at this point, but it is
// not required.
}
return hr;
}
BOOL IsAttachmentBlocked(CClientAttachmentInfo *pinfo)
{
// Assume that a client function has copied the file from the mail store
// into a temporary file.
PWSTR pszFileName;
// GetFileName is a method in this class for which we do not provide
// an implementation here.
HRESULT hr = pinfo->GetFileName(&pszFileName);
if (SUCCEEDED(hr))
{
IAttachmentExecute *pExecute;
hr = CreateAttachmentServices(&pExecute);
if (SUCCEEDED(hr))
{
hr = pExecute->SetFileName(pszFileName);
// Do not call SetLocalPath since we do not have the local path yet.
// Do not call SetSource since email sources are not verifiable.
// Do not call SetReferrer since we do not have a better zone
// than the default (Restricted sites).
// Check for a policy regarding the file.
if (SUCCEEDED(hr))
{
hr = pExecute->CheckPolicy();
}
pExecute->Release();
}
LocalFree(pszFileName);
}
return FAILED(hr);
}
HRESULT OnDoubleClickAttachment(HWND hwnd, CClientAttachmentInfo *pinfo)
{
// Assume that a client function has copied the file from the mail store
// into a temporary file.
PWSTR pszTempFile;
// CopyToTempFile is a method in this class for which we do not provide
// an implementation here.
HRESULT hr = pinfo->CopyToTempFile(&pszTempFile);
if (SUCCEEDED(hr))
{
IAttachmentExecute *pExecute;
hr = CreateAttachmentServices(&pExecute);
if (SUCCEEDED(hr))
{
hr = pExecute->SetLocalPath(pszTempFile);
// Do not call SetFileName since we already have the local path.
// Do not call SetSource since email sources are not verifiable.
// Do not call SetReferrer since we do not have a better zone
// than the default (Restricted sites).
if (SUCCEEDED(hr))
{
hr = pExecute->Execute(hwnd, NULL, NULL);
}
pExecute->Release();
}
LocalFree(pszTempFile);
}
return hr;
}
HRESULT OnSaveAttachment(HWND hwnd, CClientAttachmentInfo *pinfo)
{
// Assume that a client function has copied the file from the mail store
// into a location selected by the user.
PWSTR pszUserFile;
// CopyToUserFile is a method in this class for which we do not provide
// an implementation here.
HRESULT hr = pinfo->CopyToUserFile(hwnd, &pszUserFile);
if (SUCCEEDED(hr))
{
IAttachmentExecute *pExecute;
hr = CreateAttachmentServices(&pExecute);
if (SUCCEEDED(hr))
{
hr = pExecute->SetLocalPath(pszTempFile);
// Do not call SetFileName since we have the local path.
// Do not call SetSource since email sources are not verifiable.
// Do not call SetReferrer since we do not have a better zone
// than the default (Restricted sites).
if (SUCCEEDED(hr))
{
hr = pExecute->Save();
}
pExecute->Release();
}
LocalFree(pszUserFile);
}
return hr;
}
Requisitos
Cliente mínimo com suporte | Windows XP com SP2 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | shobjidl_core.h |