Datei über C++ Programm starten
-
Erstmal danke für die flotte Antwort.
Kóyaánasqatsi schrieb:
Zu den Verknüpfungen:
Ich kann dir nicht sagen ob das mit den Verknüpfungen hinhauen wird. Eventuell musst du direkt die Dateien starten.Das kann gut möglich sein. Soll ich als "Dateiname" das Ziel, also den Ort der Datei die von der Verknüpfung gestartet wird, eingeben?
#include <iostream> #include <windows.h> using namespace std; int main() { ShellExecute(NULL, "open", "bf2mini-skl.mds", NULL, NULL, SW_SHOW); return 0 ; }Fehlermeldung: "Keine Hostanwendung angegeben. Sie können sie im Ausführen Menü, Parameter festlegen."
-
Ich glaube auch das es mit der Verknüpfung nicht funktioniert.
Ansonsten kannst du, wenn du es einfach haben willst, du Windows hast und das Programm nur für dich ist, es mit einem system-Befehl starten.system("start diedatei.exe");Mit ShellExecute kannst du es so versuchen
#include <windows.h> int main() { ShellExecute(NULL, "open", "diedatei.exe", NULL, NULL, SW_SHOW); }
-
Es funzt! Sau gut, vielen Dank

Bin grade echt begeistert von der schnellen und guten Hilfe hier *großes Lob aussprech*.Eine Kleinigkeit is da aber noch. Ich würde gern ein überflüssiges Fenster, das aufgeht, wenn Programm "A" gestartet wird, direkt schließen. Könnt ihr mir da bitte noch helfen?
MfG
JannisEdit:
Leider wird das zweite Programm nicht ausgeführt.
#include <windows.h> int main() { ShellExecute(NULL, "open", "C:\\Programme\\EA GAMES\\Battlefield 2\\bf2mini-skl.mds", NULL, NULL, SW_SHOW); ShellExecute(NULL, "open", "C:\Programme\EA GAMES\Battlefield 2\BF2.exe" +menu 1 +fullscreen 1, NULL, NULL, SW_SHOW); }
-
Natnet schrieb:
ShellExecute(NULL, "open", "C:\\Programme\\EA GAMES\\Battlefield 2\\bf2mini-skl.mds", NULL, NULL, SW_SHOW); ShellExecute(NULL, "open", "C:\Programme\EA GAMES\Battlefield 2\BF2.exe" +menu 1 +fullscreen 1, NULL, NULL, SW_SHOW);Fällt dir was an den \ auf ? Im 1. ist es richtig.
Für Programme schließen, könntest du evtl. das benutzen, hab ich jetzt eben mal gegooglet.
http://www.neurophys.wisc.edu/ravi/software/killproc/
-
Nur zur Info, bevor die nächste Frage kommt, der Code von FreakY<3Cpp's Link ist nur für "Microsoft Windows 95/98/ME/NT/2000/XP" verfügbar.
-
Übrigens ist
ShellExecuteeine WinAPI Funktion, du bist also im falschen Forum. Und die nachfolgenden zwei Zitate beweisen es nur zu gut:Kóyaánasqatsi schrieb:
Zu den Verknüpfungen:
Ich kann dir nicht sagen ob das mit den Verknüpfungen hinhauen wird. Eventuell musst du direkt die Dateien starten.FreakY<3Cpp schrieb:
Ich glaube auch das es mit der Verknüpfung nicht funktioniert.
Ihr liegt beide falsch, man kann Verknüpfungen über ShellExecute starten. Man muss nur nicht vergessen, dass eine Verknüpfung die Dateiendung
*.lnkhat, auch wenn diese normalerweise im Explorer nicht angezeigt wird.FreakY<3Cpp schrieb:
Fällt dir was an den \ auf ? Im 1. ist es richtig.
Nicht nur das, er hat auch die zusätzlichen Parameter ausserhalb des Stringliterals gelassen.
Um ein Fenster eines externen Prozess zu schliessen, gibt es zwar ein paar Möglichkeiten, aber ich rate von allen ab. Nicht nur, dass zum Teil Anti-Virus Software darauf reagiert, sondern auch der anderen Prozess könnte darauf falsch reagieren und ein Fehlverhalten auslösen.
In der WinAPI gäbe es allerdings dieEnumWindowsFunktion (bzw.EnumChildWindows,EnumThreadWindows) und dieWM_CLOSENachricht. Aber wenn du nicht mal einShellExecutehinbekommst, könnte das ein Stufe zu hoch sein
Grüssli
-
[gelöscht]
-
FreakY<3Cpp schrieb:
Fällt dir was an den \ auf ? Im 1. ist es richtig.
Dravere schrieb:
Nicht nur das, er hat auch die zusätzlichen Parameter ausserhalb des Stringliterals gelassen.
Danke, ich hatte es einmal mit doppel-Backslash und einmal so, dass ich den "Anhang" weggelassen hab, aber beides kombiniert hab ich natürlich nich.

Dravere schrieb:
Übrigens ist
ShellExecuteeine WinAPI Funktion, du bist also im falschen Forum.Tut mir leid, wusste ich nicht. Werde es das nächste mal richtig machen.

