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?
paresco malo ,pero soy bueno
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
Imagen
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
paresco malo ,pero soy bueno
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
paresco malo ,pero soy bueno
Responder

Volver a “Delphi”