27. november 2006 - 13:04
Der er
15 kommentarer og 1 løsning
Stien til skrivebordet for den aktuelle bruger
Hej Eksperter, Jeg efterlyser en funktion som kan hente stien til skrivebordet for den bruger som er logget ind. F.eks. C:\Documents and Settings\Administrator\Skrivebord Mvh Ole
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
27. november 2006 - 13:17
#1
getenv("USERPROFILE") bør give dig "C:\Documents and Settings\Administrator" men jeg ved ikke lige hvor man henter det sidste
27. november 2006 - 14:44
#3
-> tokelil Jeg kunne forestille mig at det er denne (CSIDL_DESKTOPDIRECTORY)jeg skal bruge, men jeg er lidt i tvivl om hvordan jeg benytter den? Har du eventuelt et hurtigt eksempel?
27. november 2006 - 15:00
#4
Når jeg laver denne: BOOL resultat = SHGetSpecialFolderPath(NULL, path, CSIDL_DESKTOPDIRECTORY, 0); Får jeg fejlen 'SHGetSpecialFolderPath' undeclared. Jeg har inkluderet shlobj.h Har I et godt forslag?
27. november 2006 - 15:17
#5
Har du includeret shell32.lib i dine linker options? Du kan evt. også gøre det ved at have følgende linie: #pragma comment(lib, "shell32.lib")
27. november 2006 - 15:42
#6
hmm jeg har tilføjet den i min main.cpp men det ændrer ikke noget?
27. november 2006 - 15:52
#7
Har du tilføjet den øverst eller? Jeg har: #include <shlobj.h> #pragma comment(lib, "shell32.lib") og kode: TCHAR strPath[MAX_PATH] = {0}; if (SHGetSpecialFolderPath(NULL, strPath, CSIDL_DESKTOPDIRECTORY, false)) MessageBox(NULL, strPath, _T("Test"), 0); og det virker fint.
27. november 2006 - 15:55
#8
Kommer til at tænke på du muligvis mangler en define, da funtionen først er med på Windows installation med IE 4. Jeg kan se min stdafx.h i mit test project har følgende defines: #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. #endif #ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. #define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. #endif #ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later. #define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. #endif
27. november 2006 - 16:02
#9
ok og hvor skal jeg tilføje det?
27. november 2006 - 16:08
#10
Forresten så er det tilføjet foroven i main og jeg har prøvet at kopiere din kode og det giver samme resultat :(
27. november 2006 - 16:11
#11
Det skal includeres et sted før din #include <shlobj.h>. (Da funktionerne sandsynligvis kun bliver "oprettet" hvis ovenstående #define's er tilstede)
27. november 2006 - 16:14
#12
Det var pokkers! Nu virker skidtet! Jeg siger mange tak. Vil du ligge et svar?
27. november 2006 - 16:20
#13
Hvis jeg laver et nyt project med nedenstående, så compiler det fint. Er det en gammel SDK version du har måske? [code] #pragma once #include <stdio.h> #include <tchar.h> #include <shlobj.h> #pragma comment(lib, "shell32.lib") int _tmain(int argc, _TCHAR* argv[]) { TCHAR strPath[MAX_PATH] = {0}; if (SHGetSpecialFolderPath(NULL, strPath, CSIDL_DESKTOPDIRECTORY, false)) MessageBox(NULL, strPath, _T("Test"), 0); return 0; } [/code]
27. november 2006 - 16:21
#14
Ok :) Held og lykke med det :)
27. november 2006 - 16:21
#15
forresten? Kan du fortælle mig hvordan jeg tilføjer "fil.exe" til strPath? så hele strengen bliver: "c:\dokuments and settings\admin\skrivebord\fil.exe"
27. november 2006 - 16:26
#16
_tcscat(strPath, _T("\\fil.exe"));
Kurser inden for grundlæggende programmering