Q&A

  • 스트링으로 가져오는 방법???
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;



디버깅을 해봐도 스트링에 아무것도 들오 오지 않습니다.

혹시 아시는 분 부탁합니다.



그럼 하는김에 엑티브엑스에서 프로그램을 하나 실행시키는데 될때가 있고 안될때가 있습니다. 혹시 이런 일을 겪어 보신 분들 중 이유를 하시는 분 가르쳐 주세요



0  COMMENTS