L
lht123
Unregistered / Unconfirmed
GUEST, unregistred user!
灰色按钮激活实现下面讲讲激活windows灰色东东(比如不可用的按钮文本等)的原理本例中我们需要用到的API共有四个:GetForegroundWindow,EnumChildWindows,IsWindowEnabled,EnableWindow下面我一一写出这几个API的意义GetForegroundWindow //获得前台窗口的句柄。这里的“前台窗口”是指前台应用程序的活动窗口EnumChildWindows //为指定的父窗口枚举子窗口(即枚举控件窗口,比如按钮文本等)IsWindowEnabled //判断窗口是否处于活动状态.EnableWindow //在指定的窗口里允许或禁止所有鼠标及键盘输入好了有这几个API就足够写出这个小程序了,下面是代码:function EnumChildProc(Hwnd:Integer;TF:TForm1):Boolean;stdcall; //查找子窗口并进行判断的回调函数beginResult:=True; //设定为True才会再找下一个if IsWindowEnabled(Hwnd)=False then //判断是否有enable的东东 begin EnableWindow(Hwnd,True); //调用激活 end;end;procedure TForm1.Button1Click(Sender: TObject); //启用Timer开始遍历激活begin Timer1.Enabled:=True;end;procedure TForm1.Timer1Timer(Sender: TObject);var ButtonHandle:Hwnd;begin ButtonHandle:=GetForeGroundWindow; EnumChildWindows(ButtonHandle,@EnumChildProc,0);end;procedure TForm1.Button2Click(Sender: TObject); //关闭Timer停止激活begin Timer1.Enabled:=False;end;end.