Ver Mensaje Individual
  #7  
Antiguo 21-11-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
MARIA_MAR,

Cita:
Empezado por MARIA_MAR Ver Mensaje
¿cómo puedo yo redimensionar la ventana en la que se ejecuta este programa Windows sin llegar a minimizarla?
1- Con la función SetForegroundWindow se puede establecer el tamaño, posición y orden Z de una ventana en Windows
Código:
BOOL SetWindowPos(
    HWND hWnd, // handle of window
    HWND hWndInsertAfter, // placement-order handle
    int X, // horizontal position
    int Y, // vertical position
    int cx, // width
    int cy, // height
    UINT uFlags // window-positioning flags
);
2- Revisa el siguiente código en el cual se redimensiona la ventana de Notepad:
Código Delphi [-]
// Ejecuta, redimensiona y establece como Top Level Window a Notepad
procedure TForm5.Button1Click(Sender: TObject);
var
   x, y : Integer;
   cx, cy : Integer;
   Window : Integer;

begin

   // Establece las coordenadas de Notepad en función de form4
   x := Round(form4.Top/2);
   y := Round(form4.Left/2);
   cx := Round(form4.Height/2);
   cy := Round(form4.Width/2);

   // Ejecuta Notepad en modo Hide
   ShellExecute(Handle, 'open', 'Notepad.exe', nil, nil, SW_HIDE);

   // Espera 150 msseg para que se ejecute Notepad
   Sleep(150);

   // API FindWindow : Encuentra si esta activa en Windows una aplicación y obtiene su handle
   Window := FindWindow('Notepad',nil);

   // API SetForegroundWindow : Cambia el foco de la aplicación activa en Windows
   if SetForegroundWindow(Window) = True then
   begin
      // API ShowWindow: Muestra una ventana en Windows
      ShowWindow(Window, SW_SHOWNORMAL);
      // API SetWindowPos: Establece el tamaño, posición y Orden Z de una ventana en Windows.
      // la posición y dimensiones son establecidos con los valores x, y, cx, cy
      // Notepad es establecido como Top Level Window
      SetWindowPos(Window,HWND_TOPMOST, x, y, cx, cy, SWP_NOACTIVATE);
   end
   else
      MessageDlg('Notepad No Esta Activo', mtInformation,[mbOk], 0);

end;
Nota: La ventana debe ser redimensionable, de lo contrario la función SetWindowPos no podrá redimensionarla.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 21-11-2012 a las 19:02:01.
Responder Con Cita