Avatar billede speedy Nybegynder
25. august 2004 - 13:50 Der er 16 kommentarer og
1 løsning

Bruge funktionen SHCreateDirectoryEx

Hej

Jeg vil meget gerne benytte mig af funktionen SHCreateDirectoryEx, men kan ikke få det til at virke:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shcreatedirectoryex.asp

Jeg har #include "shlobj.h" samt tilføjet shell32.lib til linkeren.

Men compileren (Microsoft Visual C++ 6.0) siger bare "undeclared identifier" til funktionen.

Hvad gør jeg for at få det til at virke?
Avatar billede arne_v Ekspert
25. august 2004 - 13:57 #1
Må vi se koden og den fulde fejl besked ?
Avatar billede speedy Nybegynder
25. august 2004 - 14:03 #2
#include "stdafx.h"
#include "shlobj.h"

int main(int argc, char* argv[])
{
    SHCreateDirectoryEx(NULL, "D:\\Mappe1\\Mappe2", NULL);
    return 0;
}


og compileren siger:

ShellTest.cpp(6) : error C2065: 'SHCreateDirectoryEx' : undeclared identifier
Avatar billede arne_v Ekspert
25. august 2004 - 14:11 #3
Lidt investigation viser at:

Hverken min VC++ 6.0 eller 7.1 shlobj.h indeholder den funktion.

Men Platform SDK shlobj.h gør !!!!
Avatar billede speedy Nybegynder
25. august 2004 - 14:17 #4
Okay, kan jeg så hente en shlobj.h der indeholder funktionen ?
Jeg prøvede funktionen på Visual C++ .NET hvor den virkede...kan jeg kopiere dens shlobj.h eller vil det give problemer?
Avatar billede speedy Nybegynder
25. august 2004 - 14:34 #5
Nej, det kunne man ikke bare lige fandt jeg ud af ;)
Avatar billede arne_v Ekspert
25. august 2004 - 14:43 #6
Hvorfor compiler du så ikke bare i VC++.NET ?
Avatar billede speedy Nybegynder
25. august 2004 - 14:52 #7
Fordi jeg har hørt at det ikke bare lige er sådan at skifte mellem VC++ 6.0 og .NET...og hvis jeg compiler i .NET så kræver mit program vel også pludselig at .NET frameworket er installeret på brugernes PC'er eller hvad?
Avatar billede arne_v Ekspert
25. august 2004 - 15:23 #8
VB.NET programmeer og C# programmer og managed C++ programmer kræver .NET,
men unmanaged C++ programmer gør ikke !
Avatar billede bertelbrander Novice
25. august 2004 - 22:47 #9
Man kunne måske også bruge CreateDirectory (#include windows.h)
Avatar billede speedy Nybegynder
25. august 2004 - 22:51 #10
Jeps, det ender også med jeg kommer til at bruge den. Men fordelen ved SHCreateDirectoryEx var at den opretter mapperne rekursivt...
Det vil sige hvis jeg skriver:

SHCreateDirectoryEx(NULL, "D:\\Mappe1\\Mappe2\\Undermappe", NULL);

Så opretter den både Mappe1, Mappe2 og Undermappe hvis de ikke eksisterer....Men med CreateDirectory må jeg selv ind og splitte strengen op og oprette hver mappe manuelt...Men det bliver som sagt nok også den endelige løsning
Avatar billede arne_v Ekspert
25. august 2004 - 22:53 #11
Hent da PSDK og brug det.
Avatar billede speedy Nybegynder
25. august 2004 - 22:54 #12
Jeg er forholdsvis ny til C++ så jeg ved ikke lige hvor/hvordan?
Avatar billede bertelbrander Novice
25. august 2004 - 22:55 #13
Man kunne også bruge:

system("md D:\\Ole\\Peter\\Hans\\Temp");

Det virker også rekursivt.
Avatar billede arne_v Ekspert
25. august 2004 - 22:57 #14
Man downloader et kæmpe kit, installerer det og så sætter man compileren op til
at bruge include og lib derfra.

Men hvad var grunden til at du ikke bruge VC++ .NET ?
Avatar billede speedy Nybegynder
25. august 2004 - 23:01 #15
Okay
Jeg har ikke selv VC++ .NET men havde en kollega der lige testede det for mig...Men det kunne være jeg skulle få det installeret og bruge det i stedet.

Jeg har i hvert fald fået svar på mit spørgsmål, så hvis i begge lægger et svar, så i kan få lidt point...tak!
Avatar billede bertelbrander Novice
25. august 2004 - 23:06 #16
Jeg vil helst ikke have point.
Avatar billede arne_v Ekspert
28. august 2004 - 18:31 #17
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester