私は、自分のコンピューターで実行中のすべてのプロセスを一覧表示しようとしています。
EnumWindowsProc()
短いサンプルコードの呼び出しステートメントの何が問題になっていますか。私のコンパイラは、この行で次のように主張しています。
EnumWindows(@EnumWindowsProc, ListBox1);
関数呼び出し内に変数が必要であること。@EnumWindowsProc
varに変更するにはどうすればよいですか?
unit Unit_process_logger;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.ExtCtrls, Vcl.StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
function EnumWindowsProc(wHandle: HWND; lb: TListBox): Boolean;
var
Form1: TForm1;
implementation
{$R *.dfm}
function EnumWindowsProc(wHandle: HWND; lb: TListBox): Boolean;
var
Title, ClassName: array[0..255] of Char;
begin
GetWindowText(wHandle, Title, 255);
GetClassName(wHandle, ClassName, 255);
if IsWindowVisible(wHandle) then
lb.Items.Add(string(Title) + '-' + string(ClassName));
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ListBox1.Items.Clear;
EnumWindows(@EnumWindowsProc, ListBox1);
end;
end.