unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, TlHelp32;
type
TForm1 = class(TForm)
ListBox1: TListBox;
B_Search: TButton;
B_Terminate: TButton;
procedure B_SearchClick(Sender: TObject);
procedure B_TerminateClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
// kernel32.dll을 사용하여 현재 떠있는 process를 읽어온다
procedure Process32List(Slist: TStrings);
var
Process32: TProcessEntry32;
SHandle: THandle; // the handle of the Windows object
Next: BOOL;
begin
Process32.dwSize := SizeOf(TProcessEntry32);
SHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if Process32First(SHandle, Process32) then
begin
// 실행화일명과 process object 저장
Slist.AddObject(Process32.szExeFile, TObject(Process32.th32ProcessID));
repeat
Next := Process32Next(SHandle, Process32);
if Next then
Slist.AddObject(Process32.szExeFile, TObject(Process32.th32ProcessID));
until not Next;
end;
CloseHandle(SHandle); // closes an open object handle
end;
procedure TForm1.B_SearchClick(Sender: TObject);
begin
// 현재 실행중인 process를 검색
ListBox1.Items.Clear;
Process32List(ListBox1.Items);
end;
end.
윈도우 프로세스의 정보를 가져오기 위해 이 소스를 쓰고 있습니다.
그런데 리스트박스에 있는 정보를 스트링으로 가져오지를 못하고 있습니다.
procedure TForm1.Button4Click(Sender: TObject);
var
str:string;
begin
str := listbox1.items.Names[2];
label1.Caption := str;
end;
디버깅을 해봐도 스트링에 아무것도 들오 오지 않습니다.
혹시 아시는 분 부탁합니다.
그럼 하는김에 엑티브엑스에서 프로그램을 하나 실행시키는데 될때가 있고 안될때가 있습니다. 혹시 이런 일을 겪어 보신 분들 중 이유를 하시는 분 가르쳐 주세요