Befehl zum öffnen eines anderen Programms
-
Hi,
ich habe eine Ausbildung zum Fachinformatiker angefangen.
Seid dem interessiere ich mich total für C++ .
Hab auch schon ein paar kleine programme geschrieben...
zB. ganz normal ein Taschenrechner
oder ein Projekt das ich noch weiterführen werde.
Das Programm zeigt dir bei Länder Eingabe die Hauptstadt an.
So jetzt hab ich ein anderes Projekt geplant.
Ein Prog. das beim Computerstart sich öffnen soll
und mir auswahlmöglichkeiten geben soll
z.B Internetbrowser öffnen
oder bestimmten pfad im pc angeben.Meine Frage:
Wie macht man einen solchen Aufruf?
Also der Befehl das er ein anderes Prog öffnet.Über schnelle Hilfe bin ich sehr Dankbar
Mfg chewee
-
system()
Aber vermute ich recht, daß Du mit windows-spezifischen Funktionen besser bedient wärst? Die können ein wenig mehr.
Die nächste Frage ist, ob Du wirklich C++ machst oder C++/CLI? Geht es um eine WinForms-Anwendung?
-
Hi
ich weiß jetzt nicht recht was der unterschied zwischen c++ und c++/cli ist.
also das ist mein code bis jetzt#include<iostream> #include<string.h> using namespace std; char w; void openfirefox() { [b]????????????????????????????????????????[/b] } void openhddA() { } void openhddG() { } int main() { while(w!='4') { cout << "\n\tHallo Nico\n"; cout << "Was moechtest du tun? \n"; cout << "(1) Firefox oeffnen...\n"; cout << "(2) Festplatte A: oeffnen...\n"; cout << "(3) Externe Festplatte oeffnen...\n"; cout << "(4) Beenden!\n\t"; cin >> w; switch(w) { case '1': openfirefox(); break; case '2': openhddA(); break; case '3': openhddG(); break; case '4': cout <<"\n\tAuf Wiedersehen!\n"; break; } } }
wobei bei den ??????????? der aufruf von firefox stattfinden soll....
-
Vielleicht sowas:
system("start c:/Programme/Mozilla/Firefox/firefox.exe");//Bin gerade zu faul, den Pfad rauszusuchen
Oh, hdda klingt dann doch ein wenig unwindowsig.
system("/usr/bin/firefox");Und falls Dein Buch Dir wirklich globale Variablen und <string.h> beigebracht hat, wirf es schnell weg. Sogar, wenn Jürgen Wolf drauf stehen würde.
-
Nein kein Buch sondern Lehrer...:D
Und ich mache die Ausbildung jetzt seit 2 Monaten.
Ich denke das der Lehrer uns nur zeigt was alles geht
deshalb die globalen Variablen.Was meinste denn damit?
Oh, hdda klingt dann doch ein wenig unwindowsig.
und bei dem Befehl system sagt er mir das der nicht deklariert ist...
-
Als Fachinformatiker solltest Du Dir aber ganz schnell die richtigen Begrifflichkeiten aneignen. Ein Programm öffnet man nicht, sondern man führt es aus. Und was meinst Du mit "Festplatte A: öffnen"?
Überhaupt werden Festplatten nur unter Windows mit Buchstaben bezeichnet. Aber ich fürchte, dass ein Fachinformatiker eher ein Spezialist für ein Betriebssystem eines einzelnen Herstellerst ist. So ist die Welt halt.
-
Hi
Als Fachinformatiker solltest Du Dir aber ganz ....
Fachinformatiker???
Ich bin seit 2 Monaten in der Ausbildung zu einem Informatiker.
Meinste ich bin mit einem Buch zum beispuiel IT-Systeme zur Welt gekommen?
Ganz sicher nicht und du auch nicht also erzähl mir bitte kein Qutsch.
Auf meine Fragen hast du auch nicht geantwortet daher war dein Kommentar völlig fehl am Platz
Danke für nichts tntnet....
-
tntnet schrieb:
Als Fachinformatiker solltest Du Dir aber ganz schnell die richtigen Begrifflichkeiten aneignen. Ein Programm öffnet man nicht, sondern man führt es aus.
Ach, manchmal öffne ich sie auch.
tntnet schrieb:
Und was meinst Du mit "Festplatte A: öffnen"?
Ist im Kontext auch völlig klar.
Ah, im Code steht, daß er Windows benutzt.tntnet schrieb:
Überhaupt werden Festplatten nur unter Windows mit Buchstaben bezeichnet.
Komisch. Ist /dev/hda sehr unbuchstabig? Im Code das hdda sah fast so aus.
Ich schiebs mal nach WinApi, damit ihm jemand ShellExecute vorschlagen kann. Damit kriegt man auch prima Festplatten auf.
-
Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ (auch C++0x, bzw. C++11) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
chewee schrieb:
Hi
Als Fachinformatiker solltest Du Dir aber ganz ....
Fachinformatiker???
Ich bin seit 2 Monaten in der Ausbildung zu einem Informatiker.
Meinste ich bin mit einem Buch zum beispuiel IT-Systeme zur Welt gekommen?
Ganz sicher nicht und du auch nicht also erzähl mir bitte kein Qutsch.
Auf meine Fragen hast du auch nicht geantwortet daher war dein Kommentar völlig fehl am Platz
Danke für nichts tntnet....Ach bitte schön. Gern geschehen. Und Danke für Deine "freundliche" Antwort.
Was ich mit meinem Kommentar erreichen wollte, war eigentlich eine Anregung, mal darüber nachzudenken. Ich bin selbst Linux-Anwender und finde es einfach schade, dass sich solche Windows-Denkweisen eingebürgert haben. Noch immer habe ich die Hoffnung nicht aufgegeben, dass wenigstens ein Informatiker mal lernt, dass es neben Windows noch was anderes gibt. Es war einfach ein Tipp, aber wenn Du das als "nichts" ansiehst und beleidigt bist, wenn ich auf Deine Frage nicht antworte, dann tut mir das leid.
-
Mir ist durchaus bewusst das es noch andere Betriebssysteme gibt.
Aber ich habe diese anwendung ja für mich geschrieben
und ich benutze hier zuhause nun mal windows
da bringt es mir nichts das ich weiß wie die festplatte bei linux heißt.So zurück zum Thema:
Ich habe es jetzt hinbekommen
allerdings nur dur neuinstallation von firefox
der installatinspfad darf keine leerzeichen enthalten.
Hat jemand ne Ahnung wie ich dem Kompiler klar machen kann das nach dem Leerzeichen bei C:\Program (x86)\.... noch nicht zu ende ist?
-
Den Aufruf in Hochkommata einfassen.
-
Den Aufruf in Hochkommata einfassen.
Wie meinst du das?
Ich habe es einmal so probiert:system("start 'C:/Program/Mozilla/firefox.exe'");
so:
system'("start C:/Program/Mozilla/firefox.exe")';
und so:
'system("start C:/Program/Mozilla/firefox.exe'")';
funktioniert alles nicht
-
1. Verwende SHellExecute
2. Pfad-Trenner ist \
2. Bist Du sicher, dass es den Pfad gibt?
-
Achso so \ und nich so / is klar:D
nur falsch abgetippt...
Ja den Pfad gibt es auf jeden fall.
Hmm Shellexecutor klingt nach was neues (für mich)
deswegen lass ich das erstmal.
Wird in der Ausbildung sicherlich noch ran kommen.
Wär nett wenn "DocShoe" nochmal weiter auf sein kommentar eingehen würde.
-
Ein Backslash \ in einem C Source Code (z.b. in Strings) wird für gewöhnlich als "\" verwendet.
Also so:"C:\\Program\\Mozilla\\firefox.exe"
HTH,
MartinÜbrigens, wie hast Du es geprüft, ob der Pfad tatsächlich da ist?
Weil der Pfad "C:\Program\..." gibt es genau so nämlich nicht (jedenfalls nicht bei default Windows Installationen)
-
Mmacher schrieb:
Übrigens, wie hast Du es geprüft, ob der Pfad tatsächlich da ist?
Weil der Pfad "C:\Program\..." gibt es genau so nämlich nicht (jedenfalls nicht bei default Windows Installationen)Ne den Ordner hab ich extra angelegt.
system("start A:\bla bla\LuH.exe");
so sieht jetzt der Versuch aus, leider vergebens.
Und das ist die Fehlermeldung:
"A:◘la" konnte nicht gefunden werden.Stellen Sie sicher.....
-
Hallo chewee,
so hat es keinen Sinn.
Wir wissen nicht, wie Deine Pfade aussehen. Also die genaue Bezeichnung des angelegten Pfads. Und die genaue Bezeichnung des Strings in Deinem Source-Code.Am besten, poste nochmal Deinen Code (letzter Stand) hierher. Dann sehen wir wie Du versuchst auf den Pfad zuzugreifen.
Übrigens: Bitte kopiere den Pfad rein, nicht abtippen! Wir sind schon so oft auf solche banalen Anfängerfehler reingefallen.chewee schrieb:
"A:◘la" konnte nicht gefunden werden.Stellen Sie sicher.....
Das ist für mich ein klarer Hinweis darauf, daß Du meinen Text vorhin nicht richtig gelesen hast!
Nochmal die Preisfrage: Wie gebe ich als C-Programmierer den Backslash in den String ein?Martin
-
So...
#include<iostream> #include <stdlib.h> using namespace std; char w; void openfirefox() { [b]system("start A:\bla bla\LuH.exe");[/b] } void openhddA() { system("start A:"); } void openhddG() { system("start G:"); } int main() { while(w!='4') { cout << "\n\tHallo Nico\n"; cout << "Was moechtest du tun? \n"; cout << "(1) Firefox oeffnen...\n"; cout << "(2) Festplatte A: oeffnen...\n"; cout << "(3) Externe Festplatte oeffnen...\n"; cout << "(4) Beenden!\n\t"; cin >> w; switch(w) { case '1': openfirefox(); break; case '2': openhddA(); break; case '3': openhddG(); break; case '4': cout <<"\n\tAuf Wiedersehen!\n"; break; } } }
und das was Fett gedruckt ist da steht
system("start A:\bla bla\LuH.exe");
und bei "bla bla" ist ein Leerzeichen.
Und wenn ich das Prog ausführen will und ich die nummer 1 eintippe
kommt ein fenster mit der Fehlermeldung:"A:◘la" konnte nicht gefunden werden.Stellen Sie sicher.....
Nun leider lassen sich manche Pfade nicht mehr ändern ohne Neuinstallation.
Also wie sage ich dem Kompiler das bei dem Leerzeichen nicht schluss ist sondern erst wenn die Zeile zuende ist oder so?
-
chewee schrieb:
system("start A:\bla bla\LuH.exe");
system("start \"A:\*bla bla\*LuH.exe\"**");