MARIA_MAR,
Cita:
Empezado por MARIA_MAR
Esta ventana en la que veré el programa de la cámara, quiero que esté siempre visible.
|
Para mantener en pantalla una ventana fija, independientemente de que otras ventanas se activen se utiliza la función
SetForegroundWindow.
Revisa este código el cual permite establecer (Activar y Desactivar) un form al Top Level Window de las otras ventanas:
Código Delphi
[-]
procedure TForm2.Button1Click(Sender: TObject);
begin
SetWindowPos(Self.Handle,HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
SetWindowPos(Self.Handle,HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;
Resumen: El código anterior permite activar una ventana de una aplicación en Delphi al Top Level Window con el parámetro HWND_TOPMOST y desactivarla con el parámetro HWND_NOTOPMOST.
Revisa este código el cual permite gestionar una aplicación externa, para el ejemplo se uso la Calculadora de Windows.
Código Delphi
[-]
procedure TForm4.Button1Click(Sender: TObject);
begin
ShellExecute(Handle, 'open', 'Calc.exe', nil, nil, SW_SHOWNORMAL);
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
Window := FindWindow(nil,'Calculator');
if SetForegroundWindow(Window) = True then
begin
ShowWindow(Window, SW_SHOWNORMAL);
SetWindowPos(Window,HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end
else
MessageDlg('La Calculadora No Esta Activa en Windows', mtInformation,[mbOk], 0);
end;
procedure TForm4.Button3Click(Sender: TObject);
begin
Window := FindWindow(nil,'Calculator');
if SetForegroundWindow(Window) = True then
begin
SetWindowPos(Window, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end
else
MessageDlg('La Calculadora No Esta Activa en Windows', mtInformation,[mbOk], 0);
end;
procedure TForm4.Button4Click(Sender: TObject);
begin
if SetForegroundWindow(Window) = True then
begin
ShowWindow(Window, SW_SHOWNORMAL);
end
else
MessageDlg('La Calculadora No Esta Activa en Windows', mtInformation,[mbOk], 0);
end;
procedure TForm4.Button5Click(Sender: TObject);
begin
Window := FindWindow(nil,'Calculator');
if SetForegroundWindow(Window) = True then
begin
CloseWindow(Window);
end
else
MessageDlg('La Calculadora No Esta Activa en Windows', mtInformation,[mbOk], 0);
end;
procedure TForm4.Button6Click(Sender: TObject);
begin
Window := FindWindow(nil,'Calculator');
if SetForegroundWindow(Window) = True then
begin
SendMessage(Window, WM_CLOSE, 0, 0);
end
else
MessageDlg('La Calculadora No Esta Activa en Windows', mtInformation,[mbOk], 0);
end;
Resumen: El código anterior permite manejar con las APIs de Windows una aplicación externa y mantener su ventana siempre visible, quizás esta solución pueda adaptarse a tu proyecto.
Todo el código se encuentra implementado en el siguiente link:
http://terawiki.clubdelphi.com/Delph...Management.rar
Espero sea útil
Nelson.