Interfaz IAttachmentExecute (shobjidl_core.h)
Expone métodos que funcionan con aplicaciones cliente para presentar un entorno de usuario que proporciona una descarga segura y el intercambio de archivos a través del correo electrónico y los datos adjuntos de mensajería.
Herencia
La interfaz IAttachmentExecute hereda de la interfaz IUnknown . IAttachmentExecute también tiene estos tipos de miembros:
Métodos
La interfaz IAttachmentExecute tiene estos métodos.
IAttachmentExecute::CheckPolicy Proporciona una prueba booleana que se puede usar para tomar decisiones basadas en la directiva de ejecución de los datos adjuntos. |
IAttachmentExecute::ClearClientState Quita cualquier estado almacenado basado en el GUID del cliente. Un ejemplo podría ser una configuración basada en una casilla activada que indica que no se debe volver a mostrar un mensaje para un tipo de archivo determinado. |
IAttachmentExecute::Execute Ejecuta una acción en un archivo adjunto. |
IAttachmentExecute::P rompt Presenta una interfaz de usuario de aviso al usuario. |
IAttachmentExecute::Save Guarda los datos adjuntos. |
IAttachmentExecute::SaveWithUI Presenta al usuario una interfaz de usuario de error explicativa si se produce un error en la acción de guardar. |
IAttachmentExecute::SetClientGuid Especifica y almacena el GUID para el cliente. |
IAttachmentExecute::SetClientTitle Especifica y almacena el título de la ventana del símbolo del sistema. |
IAttachmentExecute::SetFileName Especifica y almacena el nombre propuesto del archivo. |
IAttachmentExecute::SetLocalPath Establece y almacena la ruta de acceso al archivo. |
IAttachmentExecute::SetReferrer Establece la zona de seguridad asociada al archivo de datos adjuntos en función del archivo de referencia. |
IAttachmentExecute::SetSource Establece una ruta de acceso o dirección URL alternativa para el origen de una transferencia de archivos. |
Comentarios
Esta interfaz supone lo siguiente:
- El cliente tiene directivas o configuraciones para la compatibilidad y el comportamiento de los datos adjuntos.
- El cliente interactúa con el usuario.
Este es un ejemplo de cómo un cliente de correo electrónico podría 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 compatible | Windows XP con SP2 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | shobjidl_core.h |