C ++ windows.h функция WriteFile - PullRequest
       8

C ++ windows.h функция WriteFile

0 голосов
/ 13 января 2019

Я пытаюсь отобразить в консоли список запущенных процессов и текущее время и сохранить их в текстовый файл, используя функции WriteFile и windows.h. Как эффективно перенаправить поток вывода и «Мои данные ...» в текстовый файл без использования «freopen» в C ++?

#include <windows.h>
#include <tlhelp32.h>
#include <iostream>
#include <chrono>

using namespace std;

int main()
{
    char temp;
      HANDLE h = CreateFile("process.txt",  // name of the file
                          GENERIC_WRITE,    // open for writing
                          0,                // sharing mode, none in this case
                          0,                // use default security descriptor
                          CREATE_ALWAYS,    // overwrite if exists
                          FILE_ATTRIBUTE_NORMAL,
                          0);

     if (h)
    {
        std::cout << "CreateFile() succeeded\n";
        CloseHandle(h);
    }
    else
    {
        std::cerr << "CreateFile() failed:" << GetLastError() << "\n";
    }

    time_t actualTime = chrono::system_clock::to_time_t(chrono::system_clock::now());
    cout << ctime(&actualTime);
    cout << "My data..." << endl;

    PROCESSENTRY32 proc32;
    HANDLE hSnapshot;

    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    proc32.dwSize = sizeof(PROCESSENTRY32);

   if(Process32First(hSnapshot, &proc32))
   {
        cout << proc32.szExeFile << endl;
        while(Process32Next(hSnapshot, &proc32))
        cout << proc32.szExeFile << endl;
   }

   WriteFile(HANDLE hFile,
            LPCVOID lpBuffer,
            DWORD nNumberOfBytesToWrite,
            LPDWORD lpNumberOfBytesWritten,
            LPOVERLAPPED lpOverlapped
            );

    CloseHandle(hSnapshot);

    system ("pause >nul");

    return 0;
}

1 Ответ

0 голосов
/ 13 января 2019

Используйте OPEN_ALWAYS вместо CREATE_ALWAYS, а затем используйте SetFilePointer, чтобы переместить указатель файла в конец файла.

...