我又有问题了,关于进程的问题呀,大家快来帮忙。很感谢大家,在这里我学到很多!
大家一定用过xp吧,应该知道xp有一个功能很不错,可以一次性关闭已打开的程序,一般程序运行后,会在任务栏上有一个按钮,按钮上有窗口的名字。
现在大家开始动手吧,
我已经找到以下程序可以列出 任务栏上有按钮的所以程序窗口名称。
****************************************************************
uses shellapi;
function GetText(Wnd : HWND) : string;
var
textlength : integer;
text : PChar;
begin
textlength:=SendMessage(Wnd,WM_GETTEXTLENGTH,0,0);
if textlength=0 then
Result := ''
else begin
getmem(text,textlength+1);
SendMessage(Wnd,WM_GETTEXT,textlength+1,Integer(text));
Result:=text;
freemem(text);
end;
end;
function EnumWindowsProc (Wnd: HWND; LParam: LPARAM): BOOL; stdcall;
begin
Result := True;
if (IsWindowVisible(Wnd)) and
(GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) and
(GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then
begin
Form1.Listbox1.items.add('Handle:'+Inttostr(Wnd)+',Text:'+GetText(Wnd));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Param : Longint;
begin
EnumWindows(@EnumWindowsProc , Param); //列出已运行的程序
end;
请大家帮忙练习一下,如果将这些已列出的程序,一个个关闭。
期待中。。。。。。。。。。。。。