Ver Mensaje Individual
  #3  
Antiguo 11-10-2019
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 134
Reputación: 19
MaxiDucoli Va por buen camino
Cita:
Empezado por escafandra Ver Mensaje
Debes concretar alguna cosa en tu pregunta y tenes en cuenta que para cerrar una aplicación puede no ser efectivo el envío de WM_CLOSE. Este mensaje cierra una ventana. de forma que eso hará. Puede ser que la ventana en cuestión no sea la principal, o que la aplicación no tenga ventanas. El Mensaje WM_QUIT puede ser mandado al hilo principal mediante PostThreadMessage pero tampoco es seguro que. Finalmente puedes usar TerminateProcess Esta opción acaba con el proceso sobre el que se tiene permisos pero no de forma natural con lo que no podrá tomar las acciones previstas para su cierre.

Por otro lado preguntas como controlar otro proceso mediante la tecla espacio y muestras un código en el que esa tarea la realiza un procedimiento llamado MensajeFmedia pero cuyo código no muestras. Difícil poder analizarlo en esta condiciones ¿no crees? Revisa este tema: ¿Cómo simular de "verdad" las teclas SHIFT+TAB?
seguro que te va a ayudar.


Saludos.
Hola, gracias por la respuesta.
Disculpa, es que ese precedimiento lo tengo en otra unit y por eso no me di cuenta de ponerlo.

No hace más que esto:

Esto es el que manda el espacio a Fmedia.exe
Código Delphi [-]
procedure MensajeFMedia (WindowCaption : String);
var
WindowFmedia : HWND;
begin
WindowFmedia := FindWindowExtd(WindowCaption);
                  if IsWindow(WindowFmedia) then
                  begin
                  PostMessage(WindowFMedia, WM_KEYDOWN, VK_SPACE, 0);
                 // h := 0;
                  end;
end;


Esto es lo que me busca la ventana de Fmedia.exe y obtiene su Handle.
Código Delphi [-]
function FindWindowExtd(partialTitle: string): HWND;
var
  hWndTemp: hWnd;
  iLenText: Integer;
  cTitletemp: array [0..254] of Char;
  sTitleTemp: string;
begin
  hWndTemp := FindWindow(nil, nil);
  while hWndTemp <> 0 do begin
    iLenText := GetWindowText(hWndTemp, cTitletemp, 255);
    sTitleTemp := cTitletemp;
    sTitleTemp := UpperCase(copy( sTitleTemp, 1, iLenText));
    partialTitle := UpperCase(partialTitle);
    if pos( partialTitle, sTitleTemp ) <> 0 then
      Break;
    hWndTemp := GetWindow(hWndTemp, GW_HWNDNEXT);
  end;
  result := hWndTemp;
end;

La verdad es que no entiendo como hacerlo. Hace rato que estoy con esto y de a poco voy aprendiendo cosas nuevas que nunca he usado.

Mi idea es Ejecutar un emulador, que se pause el Fmedia, que al cerrarse el emulador, se quite la pausa del Fmedia y se cierren las ejecuciones de fondo que se largaron con el emulador.

Quizás ni se pueda hacer lo que quiero, pero no pierdo nada con tratar.

Muchas gracias!!!!!
Responder Con Cita