Dravere schrieb:
In der WinAPI gäbe es allerdings die
EnumWindowsFunktion (bzw.EnumChildWindows,EnumThreadWindows) und dieWM_CLOSENachricht.Was ist bei einem normalen Windows-Fenster zu empfehlen und wie wende ichs an?
Dravere schrieb:
Aber wenn du nicht mal ein
ShellExecutehinbekommst, könnte das ein Stufe zu hoch sein
Wie schon gesagt bin ich ein Anfänger. Nun weiß ich ja wie man ShellExecute anwendet - und lernen muss man immer, bevor man etwas kann

Wie kann ich das Programm für eine bestimmte Zeit pausieren? (Den Befehl "system("pause");" kenne ich bereits, aber ich möchte, dass das Programm nach einer bestimmten Zeit automatisch weiterläuft.)
Danke wieder mal allen für die Hilfe

Gruß
Jannis
-
Natnet schrieb:
Wie kann ich das Programm für eine bestimmte Zeit pausieren? (Den Befehl "system("pause");" kenne ich bereits, aber ich möchte, dass das Programm nach einer bestimmten Zeit automatisch weiterläuft.)
Da wäre wohl die Funktion
Sleep()etwas. Aber lass dir gesagt sein, dass die Auflösung nicht allzu hoch ist.
-
Es klappt, danke dafür

Aber vielleicht sollte man noch dazusagen, dass man <unistd.h> einbinden muss und die Zeitangabe in Millisekunden macht.#include <unistd.h> int main() { sleep(5000); }Das Programm wird also für 5 Sekunden (5000 Millisekunden) angehalten.
-
Hallo Leute,
soweit klappt alles, wie ichs mir vorgestellt hab bis auf das Fenster, das ich gerne schließen würde und, dass die Konsole nicht angezeigt werden soll.
Könnt ihr mir da bitte nochmal weiterhelfen, dann versprech ich auch euch nimmer zu nerven

Gruß
Jannis
-
Natnet schrieb:
Aber vielleicht sollte man noch dazusagen, dass man <unistd.h> einbinden muss und die Zeitangabe in Millisekunden macht.
Nein, er hätte dir lieber sagen sollen, dass du
<windows.h>auf Windows einbinden musst, weil er eigentlich die folgende Funktion gemeint hat:
Sleep Function (Windows) - MSDN<unistd.h>ist ein POSIX C Header. Nicht so ganz das richtige auf einem Windows System.Natnet schrieb:
Könnt ihr mir da bitte nochmal weiterhelfen, dann versprech ich auch euch nimmer zu nerven

1. Wenn du gesucht hättest, dann hättest du sicher was gefunden, zum Beispiel die Dokumentation:
Window Functions - MSDN
Da hat es zu den Funktionen auch immer ausführliche Beispiele und How To's.
2. Die Tatsache bleibt gleich, dass man ein fremdes Fenster nicht einfach so schliessen sollte, da dies meistens nicht vorgesehen ist. Ich rate immer noch dringend davon ab.
3. Wenn man natürlich mehr Informationen hätte, könnte man vielleicht Alternativen finden. Vor allem auch, wenn du ins richtige Forum ziehen würdest. Denn dein aktuelles Problem hat ja nichts mehr mit dem Threadtitel zu tun. Normalerweise macht man hier pro Problem einen neuen Thread auf. Und es ist hier wie gesagt, sowieso sinnvoll einen neuen Thread zu erstellen, damit du bessere Hilfe bekommen kannst.Grüssli
-
Dravere schrieb:
Nein, er hätte dir lieber sagen sollen, dass du
<windows.h>auf Windows einbinden musstAlles klar, schon geändert

Dravere schrieb:
Wenn du gesucht hättest, dann hättest du sicher was gefunden
Selbstverständlich habe ich zuerst gesucht, bin auch fündig geworden. Aber aus den Forenbeiträgen werde ich nicht schlau, da der eine "A" und der andere "Ich würde B empfehlen!" sagt

Dravere schrieb:
zum Beispiel die Dokumentation:
Window Functions - MSDN
Da hat es zu den Funktionen auch immer ausführliche Beispiele und How To's.Auf dieser Seite war ich noch nicht, hab da jetzt die "CloseWindow-Funktion" gefunden.
Danke dafür
Dravere schrieb:
Die Tatsache bleibt gleich, dass man ein fremdes Fenster nicht einfach so schliessen sollte, da dies meistens nicht vorgesehen ist. Ich rate immer noch dringend davon ab.
msdn schrieb:
The CloseWindow function minimizes (but does not destroy) the specified window.
"close, but doesn't distroy"? Klingt doch gut, scheint das zu sein, was ich suche.
Dravere schrieb:
Wenn man natürlich mehr Informationen hätte, könnte man vielleicht Alternativen finden. Vor allem auch, wenn du ins richtige Forum ziehen würdest. Denn dein aktuelles Problem hat ja nichts mehr mit dem Threadtitel zu tun. Normalerweise macht man hier pro Problem einen neuen Thread auf. Und es ist hier wie gesagt, sowieso sinnvoll einen neuen Thread zu erstellen, damit du bessere Hilfe bekommen kannst.
Ich dachte, je mehr Threads ich öffne, desto mehr Verwirrung stifte ich. Und ich wollte den Mods nicht so viel Arbeit mit dem löschen und sortieren machen. Dass ich damit genau das Gegenteil erzielt habe, war keine Absicht.
Werde ich gleich beheben.Danke für die Hinweise.

Jannis