Ir para conteúdo
Fórum Script Brasil
  • 0

FindWindow Duvidas


Silva~

Pergunta

var

wHandle: hwnd;

begin

wHandle := FindWindow('nome da janela',nil);

Quero aprimorar esse code que eu fiz , no caso queria fazer uma procedure ou um codigo dentro disso ae

Para o programa so ativar quando na Label captar a Window

Outra coisa tambem e Listar as Janelas abertas numa Listbox

E so isso por enquanto , quem tiver alguma outra ideia , e mais para facilitar o acesso , no caso para o programa aplicar determinada ação eu capto janela como citado no codigo acima , o que quero e aprimorar

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Quero aprimorar esse code que eu fiz , no caso queria fazer uma procedure ou um codigo dentro disso ae

Para o programa so ativar quando na Label captar a Window

Outra coisa tambem e Listar as Janelas abertas numa Listbox

Um exemplo que voce pode adptar as suas necessidades

uses TLHelp32  {importante};

var
  aSnapshotHandle: THandle;
  aProcessEntry32: TProcessEntry32;
  
implementation

procedure TForm1.BtnRefreshClick(Sender: TObject);
var
  i: Integer;
  bContinue: BOOL;
  NewItem: TListItem;
begin
  ListView1.Items.Clear;
  aSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  aProcessEntry32.dwSize := SizeOf(aProcessEntry32);
  bContinue := Process32First(aSnapshotHandle, aProcessEntry32);
  while Integer(bContinue) <> 0 do
  begin
    NewItem := ListView1.Items.Add;
    NewItem.Caption := ExtractFileName(aProcessEntry32.szExeFile);
    NewItem.subItems.Add(IntToHex(aProcessEntry32.th32ProcessID, 4));
    NewItem.subItems.Add(aProcessEntry32.szExeFile);
    bContinue := Process32Next(aSnapshotHandle, aProcessEntry32);
  end;
  CloseHandle(aSnapshotHandle);
end;


procedure TForm1.ListView1DblClick(Sender: TObject);
var
  Ret: BOOL;
  PrID: Integer; // processidentifier
  Ph: THandle;   // processhandle
begin
  with ListView1 do
  begin
    if MessageDlg(Voce gostaria de terminar' + ItemFocused.Caption + '"?' + ^J +
                  'É possivel que cause instabilidade ao sistema ao sair' + ^J +
                  'control......',
        mtConfirmation, [mbYes, mbNo], 0) = mrYes then
     begin
       PrID := StrToInt('$' + ItemFocused.SubItems[0]);
       Ph := OpenProcess(1, BOOL(0), PrID);
       Ret := TerminateProcess(Ph, 0);
       if Integer(Ret) = 0 then
         MessageDlg('Cannot terminate "' + ItemFocused.Caption + '"',
                     mtInformation, [mbOK], 0)
       else
         ItemFocused.Delete;
     end;
   end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  {
    ListView1.Columns.Add;
    ListView1.Columns.Add;
    ListView1.Columns.Add;
    ListView1.ViewStyle := vsReport;
  }
  BtnRefresh.Click;
end;

Ou faça uma busca no forum

http://scriptbrasil.com.br/forum/index.php...lizar+processos

http://scriptbrasil.com.br/forum/index.php...lite=findwindow

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

[Error] Unit1.pas(148): Undeclared identifier: 'aSnapshotHandle'

[Error] Unit1.pas(149): Undeclared identifier: 'aProcessEntry32'

[Error] Unit1.pas(150): Types of actual and formal var parameters must be identical

Apareceu erros assim

Não acha que listar por um ComboBox não ficaria melhor ?

Vou tentar resolver os erros aqui , obrigado jhonas !

Link para o comentário
Compartilhar em outros sites

  • 0

[

Error]Unit1.pas(148): Undeclared identifier: 'aSnapshotHandle'

[Error] Unit1.pas(149): Undeclared identifier: 'aProcessEntry32'

[Error] Unit1.pas(150): Types of actual and formal var parameters must be identical

Apareceu erros assim

Não acha que listar por um ComboBox não ficaria melhor ?

Voce pode alterar para colocar um Combobox no lugar do listview

Voce precisa se aprimorar na leitura do delphi para achar mais facilmente os erros

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListView1: TListView;
    procedure Button1Click(Sender: TObject);
    procedure ListView1DblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

uses TLHelp32;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  bContinue: BOOL;
  NewItem: TListItem;
  aSnapshotHandle: THandle;
  aProcessEntry32: TProcessEntry32;
begin
  ListView1.Items.Clear;
  aSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  aProcessEntry32.dwSize := SizeOf(aProcessEntry32);
  bContinue := Process32First(aSnapshotHandle, aProcessEntry32);
  while Integer(bContinue) <> 0 do
  begin
    NewItem := ListView1.Items.Add;
    NewItem.Caption := ExtractFileName(aProcessEntry32.szExeFile);
    NewItem.subItems.Add(IntToHex(aProcessEntry32.th32ProcessID, 4));
    NewItem.subItems.Add(aProcessEntry32.szExeFile);
    bContinue := Process32Next(aSnapshotHandle, aProcessEntry32);
  end;
  CloseHandle(aSnapshotHandle);
end;


procedure TForm1.ListView1DblClick(Sender: TObject);
var
  Ret: BOOL;
  PrID: Integer; // processidentifier
  Ph: THandle;   // processhandle
begin
  with ListView1 do
  begin
    if MessageDlg('Voce gostaria de finalizar ' + ItemFocused.Caption + '"?' + ^J +
                  'É possivel que cause instabilidade ao sistema ao sair' + ^J +
                  'control......',
        mtConfirmation, [mbYes, mbNo], 0) = mrYes then
     begin
       PrID := StrToInt('$' + ItemFocused.SubItems[0]);
       Ph := OpenProcess(1, BOOL(0), PrID);
       Ret := TerminateProcess(Ph, 0);
       if Integer(Ret) = 0 then
         MessageDlg('Não pode finlizar' + ItemFocused.Caption + '"',
                     mtInformation, [mbOK], 0)
       else
         ItemFocused.Delete;
     end;
   end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  ListView1.Columns.Add;
  ListView1.Columns.Add;
  ListView1.Columns.Add;
  ListView1.ViewStyle := vsReport;

  Button1.Click;
end;


end.

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...