D
durch diese Funktionen (windows.h wird benötigt!):
UINT GetSystemDirectory( // Systemordner ermitteln (meistens C:\WINDOWS\system)
LPTSTR lpBuffer, // ein char* in den der Ordnername geschrieben wird
UINT uSize // maximale Länge des char*
);
UINT GetWindowsDirectory( // Windows-Ordner ermitteln(meistens C:\WINDOWS)
LPTSTR lpBuffer, // Parameter wie oben
UINT uSize
);
DWORD GetTempPath( // Ordner für Temporäre Dateienermitteln (ACHTUNG: Name endet mit einem Backslsh (\))
DWORD nBufferLength, // maximale Länge
LPTSTR lpBuffer // der char* in den geschrieben wird
);
wenn du mit Windows Programm Verzeichnis das aktuelle Verzeichnis meinst:
DWORD GetCurrentDirectory( // Aktuelles Verzeichnis ermitteln (endet nicht mit Backslash)
DWORD nBufferLength, // Parameter wie bei GetTempPath
LPTSTR lpBuffer
);
oder aber du meinst den Ordner, in dem Windows-Programme installiert werden (meistens C:\Programme):
// hierfür muss man shlobj.h einbinden
HRESULT SHGetFolderPath(
HWND hwndOwner, // Das Besitzerfenster - kann NULL sein
int nFolder, // Ordner-Identifier
HANDLE hToken, // sollte NULL sein
DWORD dwFlags, // zusätzliche Flags (sollte SHGFP_TYPE_CURRENT sein)
LPTSTR pszPath // char* zur Ausgabe (ACHTUNG: sollte eine Länge von MAX_PATH haben)
);
und jetzt noch 1 Beispiel:
#include <windows.h>
#include <shlobj.h>
void ShowDirectories(void) {
char buf[MAX_PATH];
char output[65536];
GetSystemDirectory(buf, MAX_PATH);
wsprintf(output, "Systemordner: %s\n", buf);
GetWindowsDirectory(buf, MAX_PATH);
wsprintf(output, "%sWindows-Ordner: %s\n", output, buf);
GetTempPath(MAX_PATH, buf);
wsprintf(output, "%sTemporärer Ordner: %s\n", output, buf);
GetCurrentDirectory(MAX_PATH, buf);
wsprintf(output, "%sAktuelles Verzeichnis: %s\n", output, buf);
SHGetFolderPath(NULL, CSIDL_PROGRAM_FILES, NULL, SHGFP_TYPE_CURRENT, buf);
wsprintf(output, "%sProgrammverzeichnis: %s\n", output, buf);
// Mit SHGetFolderpath kann man auch die anderen Ordner ermitteln, dann braucht man andere CSIDL's
// anderes Beispiel: System32
SHGetFolderPath(NULL, CSIDL_SYSTEM, NULL, SHGFP_TYPE_CURRENT, buf);
// Für mehr Informationen zu SHGetFolderPath rate ich, in der MSDN nachzulesen
wsprintf(output, "%sSystem32-Ordner: %s\n", output, buf);
MessageBox(NULL, output, "Verzeichnisse", MB_OK|MB_ICONINFORMATION);
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
ShowDirectories();
return 0;
}
MfG DrakoXP
PS: mist! zu lange getippt