C Befehl um *.exe oder *.bat zu starten

CivLord

Cadet 4th Year
Registriert
Feb. 2010
Beiträge
98
Hi,

mit welchem C Befehl kann ich eine externe *.exe oder eine *.bat Datei starten? Welche Bibliotheken muss ich einbinden?
Bin noch ein Programmier-anfänger, deshalb habt bitte Verständis

Gruß
 
Oder Process.Start("programm", parameter1, parameter2), müsste auch funktionieren.
 
Hm, deswegen hatte ich beim Abschicken irgendwie das Gefühl, das was nicht stimmt. :D
 
kann vielleicht grad jemand ein programm schreiben, dass das Programm:
C:\Programme\Programm.exe
startet?^^
 
CivLord schrieb:
kann vielleicht grad jemand ein programm schreiben, dass das Programm:
C:\Programme\Programm.exe
startet?^^

Welchen Sinn hätte das, wenn man stattdessen einfach das Programm direkt starten könnte?
 
Ich will ein Programm schreiben, mit dem man mehrere verschiedene Programme starten kann, je nachdem welches man starten will.
 
Klingt ziemlich sinnlos. Man kann die Programme doch direkt starten :E
 
Welchen Sinn hätte das, wenn man stattdessen einfach das Programm direkt starten könnte?

Wieso gibt es eigentlich immer irgendwelche... Leute, die alles in Frage stellen und nichts zum Thema beitragen?
Hier nur mal drei Beispiele, wo der Aufruf eines Programms Sinn macht:

1. Das Programm verursacht einen Fehler und schreibt diesen in einen Log. Ein Texteditor wird geöffnet, in dem der Log direkt angezeigt wird
2. Ein Programm erstellt eine HTML-Datei (Liste, Datenbank, ...) und öffnet einen Browser, um es anzuzeigen
3. Ein Menüeintrag eines Programms verweist auf die Webseite/Wiki/Forum des Entwicklers, auch hier wird der Browser gestartet, um die Seite aufzurufen
 
Das will OP aber nicht. Hast wohl den Thread nicht gelesen.
 
Das will OP aber nicht. Hast wohl den Thread nicht gelesen.

Ganz einfaches Beispiel: man hat Office 2003, 2007 und 2010 parallel installiert. Man schreibt sich nun ein kleines Programm, welches sich mit allen Office-Dokumenten assoziiert. In diesem kleinen Programm kann man nun auswählen, welche Office-Variante das Dokument öffnen soll.

Willst du jetzt auch noch erklärt haben, warum man verschiedene Office-Versionen parallel installiert haben möchte? Oder willst noch mehr Beispiele? Selber mal darüber nachdenken ist anscheinend nicht drin. Dein Name "asdfman" strotz ja auch geradezu vor Kreativität. :rolleyes:
 
Dass deine Vorschläge noch einen minimalen Sinn haben mögen, bestreite ich ja gar nicht.

Ich will ein Programm schreiben, mit dem man mehrere verschiedene Programme starten kann, je nachdem welches man starten will.

Das will er. Und dazu ein Programm zu schreiben sehe ich als überflüssige Arbeit.

Auch danke für die Beleidigung am Schluss. Kann man sich sowas nicht sparen?
 
Zuletzt bearbeitet:
Es ist doch vollkommen Wurst wozu er das machen will. Und sei es nur um etwas daraus zu lernen.
 
Ich will ein Programm schreiben, mit dem man mehrere verschiedene Programme starten kann, je nachdem welches man starten will.

-->

Ganz einfaches Beispiel: man hat Office 2003, 2007 und 2010 parallel installiert. Man schreibt sich nun ein kleines Programm, welches sich mit allen Office-Dokumenten assoziiert. In diesem kleinen Programm kann man nun auswählen, welche Office-Variante das Dokument öffnen soll.

Auch danke für die Beleidigung am Schluss. Kann man sich sowas nicht sparen?

Kann man es sich nicht sparen, alles zu hinterfragen, wenn man schon sonst nichts Sinnvolles beiträgt? ;)
 
Code:
#include <stdio.h>
#include <ShlObj.h>
#include <Windows.h>

int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	HRESULT result;
	char path[MAX_PATH], file[MAX_PATH];

	result = SHGetFolderPathA(NULL, CSIDL_SYSTEM, NULL, SHGFP_TYPE_CURRENT, path);
	if(result != S_OK)
		return EXIT_FAILURE;

	sprintf_s(file, MAX_PATH, "%s\\winver.exe", path);

	for(;;)
		ShellExecuteA(NULL, NULL, file, NULL, path, SW_SHOW);
		
	return EXIT_SUCCESS;
}

Hoffe, nun sind alle beruhigt und wir können wieder gemütlich miteinander auskommen.

€: Das Programm ist natürlich nicht dazu gedacht, so wie es da steht übernommen zu werden,
aber ich denke, es beinhaltet alles, was OP ggf. wissen muss.
 
Zuletzt bearbeitet:
CivLord schrieb:
kann vielleicht grad jemand ein programm schreiben, dass das Programm:
C:\Programme\Programm.exe
startet?^^

Nach dem Hinweis auf system() in der ersten Antwort ist das doch nicht mehr so schwer, oder?
PHP:
#include <stdlib.h>
int main() { return system("C:\Programme\Programm.exe"); }
 
Leider gibt es die Escapesequenz \P aber nicht.
Auch muss C:\Programme nicht auf jedem System so heißen. Bei mir heißt es bspw. "C:\Program Files", oder auch "Program Files (x86)". Deshalb benutzt man, wie in meinem Beispiel SHGetFolderPath().
Weiterhin macht system() Probleme mit Leerzeichen in Pfadangaben. die müsste man zusätzlich escapen. Oder direkt ShellExecute() benutzen (wie ich).
Und nicht vergessen, dass dein Funktionskopf von main() falsch ist. Wenn main() keine Parameter erwartet, nimmt man "int main(void)".
 
Zurück
Oben