Ejecutar un programa externo desde Visual c++ 2012 con system o ShellExecute

La manera más fácil es añadiendo el using namespace System::Diagnostics;

y luego usar Process::Start("nombredelprograma.exe");

también se puede poner la ruta absoluta pero con dobles \\ e incluso añadir qué archivo abrir.

Process::Start("notepad.exe","miarchivo.txt");

Otras maneras

En C la forma clásica (también compatible en C++) es emplear el comando system, pero para Windows también existe otro comando llamado ShellExecute.

systemPermite ejecutar cualquier instrucción que sea interpretada por una línea de comandos.
ShellExecutePermite abrir archivos, carpetas y ejecutar programas en Windows.

A continuación veremos cómo utilizar cada uno de ellos.
Se recomienda incluir los includes:

#include <process.h>
#include <Windows.h>

Empleando system

El comando system se encuentra en la librería estándar stdlib.h por lo que funciona (como dijimos al comienzo) en cualquier sistema operativo que sea capaz de compilar C/C++.
Este comando recibe como único parámetro una cadena de caracteres que indica la instrucción que se desea introducir en en el intérprete de comandos (Terminal, cmd, etc).
Debe tenerse en cuenta que el argumento (parámetro) que es enviado en la función es exactamente el que recibirá el intérprete del Sistema Operativo que se esté utilizando, por lo que si ese comando no existe, simplemente no funcionará.

A continuación voy a dejar una tabla que tomé prestada de copstone, que me parece muy bien resumida:
S.O.ComandoDescripción
Windows
1system("notepad.exe");
Abre el programa Notepad.Esto solo funciona porque notepad.exe se encuentra dentro del PATH de Windows.
Linux
1system("gedit");
Abre el programa gedit.
Windows
1system("C:\\Binarios\\tablas.exe");
Abre el programa tablas.exe ubicado en la ruta C:\\Copstone.
Linux
1system("/home/Binarios/tablas");
Abre el programa tablas ubicado en la ruta /home/copstone
Windows
1system("notepad.exe C:\\prueba.txt");
Abre el programa Notepad y carga el archivo prueba.txt ubicado en el disco C
Windows
1system("C:\\prueba.txt");
Muy parecido al programa anterior pero deja que el sistema operativo decida con que programa abrir el documento de texto.
Este comando posee una clara desventaja (o característica a tener en cuenta): Toda la aplicación quedará esperando hasta que se haya finalizado la ejecución del system.
Ejemplo:
1#include <stdio.h>
2#include <stdlib.h>
3intmain()
4{
5printf("Se esta por abrir notepad\n");
6system("notepad.exe");
7printf("Se termino de ejecutar notepad\n");
8return 0;
9}

Error al conectar a la red Steam. Solucionado

Buenas a todos,

Un buen día me aparecía el siguiente error al tratar de conectarme a Steam:

No se ha podido conectar a la red de steam. Puede ser debido a un problema con tu conexión o con la red de steam. Visita www.steampowered.com para mas información. 


Después de desintestinar Steam, instalarlo como Administrador, borrar el archivo ClientRegistry.blob, pedir cambiar la contraseña, entrar desde la web, recibir doscientos correos con una clave, etc...

Lo único que ha funcionado ha sido, crearme una cuenta nueva con otro correo, acceder a Steam, salirme y entrar con la cuenta de toda la vida.

Me enviaron el correo de confirmación para agregar el ordenador a steam así que puse el código que me pedían cuando entré de nuevo a Steam. Al principio no me salían los juegos en la biblioteca, así que reinicié y listo.

Soy informático, y no le encuentro explicación del porqué se soluciona así. Solamente no desinstalar Steam que luego tendréis que volver a bajar todos los juegos y haced eso.

Espero haberos ayudado.

Saludos.



ASP ACCESS HTML PHP problemas con Tíldes, acentos y ñ

Buenas, os traigo un problema muy común en el tema de la codificación de los caracteres de las páginas webs así como el de las bases de datos.

Suele ocurrir que cuando una web  muestra bien las tildes  cuando se pasan a una base de datos esta muestra caracteres extraños como A! , ? o cosas así.

O viceversa, si se ven bien en la base de datos, el contenido HTML no se ve correctamente.

Antes se solucionaba cambiando las tildes y ñ pr su codificación HTML como sería:

ñ -> &ntilde;
ó -> &oacute;

etc....

El problema está en la codificación de la página, normalmente viene en una línea meta al principio del documento.

Lo que sucede es que si se pone codificación UTF-8, se muestra bien el HTML pero en la base de datos se guarda mal (aunque luego al hacer las búsquedas vayan bien, pero si miras la base de datos están mal guardados). Y si quitas la etiqueta meta de codificación, se guarda bien en la base de datos pero en la web los acentos y tildes no se ven correctamente.

Yo lo he solucionado poniendoles a mis páginas esta línea dentro del <head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

y quitando la que me puso el Dreamwever por defecto de UTF-8.

Lo que hago es poner codificación Europea occidental en desde mi dreamweaver, que es presionando CTRL + J.

A mí con esto se me solucionó, tanto en la web como en la base de datos.

Espero haberos ayudado.

Saludos.

Activar Crear y Añadir Windows Forms en Visual Studio 2012 para Visual C++ como plantilla

Buenas, no se llega a entender porque microsoft en la última versión de su Visual Studio 2012 no permite generar como nuevo proyecto un proyecto en Visual C++ comenzando con Windows Forms.

Así que para poder crearlo tendréis que hacer lo siguiente:

Nos generamos un proyecto Visual C++ - CLR Vacío.

Luego agregaremos el formulario al proyecto, nos vamos al menú superior PROYECTO - AGREGAR NUEVO ELEMENTO, nos vamos a VISUAL C++ - UI y elegimos WINDOWS FORMS y aceptamos.

Ahora nos vamos a nuestro proyecto,  Botón derecho sobre el nombre del proyecto y elegimos propiedades.

Seleccionamos PROPIEDADES DE CONFIGURACIÓN   y luego  VINCULADOR - SISTEMA y en Subsistema elegimos Windows (/SUBSYSTEM:WINDOWS).

Luego volvemos al árbol izquierdo y elegimos AVANZADAS, y en su primera opción del menú de la derecha en PUNTO DE ENTRADA escribimos main y pulsamos OK.

Ahora abrimos el código del formulario y pegamos esto: (OJO con el cambio de nombre del formulario y del proyecto)

//Nombre del formulario

#include "MyForm.h"


using namespace System;

using namespace System ::Windows::Forms;

[STAThread]

void main(array<String^>^ arg) {
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
//nombre del proyecto
Project1::MyForm form;
Application::Run(%form);
}

Guardamos y ya podemos compilar.

Una vez hecho lo podemos EXPORTAR como PLANTILLA, desde el menú ARCHIVO, por ejemplo con nombre WFORMS y así ya cada vez que iniciemos un proyecto podemos utilizarlo.

Os dejo un vídeo explicativo de cómo se hace:

Saludos.