이렇게 함 해보세요...XP로 테스트는 못해봤구요 윈도98, 2000 델7 에서 테스트 했습니다.(포트리스나 골드윙 같은 게임을 죽여보았습니다.)
현재 작업 표시줄에있는 응용프로그램 리스트를 가져올 수 있습니다.
어플리케이션의 캡션네임을 이용해서 죽일수가 있습니다.
function EnumWindowsProc(Wnd: HWND; List: TListbox): Boolean; stdcall;
var
Caption: array[0..128] of Char;
begin
Result := True;
if IsWindowVisible(Wnd) and ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or (HWND(GetWindowLong(Wnd, GWL_HWNDPARENT)) = GetDesktopWindow)) and
((GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW) = 0) then
begin
SendMessage(Wnd, WM_GETTEXT, Sizeof(Caption), integer(@Caption));
List.Items.AddObject(Caption, TObject(Wnd));
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
var
i: integer;
IExplorer: Thandle;
begin
현재 작업 표시줄에있는 응용프로그램 리스트를 가져올 수 있습니다.
어플리케이션의 캡션네임을 이용해서 죽일수가 있습니다.
function EnumWindowsProc(Wnd: HWND; List: TListbox): Boolean; stdcall;
var
Caption: array[0..128] of Char;
begin
Result := True;
if IsWindowVisible(Wnd) and ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or (HWND(GetWindowLong(Wnd, GWL_HWNDPARENT)) = GetDesktopWindow)) and
((GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW) = 0) then
begin
SendMessage(Wnd, WM_GETTEXT, Sizeof(Caption), integer(@Caption));
List.Items.AddObject(Caption, TObject(Wnd));
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
var
i: integer;
IExplorer: Thandle;
begin
ListBox1.Clear;
EnumWindows(@EnumWindowsProc, Integer(ListBox1));
i := 0;
while i <= listbox1.Count - 1 do
begin
PostMessage(FindWindow(nil, pchar(listbox1.Items.Strings[i])), WM_QUIT, 0, 0);
inc(i);
next;
end;
end;
도움이 되셨을런지....