Windowsbenutzer auslesen

KlaDi

Erfahrenes Mitglied
Hallo,

ich habe mir aus einem anderen Post das Snippet zum erstellen von Verknüpfungen geholt und darum noch ein kleines Programm geschrieben. Da meine Verknüpfung auf dem Desktop abgelegt werden soll, muss ich den Benutzer auslesen, der am Rechner sitzt, da ja der Desktop Userspezifisch ist.
Wie kann ich das in C++ machen? Geht das mit system()?

Gruß KlaDi.
 
DWORD dwSize = NULL;
GetUserName(NULL, &dwSize);

// create a buffer that is big enough
TCHAR *szBuf = new TCHAR[dwSize*sizeof(TCHAR)];

// Read the user name
GetUserName(szBuf, &dwSize);

Gruß
Gerhard
 
Hallo,

an das Desktopverzeichnis kommt man wohl am schnellsten so:
C++:
#include <shlobj.h>
#include <iostream>

int main() {
    TCHAR szDesktopFolder[MAX_PATH];
    LPITEMIDLIST pidl;
    IMalloc *pMalloc;
    
    SHGetMalloc(&pMalloc);
    
    SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl);
    SHGetPathFromIDList(pidl, szDesktopFolder);
    
    pMalloc->Free(pidl);

    std::cout << szDesktopFolder;

    return 0;
}

Grüße,
Matthias
 
Das klappt danke.
Mein nächstes Problem ist ein Programm aufzurufen und einen Übergabeparameter mitzugeben. Bei Shellexecute kann ich nur ein Programm aufrufen, aber wie kann ich noch einen Paramter mitgeben?

[EDIT] Ich hab rausgefunden, das man mit ShellExecute doch einen Parameter übergeben kann. Das Tutorial, war wohl nicht so klasse.
 
Zuletzt bearbeitet:
Wenn ich den Programmteil von Matthias nehme und diesen in eine Klasse packe und mir die Desktopfolder zurückgeben lasse, dann bekomme ich eine Warnung die da lautet:

Suspicious pointer conversion.
Der Fehler ist wie gesagt in der Zeile mit dem return.
Ich denke mal es liegt daran, das ich einen string zurückgeben will, die Variable ist aber ein tchar.
Wie kann ich also von tchar nach string konvertieren? Oder liegt es an was anderem?

Gruß KlaDi.
 
Hallo,

versuch's mal so:
C++:
std::string getDesktopFolder() {
    TCHAR szDesktopFolder[MAX_PATH];
    LPITEMIDLIST pidl;
    IMalloc *pMalloc;

    SHGetMalloc(&pMalloc);

    SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl);
    SHGetPathFromIDList(pidl, szDesktopFolder);

    pMalloc->Free(pidl);

    return std::string(szDesktopFolder);
}

Grüße,
Matthias
 
Zurück