어제 밤에 질문을 올렸는데...답변이 없어서 다시 글을 올립니다.
작업표시줄에 나타나는 프로그램이나 혹은 Ctrl+Alt+Del키를 눌렀을때 나타나는 프로그램의 목록을 불러올수 있는 방법이 없을까요?
어제부터 델파이 관련 자료를 찾느라 죽을 맛입니다. 실행중인 프로세서를 불러오는것은 되는데 너무 세세한것 까지 불러오는 바람에...(보는 사람이 무슨 프로그램이 떠 있는지 확인하기가 난해해서요)
아시는 분은 도움주십시요.
그럼...즐코하세요. 이만..
그럼.
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, not GetParent}
((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.Button2Click(Sender: TObject);
var
i: Integer;
Wnd: HWND;
begin
for i := 0 to ListBox1.Items.Count-1 do
begin
Wnd := HWND(ListBox1.Items.Objects[i]);
// 이 프로그램이 아니고 minimized(iconic)가 아니면...
if (Wnd <> 0) and (Wnd <> Application.Handle) then
if not IsIconic(Wnd) then
begin
ShowWindow(Wnd, SW_HIDE);
ShowWindow(Wnd, SW_MINIMIZE);
end;
end;
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;
임형호 wrote:
> 어제 밤에 질문을 올렸는데...답변이 없어서 다시 글을 올립니다.
> 작업표시줄에 나타나는 프로그램이나 혹은 Ctrl+Alt+Del키를 눌렀을때 나타나는 프로그램의 목록을 불러올수 있는 방법이 없을까요?
> 어제부터 델파이 관련 자료를 찾느라 죽을 맛입니다. 실행중인 프로세서를 불러오는것은 되는데 너무 세세한것 까지 불러오는 바람에...(보는 사람이 무슨 프로그램이 떠 있는지 확인하기가 난해해서요)
> 아시는 분은 도움주십시요.
> 그럼...즐코하세요. 이만..dd