• ejecutar aplicacion oculta

 #451501  por joselin
 01 Ago 2014, 06:20
estaba viendo que


ShellExecute(Handle, 'open', pchar(edit1.text), NIL, nil, SW_hide) ;


solo oculta notepad pero no aplicaciones externas
probe con

var
  startupinfo: TStartupInfo;
  ProcInfo: TProcessInformation;
begin


          ZeroMemory(@startupinfo, sizeof(STARTUPINFO));
        startupinfo.cb := sizeof(STARTUPINFO);
        startupinfo.wShowWindow := SW_HIDE;
        startupinfo.dwFlags := STARTF_USESTDHANDLES;

if  CreateProcess (Nil, pchar(edit1.text),Nil,Nil,false,NORMAL_PRIORITY_CLASS or CREATE_NO_WINDOW,nil,nil,  startupinfo,ProcInfo)then
    showmessage('si');
pero sige siendo lanzado visible
alguna solucion?
 #451545  por Pink
 01 Ago 2014, 14:09
es raro. creo que solo funciona con algunos. la otra opción seria crear el proceso. obtener el handle de la ventana y usar ShowWindow.

Saludos
 #451679  por joselin
 02 Ago 2014, 05:45
Pink escribió:la otra opción seria crear el proceso. obtener el handle de la ventana y usar ShowWindow.
es la mejor forma que encontre pero tengo un problema, al buscar el handle.
si creo una tool que ejecute y busque el handle y oculte la ventana
se me crea el problema que el pid de un proceso tiene varios handles
y siempre caigo en el primero (que puede ser que no sea el de la ventana principal) por lo tanto no se ocultaria ,y cada exe segun su lenguage de creacion es variable,
sigo investigando gracias pink
 #451717  por Pink
 02 Ago 2014, 16:49
lo que se me ocurre es usar RegisterWindowMessage+RegisterShellHookWindow+ShowWindow.

Saludos
 #451719  por Pink
 02 Ago 2014, 16:56
Aunque creo que igual se vera un parpadeo en la ejecución.
 #451975  por joselin
 04 Ago 2014, 07:09
intente mediante el pid obtener el handle y despues buscar el handle parent de las ventanas del mismo proceso , como lei en delphiacces pero no funciona
con todos los ejecutables , a veces no se encuenta la ventana principal, asi que no es el camino(nunca crei que un proceso tubiera tantas ventanas ocultas)
asi que queda funcional tu idea del hook,
saludos
 #452003  por Pink
 04 Ago 2014, 19:31
Otra alternativa podria ser usando SetWinEventHook. es mas fácil :)