PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eine andere Datei laden


confuso
29.04.2002, 20:11
Hi

wie kann ich mit c++ eine (oder auch 2) dateien laden?


also die dateien heißen jetzt datei1.exe und datei2.exe , wie geht des? wenn das mit c++ NICHT gehen sollte, dürfens auch andere dateien sein!


mfg
confuso


DerWolf
29.04.2002, 20:38
Hi confuso, mir is nich ganz klar was du unter "laden" verstehst? Kannst du mir das bitte etwas genauer erklären?

Bolle
29.04.2002, 20:49
also wenn ich richtig verstehe, meinst du datein zum bearbeiten öffnen.
das kannst du über ifstreams oder auch fstreams machen.

/* Billiges Prog zum auslesen von Datein */
#include <iostream>
#include <fstream>

int main(int argc, char *argv[])/* argv is ein zeiger auf eventuell übergebene parameter an das prog */
{
if(argc != 2) // Parameter vorhanden?
{
cerr << &quot;Benutzung: bla dateiname&quot; << endl;
}
ifstream datei(argv[1], ios::in|ios::binary); // Datei einlesen
if( !datei) // Wenn Datei nicht vorhanden, Fehler ausgeben und stoppen
{
cerr << &quot;Fehler bei oeffnen der Datei&quot; << endl;
}
char zeile[80]; // In diesen Array wird die Datei eingelesen
int i = 0;
while(datei.getline(zeile, 80)) // Datei in Array Zeile einlesen
{
cout << zeile << endl;
if( ++i == 20)
{
i = 0;
cout << &quot;\n Weiter mit Enter&quot; << endl;
cin.sync(); cin.get(); // Eingabespeicher leeren und Return abwarten
}
}
if( datei.eof()) // Datei zu Ende?
{
cerr << &quot;Ende der Datei erreicht&quot; << endl;
}
return 0;
}


das is ein kleines program, welches eine datei auf dem bildschirm ausgibt
kannst dir ja mal anschauen.

confuso
29.04.2002, 21:08
ähm, ich meine eigentlich, das eine andere exe datei geldaden wird, also, das die startet!

z.B.

1. datei: mirc.exe
2. datei: hl.exe


dann werden mirc.exe und hl.exe gestartet!

DerWolf
29.04.2002, 21:54
Axo, na das is ganz einfach:
Einmal kannst du das mit UINT WinExec(
LPCSTR lpCmdLine, // address of command line
UINT uCmdShow // window style for new application
);
machen oder mit HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);. Kleines Beispiel Programm für WinExec:#include <windows.h>

int main () {
WinExec(&quot;C:\\WinNT\\Notepad.exe&quot;, SW_SHOW);
return 0;
}Beispiel zu ShellExec:#include <windows.h>

int main () {
HWND h;
ShellExecute(h, NULL, &quot;C:\\WinNT\\Notepad.exe&quot;, &quot;&quot;, &quot;C:\\&quot;, SW_SHOW);
return 0;
}Es gibt da noch CreateProcess das man eigentlich verwenden sollte, aber da müsst ich selbst erst schaun wie das noch genau ging :) Ich hoff das hier hilft fürs erste, cu

confuso
30.04.2002, 14:04
hmm... bei mir funzt des net so richtig! entweder findet mien compiler irgendwelche fehler, oder es funzt net...


kann vielleicht des einer mit seinem compiler proggen?


also ich müsste eigentlich nur eine im gleichen verzeichnis (run.exe) und eine im verzeichnis IRC/irc.exe laden! kann des einer machen? is ein windows dedicated server!



---------------------------



oh, funzt doch, habe im pfad einfach \ mit / ausgewechselt :)



thx nochmal

confuso
30.04.2002, 14:44
Original von DerWolf
Axo, na das is ganz einfach:
Einmal kannst du das mit UINT WinExec(
LPCSTR lpCmdLine, // address of command line
UINT uCmdShow // window style for new application
);
machen oder mit HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);. Kleines Beispiel Programm für WinExec:#include <windows.h>

int main () {
WinExec(&quot;C:\\WinNT\\Notepad.exe&quot;, SW_SHOW);
return 0;
}Beispiel zu ShellExec:#include <windows.h>

