TeoX Postado Dezembro 18, 2003 Denunciar Share Postado Dezembro 18, 2003 E AÍ GALERA! SOU NOVO NA ÁREA.SERÁ QUE ALGUÉM AÍ SABE COMO POSSO IDENTIFICAR SE UM PROCESSO ESTÁ SENDO EXECUTADO ???O IDEAL SERIA EU TER UMA FUNÇÃO BOOLEANA QUE ME RETORNE SE UM PROCESSO ESTÁ OU NÃO SENDO EXECUTADO.ESTOU UTILIZANDO O DELPHI 6.0 E WINDOWS 2000.OBRIGADO,TEOX :huh: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 TeoX Postado Dezembro 29, 2003 Autor Denunciar Share Postado Dezembro 29, 2003 OK PESSOAL...!DESCOBRI UMA SOLUÇÃO PARA O MEU PROBLEMA... PARA QUEM PRECISAR, LOGO ABAIXO ESTÁ O FONTE DE UMA UNIT.FOI UTILIZADO FUÑÇÕES DA API DO WINDOWS: USER32BASTA CRIAR UM FORMULÁRIO COM UM BUTTON, UM LABEL E UM LISTBOX.unit Upid;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; ListBox1: TListBox; procedure Button1Click(Sender: TObject); procedure ListBox1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}Function EnumWindowsProc (Wnd: HWND; lb: TListbox): BOOL; stdcall;var caption: Array [0..128] of Char;begin Result := True; if { skip invisible windows } IsWindowVisible(Wnd) and { only process truly top-level windows. GetWindowLong must be used, notGetParent } ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or (HWND(GetWindowLong(Wnd, GWL_HWNDPARENT)) = GetDesktopWindow)) and { skip WS_EX_TOOLWINDOW windows } ((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;procedure TForm1.Button1Click(Sender: TObject);begin listbox1.clear; EnumWindows( @EnumWindowsProc, integer( listbox1 ));end;procedure TForm1.ListBox1Click(Sender: TObject);var theClassname: Array [0..128] of Char; Wnd: HWND; tid, pid: DWORD;begin With Sender As TListbox Do Begin If ItemIndex >= 0 Then Begin Wnd:= HWND(Items.Objects[ itemindex ]); If Wnd <> 0 Then Begin Windows.GetClassname( Wnd, theClassname, Sizeof( classname )); tid := GetWindowThreadProcessID( Wnd, @pid ); label1.caption := Format( 'HWND: %8.8x'#13#10+ 'Class: %s'#13#10+ 'Process ID: %8.8x'#13#10+ 'Thread ID: %8.8x', [Wnd, theClassname, pid, tid] ); End; End; End;end;end. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
TeoX
E AÍ GALERA! SOU NOVO NA ÁREA.
SERÁ QUE ALGUÉM AÍ SABE COMO POSSO IDENTIFICAR SE UM PROCESSO ESTÁ SENDO EXECUTADO ???
O IDEAL SERIA EU TER UMA FUNÇÃO BOOLEANA QUE ME RETORNE SE UM PROCESSO ESTÁ OU NÃO SENDO EXECUTADO.
ESTOU UTILIZANDO O DELPHI 6.0 E WINDOWS 2000.
OBRIGADO,
TEOX :huh:
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.