Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
MATTT Junior JLI'ler
Anmeldedatum: 18.06.2003 Beiträge: 59
Medaillen: Keine
|
Verfasst am: 10.01.2004, 17:07 Titel: Exe aufrufen |
|
|
hallo!
weiß jemand mit welchen funktionen ein normal Win32-Anwendung
andere Anwendungen starten kann _________________ Ist jetzt ganz neu geschrieben (mit coolen Bilder):
www.matthias.heimspiel.de |
|
Nach oben |
|
|
Sören JLI Master Trainee
Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 10.01.2004, 17:10 Titel: |
|
|
ShellExecute(); heisst die Funktion, welche Parameter diese hat und was sie bedeuten findest du in der VC++ Hilfe. |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 10.01.2004, 21:43 Titel: |
|
|
das Thema hatten wir hier schön mindestens 2xmal:
aber:
system("Dos Befehl");
oder
wenn du nicht warten willst, bis das Programm beendet ist, was du aufrufen willst:
WinExec("Dos Befehl",SW_SHOW);
statt SW_SHOW kannst du auch SW_HIDE, SW_MINIMIZE, ... verwenden _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 10.01.2004, 22:24 Titel: |
|
|
gibt es eine linux alternative zu WinExec ? |
|
Nach oben |
|
|
Mazze JLI'ler
Alter: 39 Anmeldedatum: 02.01.2004 Beiträge: 145
Medaillen: Keine
|
Verfasst am: 10.01.2004, 22:42 Titel: |
|
|
xardias hat Folgendes geschrieben: | gibt es eine linux alternative zu WinExec ? |
Was macht "WinExec" genau?
..zum ausführen ist man z.b. bei diesen Funktionen nicht verkehrt,allerdings ersetzen diese den momentanen Prozess:
Code: |
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg , ..., char * const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
|
"system" gibt es auch...sollte man aber afaik aufgrund einiger Sicherheitsdefizite vermeiden...gilt afaik auch für Window.... |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 11.01.2004, 12:19 Titel: |
|
|
WinExec sollte man aber nicht verwenden, wenn mans für ein 32-Bit Windows verwenden will. Das is nämlich die 16-Bit Variante und die läuft AFAIK nich auf WinXP.
@Mazze: Welche Sicherheitsmankos gibts denn bei system()? _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 11.01.2004, 12:39 Titel: |
|
|
The Lord of Programming hat Folgendes geschrieben: | WinExec sollte man aber nicht verwenden, wenn mans für ein 32-Bit Windows verwenden will. Das is nämlich die 16-Bit Variante und die läuft AFAIK nich auf WinXP.
|
Falsch!
Jede Windowsversion ist zur vorherigen abwärtskompatibel. Und DOS war ja auch der Vorgänger von allen Windowsversionen und wird immer noch unterstützt so auch der system() Befehlsaufruf, und unter WindowsXP funktioniert der WinExec() Befehlsaufruf wunderbar!! _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 11.01.2004, 13:11 Titel: |
|
|
Dann schau mal bitte in der MSDN unter WinExec. Bei mir steht da zumindest:
Die MSDN hat Folgendes geschrieben: | The WinExec function runs the specified application.
This function is provided for compatibility with 16-bit Windows. Win32-based applications should use the CreateProcess function.
UINT WinExec(
LPCSTR lpCmdLine, // address of command line
UINT uCmdShow // window style for new application
); |
Ich habs selbst probiert: Bei meinem Win98 hats ausgezeichnet gefunzt. Später auf nem anderen PC mit WinXP hats überhaupt nich mehr gefunzt. Ich hab den Pfad tausendmal überprüft. Immer kam ein Fehler... _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 11.01.2004, 14:29 Titel: |
|
|
also bei mir geht's unter Windows XP einwandfrei.
Außerdem steht da "should" = sollte, ist also nicht zwingend erforderlich.
Aber okay, kann anscheinend doch zu Problemen führen.. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
magynhard Super JLI'ler
Anmeldedatum: 26.04.2003 Beiträge: 461 Wohnort: Wild durch die Welt ;-) Medaillen: Keine
|
Verfasst am: 04.02.2005, 10:25 Titel: |
|
|
Zitat: | Jede Windowsversion ist zur vorherigen abwärtskompatibel. Und DOS war ja auch der Vorgänger von allen Windowsversionen und wird immer noch unterstützt so auch der system() Befehlsaufruf, und unter WindowsXP funktioniert der WinExec() Befehlsaufruf wunderbar!! |
Woher hast Du denn diesen Quark?
Nur Win9x und WinME sowie die noch relativ bekannte 3.11er und deren Vorgänger sind DOS-basiert.
Die NT-Reihe (NTx,2000,2003,XP) hat mit DOS eigentlich gar nichts zu tun.
Nur waren die Microsoft-Leute so "gutherzig" und haben allerlei veraltetes Zeug (gleichnamige Befehle) in die NT-Reihe mitreingepackt, damit diese teils kompatibel arbeiten kann.
So mein Wissensstand. _________________ Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
|
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 04.02.2005, 10:40 Titel: |
|
|
Threadersteller
http://83.246.114.104/patrick/schnippel.php?id=9
Finger weg von ::system(command); hab schon oft genug gesagt wieso.
TheMillenium
DOS ist nicht der Vorgänger von Windows, es ist wirklich Windows NT (Erschien 1986 mit "GUI").
DOS war sogesehen nur der Kernel für die GUI's Windows 9x und ME. Die NT serie ist um einiges älter und die sind nicht Abwärtskompatibel zu den DOS-Serien-GUIs. (zum glück!)
Der system-Befehl kam aus den Batch-Zeiten von DOS wo man noch keine richtigen Programme in C programmiert hat sondern in Assembler. Allein schon die unsicherheit von system (rückgabewerte, exceptions, warnings, spezifikationen) sollte dazu anregen dieses verbleibsel aus verdammt alten Zeiten nicht mehr zu benutzen.
Und bei den ersten NT-Systemen gabs system nicht, dort wurde alles mit ShellExecute oder CreateProcess gehandhabt. _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
FH Super JLI'ler
Alter: 36 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 04.02.2005, 20:44 Titel: |
|
|
Auch, wenn mich jetzt alle Schlachten, weil es aus der Process.h kommt (net Standard, soweit ich weiß):
_spawn und _exec, davon gibts mehrere Versionen, gekennzeichnet mit einem zusätzlichen Buchstaben am Ende. ich nutze _spawnl und _execl. Die gibts auch als Unicode... z.B. _wspawnl.
Lass dich jetzt net verwirren... Es gibt, wie du siehst, viele Wege zum Ziel. Am besten, du guckst mal alle ganz in Ruhe in der Doku an und suchst dir dann den aus, der dir am besten gefällt.
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
|
|