int main () {
HWND h;
ShellExecute(h, NULL, &quot;C:\\WinNT\\Notepad.exe&quot;, &quot;&quot;, &quot;C:\\&quot;, SW_SHOW);
return 0;
}Es gibt da noch CreateProcess das man eigentlich verwenden sollte, aber da müsst ich selbst erst schaun wie das noch genau ging :) Ich hoff das hier hilft fürs erste, cu




hmm... also es funzt doch noch nicht so richtig! dieses ShellExec war net schlecht, aber ich würde gerne vom working dir ausgehen, also im ordner dateien liegen die dateien datei1.exe und im uverzeichnis die datei datei2.exe


also z.b.

C:\\dateien/datei1.exe
C:\\dateien/uverz/datei.exe

und im quellcode nur

&quot;datei1.exe&quot;, &quot;uverz/datei.exe&quot;



versteht ihrs so einigermaßen?

DerWolf
30.04.2002, 20:21
na dann schreib einfach:#include <windows.h>

int main () {
HWND h;
ShellExecute(h, NULL, &quot;.\\datei1.exe&quot;, &quot;&quot;, &quot;.&quot;, SW_SHOW);
ShellExecute(h, NULL, &quot;..\\uverz\\datei2.exe&quot;, &quot;&quot;, &quot;.&quot;, SW_SHOW);
return 0;
}oder?

xOOn
30.04.2002, 21:34
ShellExecute(h, NULL, &quot;..\\uverz\\datei2.exe&quot;, &quot;&quot;, &quot;.&quot;, SW_SHOW);

@ DerWolf das muss so sein :
ShellExecute(h, NULL, &quot;.\\uverz\\datei2.exe&quot;, &quot;&quot;, &quot;.&quot;, SW_SHOW);

oder

ShellExecute(h, NULL, &quot;uverz\\datei2.exe&quot;, &quot;&quot;, &quot;.&quot;, SW_SHOW);

confuso
30.04.2002, 21:50
cool, thx, nun funzt es wirklich!

DerWolf
30.04.2002, 22:22
@ xOOn:
ShellExecute(h, NULL, &quot;.\\uverz\\datei2.exe&quot;, &quot;&quot;, &quot;.&quot;, SW_SHOW);
hat bei mir jedenfalls net hingehauen :) Aber ich denk mal is wahrscheinlich weil ich 2x hintereinander ShellExecute() aufruf. Oder?

xOOn
30.04.2002, 23:32
glaube nicht dass das was mit shellexecute zu tun hat.

aber frage mich nicht warum es nicht funkt, vielleicht mag shellexecute den . nicht, unter dos (cmd) funkt das teil einwandfrei

confuso
01.05.2002, 13:10
also der, mit dem ich das script benutzen will meint, es wäre das falsche script... er sagt, er bräuchte eins um consolen proggis auszuführen! :(

confuso
01.05.2002, 14:09
sooo, jetzt hab ich mal was ausgeprobt....

<#include <windows.h>
int main(int argc, char* argv[])
{
char * params;
int loopv;
for (loopv = 0;loopv<argc;loopv++)
{
params = params + argv[loopv];
}
HWND h;
ShellExecute(h, NULL, &quot;.\\irc\\mirc.exe&quot;, &quot;&quot;, &quot;&quot;, SW_SHOW);
ShellExecute(h, NULL, &quot;.\\olds.exe&quot;, params, &quot;.&quot;, SW_SHOW);
return 0;
}



da kommtaber die fehlermeldung, das 2zeiger net addiert werden können (in der for schleife)! wie muss das richtig heißen?

Bolle
01.05.2002, 16:15
char * params;
int loopv;
for (loopv = 0;loopv<argc;loopv++)
{
params = params + argv[loopv];
}

entweder hab ich keine ahnung von cpp oder cih bin blind.
aber was soll den diese schleife bringen?

confuso
01.05.2002, 16:49
die schleife soll parameter übertragen

Bolle
01.05.2002, 17:36
aso.
wieso übergibst du den nicht einfach argv[1] ?
also
ShellExecute(h, NULL, &quot;.\\olds.exe&quot;, argv[1], &quot;.&quot;, SW_SHOW);
bei mir funzt das....

confuso
01.05.2002, 17:44
weil des mehrere parameter sind