GARANTIR DESCONTO

Fórum Enviar programa para frente #232173

13/05/2004

0

Estou usando esta função para listar todas as janelas abertas no sistema

Function EnumWindowsProc (Wnd: HWND; lb: TListbox): BOOL; stdcall;
var caption: Array [0..128] of Char;
begin
Result := True;
if IsWindowVisible(Wnd) and
((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or
(HWND(GetWindowLong(Wnd, GWL_HWNDPARENT)) = GetDesktopWindow))and
((GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW) = 0)
then
begin
SendMessage( Wnd, WM_GETTEXT, Sizeof(caption),integer(@caption));
lb.Items.AddObject( caption,TObject( Wnd ));
end;
end;

e esta para chamar a função

procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows( @EnumWindowsProc, integer( listbox1 ));
end;

o problema é que não são formulários do meu sistema, são outros programas do windows. Eu queria que quando selecionasse um destes programas no listbox, como o Internet Explorer por exemplo, O IE fosse enviado para a frete como se fosse um alt+tab

Obrigado pela atenção

Sanses


Sanses

Sanses

Responder

Posts

14/05/2004

Sanses

sobe


Responder

Gostei + 0

15/05/2004

Adilsond

if ListBox1.ItemIndex > -1 then
BringWindowToTop(Integer(ListBox1.Items.Objects[ListBox1.ItemIndex]));


Responder

Gostei + 0

15/05/2004

Sanses

funcionou perfeito amigo, obrigado

Sanses


Responder

Gostei + 0

15/05/2004

Sanses

opa, só uma coisa, quando o programa está minimizado ele não funciona.
Sabe como posso contornar este problema?

Obrigado pela ajuda
Sanses


Responder

Gostei + 0

15/05/2004

Adilsond

procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumWindows(@EnumWindowsProc, Integer(ListBox1 ));
end;

function TForm1.IsMinimized(Wnd: HWND): Boolean;
begin
  if IsIconic(Wnd) then
     Result := True
  else
     Result := False;
end;

procedure TForm1.ShowApplication(Wnd: HWND);
begin
  if IsMinimized(Wnd) then
     ShowWindow(Wnd, SW_RESTORE)
  else
     BringWindowToTop(Wnd);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  if ListBox1.ItemIndex > -1 then
     ShowApplication(Integer(ListBox1.Items.Objects[ListBox1.ItemIndex]));
end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar