ShellExecute
-
Hallo Zusammen,
Vor kurzem habe ich wieder angefangen, mir C anzuschauen.
Ich hab mir ein Tutorial herausgesucht. Dieses habe ich mir mal angeguckt, und bin dabei auf ShellExecute gestossen. Nun möchte ich gerne wissen, ob man Parameter verwenden kann in ShellExecute.Bis jetzt sieht das so aus:
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(int argc, char *argv[]) { ShellExecute(NULL, "open", "Notice.txt", NULL, "C:\\Users\\joel\\Desktop", SW_SHOW); system("PAUSE"); return 0; }
Wie ihr erkennt, will ich die 'Notice.txt' auf meinem Desktop öffnen.
Nun will ich das Programm aber so schreiben, dass ein gewisser Hans Meier dieses Dokument, davon ausgehend er hat auch eine Notice.txt auf seinem Desktop, öffnen kann. Dazu brauche ich nicht "C:\\Users\\joel\\Desktop", sondern "C:\\Users\\Hans\\Desktop". Da ich aber nicht weiss, ob sein Konto wirklich unter Hans läuft, muss ich das herausfünden.
Ich habe in google recherchiert, und herausgefunden, dass es getenv() gibt.Ich möchte eine Mischung zwischen
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(int argc, char *argv[]) { printf("Path = %s\n", getenv("USERNAME")); sleep(10000); return 0; }
und
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(int argc, char *argv[]) { ShellExecute(NULL, "open", "Notice.txt", NULL, "C:\\Users\\joel\\Desktop", SW_SHOW); system("PAUSE"); return 0; }
machen.
Das heisst, dass das dann irgendwie so funktionieren würde:
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(int argc, char *argv[]) { ShellExecute(NULL, "open", "Notice.txt", NULL, ("C:\\Users\\%s\\Desktop", getenv("USERNAME"))), (SW_SHOW); system("PAUSE"); return 0; }
So funktioniert das leider nicht.
Oder um es in Batch auszudrücken:"C:\Users\%USERNAME%\Desktop\Notice.txt"
Fazit: Ich möchte ShellExecute mit einer Variable in dem Befehl ausführen können.
Kann mir jemand irgendiwe helfen?
Wäre sehr nettFragen?
Los! ^^MfG
-
So vielleicht:
char pfad[300]; sprintf(pfad,"C:\\Users\\%s\\Desktop\\",getenv("USERNAME")); ShellExecute(NULL, "open", "Notice.txt", NULL, pfad, SW_SHOW);
Gruß,
DC
-
Dann bau den Pfad mit sprintf zusammen.
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(int argc, char *argv[]) { char pfad[256]; // oder was immer auch die Maximallänge bei Windows ist sprintf(pfad, "C:\\Users\\%s\\Desktop", getenv("USERNAME")) ShellExecute(NULL, "open", "Notice.txt", NULL, pfad, SW_SHOW); system("PAUSE"); return 0; }
-
Für Windows sollte auch einfach und ohne WinAPI-Geraffel gehen:
system("cmd /c \"%HOMEPATH%\\Desktop\\Notice.txt\"");
-
Wutz schrieb:
Für Windows sollte auch einfach und ohen WinAPI-Geraffel gehen:
system("cmd /c \"%HOMEPATH%\\Desktop\\Notice.txt\"");
Ist aber sehr langsam.
-
Vielen Dank!
An die Variante mit sprintf() habe ich gar nicht gedacht..Danke viel mal, und schöne Weihnachten!
-
bl4ckto0l schrieb:
Nun möchte ich gerne wissen, ob man Parameter verwenden kann in ShellExecute.
Was ist denn das?