Как получить абсолютный путь рабочего стола для вызывающего пользователя в Windows

c++ windows file

1685 просмотра

1 ответ

Как я могу получить абсолютный путь к рабочему столу для пользователя, который запускает мою программу?

int main () {
  ofstream myfile;
  myfile.open ("C:\\Users\\username\\Desktop\\example.txt");
  myfile << "Writing this to a file" << endl;
  myfile.close();
}
Автор: StefanTflch Источник Размещён: 08.11.2019 11:26

Ответы (1)


1 плюс

Отредактировано: как предложил Реми Лебо

Я хочу получить абсолютный путь к рабочему столу для каждой программы запуска компьютера?

Если вы находитесь в Windows, вам нужно использовать функцию API SHGetFolderPath , нажмите здесь для получения дополнительной информации.

Когда вы получите путь к рабочему столу, вам нужно будет объединить (добавить) его с именем вашего файла, сгенерированный путь будет представлять полный путь к файлу, который находится на рабочем столе, есть полный код:

#include <iostream>
#include <Windows.h>
#include <fstream>
#include <shlobj.h> // Needed to use the SHGetFolderPath function.

using namespace std;

bool GetDesktopfilePath(PTCHAR filePath, PTCHAR fileName)
{
    // Get the full path of the desktop :
    if (FAILED(SHGetFolderPath(NULL,
        CSIDL_DESKTOPDIRECTORY | CSIDL_FLAG_CREATE,
        NULL,
        SHGFP_TYPE_CURRENT,
        filePath))) // Store the path of the desktop in filePath.
        return false;

    SIZE_T dsktPathSize = lstrlen(filePath); // Get the size of the desktope path.
    SIZE_T fileNameSize = lstrlen(fileName); // Get the size of the file name.

    // Appending the fileName to the filePath :
    memcpy((filePath + dsktPathSize), fileName, (++fileNameSize * sizeof(WCHAR)));

    return true;
}

int main()
{
    ofstream myFile; 

    TCHAR    filePath[MAX_PATH];             // To store the path of the file.
    TCHAR    fileName[] = L"\\Textfile.txt"; // The file name must begin with "\\".

    GetDesktopfilePath(filePath, fileName);  // Get the full path of the file situated in the desktop.

    myFile.open(filePath);                  // Opening the file from the generated path.
    myFile << "Writing this to a file" << endl;
    myFile.close();

    return 0;
}
Автор: Amrane Abdelkader Размещён: 20.08.2016 04:48
Вопросы из категории :
32x32