Interfaz IJournalReader
Proporciona acceso de lectura a un archivo de Windows Journal y devuelve una secuencia que contiene una versión XML del contenido del archivo.
Nota
El componente Lector de diario no puede leer los archivos de Windows Journal creados por las máquinas que ejecutan Windows 7 o posterior. La interfaz IJournalReader debe considerarse en desuso o obsoleta y no debe usarse.
Miembros
La interfaz IJournalReader hereda de la interfaz IUnknown . IJournalReader también tiene estos tipos de miembros:
Métodos
La interfaz IJournalReader tiene estos métodos.
Método | Descripción |
---|---|
ReadFromStream | Toma una secuencia a un archivo de nota del diario y devuelve una secuencia XML que representa el contenido del documento. |
Comentarios
La clase JournalReader permite cargar una secuencia de documentos de diario y recibir una secuencia XML que represente el contenido. Puede reconstituir, mostrar y manipular la tinta.
Ejemplos
En el ejemplo siguiente de un controlador para el evento Click de un botón se crea una instancia de la clase JournalReader y se usa para leer un archivo Journal existente.
Nota
No se muestra el método DisplayXml al que se llama desde este ejemplo. La implementación específica de este método depende de las necesidades de la aplicación.
void CJntlReaderMFCDlg::OnBnClickedButton1()
{
static TCHAR BASED_CODE szFilter[] =
_T("Journal files (*.jnt)|*.jnt|All files (*.*)|*.*");
CFileDialog* fileDialog = new CFileDialog(TRUE, _T("*.jnt"), NULL,
OFN_FILEMUSTEXIST, szFilter, this);
// Get the filename from the user via a File Open dialog
if (fileDialog != NULL &&
fileDialog->DoModal() == IDOK)
{
CString strFileName = fileDialog->GetPathName();
// Read a JNT file into a memory buffer
HANDLE hFile = CreateFile(strFileName,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
// Allocate memory to hold the file contents
DWORD dwFileSize = GetFileSize(hFile, NULL);
HGLOBAL hGlobal = GlobalAlloc(GHND, dwFileSize);
if (hGlobal != NULL)
{
LPBYTE pData = (LPBYTE)GlobalLock(hGlobal);
if (pData != NULL)
{
DWORD dwRead;
// Read the Journal file into the pData buffer
if (ReadFile(hFile, pData, dwFileSize, &dwRead, NULL) &&
(dwRead == dwFileSize))
{
HRESULT hr;
IStream* pJntStream;
// Create an IStream that points to the buffer
hr = CreateStreamOnHGlobal(hGlobal, FALSE, &pJntStream);
if (SUCCEEDED(hr))
{
IJournalReader* pJntReader;
// Create a JournalReader object
hr = CoCreateInstance(CLSID_JournalReader, NULL, CLSCTX_ALL,
IID_IJournalReader, (void**)&pJntReader);
if (SUCCEEDED(hr))
{
IStream* pXmlStream;
// Read in the JNT file via the JournalReader
hr = pJntReader->ReadFromStream(pJntStream, &pXmlStream);
if (SUCCEEDED(hr))
{
// Display results
DisplayXml(pXmlStream);
// Clean up
pXmlStream->Release();
}
pJntReader->Release();
}
pJntStream->Release();
}
}
GlobalUnlock(hGlobal);
}
GlobalFree(hGlobal);
}
CloseHandle(hFile);
}
delete fileDialog;
}
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows XP Tablet PC Edition [solo aplicaciones de escritorio] |
Servidor mínimo compatible |
No se admite ninguno |
Encabezado |
|
Archivo DLL |
|