Programm aufrufen (Newbie)
-
Hi !
Ich möchte ein Programm (C:\programme\test.exe) nicht auf dem herkömmlichen Weg starten, sondern selbst ein C++ Programm schreiben, das dieses test.exe
aufruft.Kann mir bitte jemand sagen, mit welchen Befehlen ich das erreiche und welche header-Dateien ich brauche?
Ich stehe noch ziemlich am Anfang meiner "Programmier-Laufbahn".
So Sachen wie Ein- und Ausgabe, Variablen und Schleifen sind kein Problem, aber viel mehr Vorwissen könnt ihr bei mir nicht erwarten.Daher bitte möglichst verständlich und simpel schreiben, sodaß auch Newbies wie ich das verstehen können.Ich sage schon mal danke
Tschö.
-
unter windows würde ich in der msdn nach shellexecute
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shellexecute.asp
schauen, und winexec
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/winexec.asp
dann gibt es noch exec*#include <unistd.h> int execl(const char *path, const char *argv0, ...); int execle(const char *path, const char *argv0, ... /*, char *const envp[] */); int execlp(const char *path, const char *argv0, ...); int execlpe(const char *path, const char *argv0, ... /*, char *const envp[] */); int execv(const char *path, char *const argv[]); int execve(const char *path, char *const argv[], char *const envp[]); int execvp(const char *path, char *const argv[]); int execvpe(const char *path, char *const argv[], char *const envp[])
und es kann noch mit system aufgerufen werden, mit #include <stdlib.h>
ich würde jedoch die ersten beiden für windows preferieren, und exec für dos, je nach compiler.
-
Moin !
Erstmal danke 'elise' für die schnelle Antwort.
Also mit dem von Dir bereitgestellten Code konnte ich als Anfänger gar nichts anfangen, daher habe ich mich mal bei den von Dir angegebenen links durchgefriemelt.Ich habs dann auch tatsächlich geschafft.Herausgekommen ist folgendes Mini-Programm mit dem ich eine meiner Dateien namens 'MSDEV.exe' öffnen kann:
#include <windows.h>
void main (void)
{
ShellExecute(NULL, NULL, "MSDEV.EXE", NULL, NULL, SW_NORMAL);
}Okay, <windows.h> ist die benötigte header-Datei; ShellExecute ist halt der entscheidene Befehl und SW_NORMAL ist für die Darstellungsweise verantwortlich und könnte auch z.B. SW_MINIMIZE heißen.Aber was bewirken die ganzen 'NULL' in der Befehlszeile? Wäre nett, wenn mir dazu nochmal jemand was schreiben könnte.
Danke!
-
hi halimeh
auch da mache ich es mir einfach, weil es hier
http://www.todt.at/erich/download/samples/foxpro/shellexecute.htm
viel schöner erklärt istelise
-
Moin !
Ich habe mein Ziel erreicht und kann nun ein Programm schreiben (und verstehen), das seinerseits wieder andere Programme aufruft.Nochmal danke an 'elise'.
Aber auf dem von 'elise' angegebenen link habe ich noch andere nette Sachen gefunden, sodaß ich mein Programm folgendermaßen geändert habe:#include <windows.h>
void main (void)
{
ShellExecute(NULL,NULL, "http://www.gmx.de/", NULL,NULL,SW_NORMAL);
ShellExecute(NULL,NULL,"mailto://frogsen@freenet.de",NULL,NULL,SW_NORMAL);
}Dadurch wird nun keine exe-Datei gestartet, sondern eine URL angesteuert und das Standard-mail-Programm zum Versenden einer mail an 'frogsen...' gestartet.
Das Problem ist aber, das zu dem Zeitpunkt ja nicht zwangsläufig eine Internetverbindung aufgebaut sein muß.
Wie kann ich nun eine Anweisung in mein Programm einbauen, die auch dafür sorgt, daß eine Verbindung zum Internet hergestellt wird (ich selbst bin gerade in ne WG mit DSL gezogen-falls die Angaben benötigt werden) ?Vielen Dank und Grüße.
-
das hat nun alles nix mehr mit c++ standard zutun.
zum bleistift könntest du über
#include <ras.h>
gehen und folgendes machen:
HRASCONN hconid=NULL; RASDIALPARAMS rd; char* user="arcor"; char* pass="internet"; char* dfu="arcor"; rd.dwSize=sizeof(RASDIALPARAMS); strcpy(rd.szUserName,user); strcpy(rd.szPassword,pass); strcpy(rd.szEntryName,dfu); strcpy(rd.szPhoneNumber,"0192076"); RasDial(NULL,dfu,&rd,NULL,NULL,&hconid);
aber keine ahnung, wie du ins internet gehst... musst du ja wissen.
würde dich richtung winapi schieben ;=
-
elise *lol*
Der elise-Power-Dialer .... *fg*
MfG
[EDIT]Mir ist schon klar das ein kein "Böser"-Dialer ist
[/EDIT]
-
Moin elise !
Wie gesagt, meine ursprüngliche Frage (öffnen einer *.exe-Datei) ist ja beantwortet und darüber bin ich auch erstmal ganz froh.
Aber für meine neuerlichen Ambitionen (Starten der Internetverbindung, Aufrufen von URLs und Mailversand mit C++) hast Du mir ja eher WinApi nahegelegt.
Hab mich mal ein wenig im WinApi-Forum umgesehen.Ich muß sagen, daß ich da gar nichts verstehe.Dat hat (noch) keinen Zweck.
Ich behalte meine neuen Ziele mal im Hinterkopf und werde mich erstmal auf niedrigerer Ebene mit der WinApi-Programmierung vertraut machen.
Wenn Du (oder irgendwer) gute deutschsprachige Tutorials oder besser noch Literatur für absolute WinApi-Neulinge kennst, kannst das ja noch mal posten.Ansonsten:
Danke und Grüße.
-
eViLiSSiMo schrieb:
elise *lol*
Der elise-Power-Dialer .... *fg*
MfG
yeah
-
winapi, fällt mir dieses ein
http://www.win-api.denur: ich würde dir raten, erstmal c++ standard zu lernen, bevor du winapi machst.
oben rechts gibt es einen link zur tutorial seite des forums. da sind einige gutedie basics sind wichtig.
-
Hmm..
@elise
die Variable dfu... is das der name der dfü verbindung?Und reicht das kleine bischen schon um ne Verbindung aufzubauen? o_O
Und noch ne frage (weils grad spass macht*g*)
Öffnet das bloss eine Verbindung die geschlossen wird wenn das Prog aus is, oder wird dann die verbindung wie eine normale DFÜ Verbindung im systray angezeigt? ^^
-
die verbindung bleibt bestehen.
und vergiss nicht, die rasapi32.lib mitzulinken.
so long
-
Danke für die Info
werds bei gelegenheit mal testen