Compartir a través de


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
Journal.h (también requiere journal_i.c)
Archivo DLL
Journal.dll

Consulte también

GUID de propiedades personalizadas

ReadFromStream (método)