Archiv verlassen und diese Seite im Standarddesign anzeigen : Eine andere Datei laden
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
Hi confuso, mir is nich ganz klar was du unter "laden" verstehst? Kannst du mir das bitte etwas genauer erklären?
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 << "Benutzung: bla dateiname" << endl;
}
ifstream datei(argv[1], ios::in|ios::binary); // Datei einlesen
if( !datei) // Wenn Datei nicht vorhanden, Fehler ausgeben und stoppen
{
cerr << "Fehler bei oeffnen der Datei" << 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 << "\n Weiter mit Enter" << endl;
cin.sync(); cin.get(); // Eingabespeicher leeren und Return abwarten
}
}
if( datei.eof()) // Datei zu Ende?
{
cerr << "Ende der Datei erreicht" << endl;
}
return 0;
}
das is ein kleines program, welches eine datei auf dem bildschirm ausgibt
kannst dir ja mal anschauen.
ä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!
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("C:\\WinNT\\Notepad.exe", SW_SHOW);
return 0;
}Beispiel zu ShellExec:#include <windows.h>
int main () {
HWND h;
ShellExecute(h, NULL, "C:\\WinNT\\Notepad.exe", "", "C:\\", 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... 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
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("C:\\WinNT\\Notepad.exe", SW_SHOW);
return 0;
}Beispiel zu ShellExec:#include <windows.h>
int main () {
HWND h;
ShellExecute(h, NULL, "C:\\WinNT\\Notepad.exe", "", "C:\\", 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
"datei1.exe", "uverz/datei.exe"
versteht ihrs so einigermaßen?
na dann schreib einfach:#include <windows.h>
int main () {
HWND h;
ShellExecute(h, NULL, ".\\datei1.exe", "", ".", SW_SHOW);
ShellExecute(h, NULL, "..\\uverz\\datei2.exe", "", ".", SW_SHOW);
return 0;
}oder?
ShellExecute(h, NULL, "..\\uverz\\datei2.exe", "", ".", SW_SHOW);
@ DerWolf das muss so sein :
ShellExecute(h, NULL, ".\\uverz\\datei2.exe", "", ".", SW_SHOW);
oder
ShellExecute(h, NULL, "uverz\\datei2.exe", "", ".", SW_SHOW);
cool, thx, nun funzt es wirklich!
@ xOOn:
ShellExecute(h, NULL, ".\\uverz\\datei2.exe", "", ".", SW_SHOW);
hat bei mir jedenfalls net hingehauen :) Aber ich denk mal is wahrscheinlich weil ich 2x hintereinander ShellExecute() aufruf. Oder?
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
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! :(
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, ".\\irc\\mirc.exe", "", "", SW_SHOW);
ShellExecute(h, NULL, ".\\olds.exe", params, ".", 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?
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?
die schleife soll parameter übertragen
aso.
wieso übergibst du den nicht einfach argv[1] ?
also
ShellExecute(h, NULL, ".\\olds.exe", argv[1], ".", SW_SHOW);
bei mir funzt das....
weil des mehrere parameter sind
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.