能力值:
( LV2,RANK:10 )
2 楼
参考灰色按钮代码
能力值:
( LV2,RANK:10 )
3 楼
没用,工具栏和一般的按钮不同的。
能力值:
( LV2,RANK:10 )
4 楼
试了什么反映都没有,也没你那种情况,可能是我不会用:)
能力值:
( LV2,RANK:10 )
5 楼
win-me下出错
能力值:
( LV9,RANK:250 )
6 楼
简单看了一下,可能是这个函数出问题了WindowFromPoint
The WindowFromPoint function does not retrieve the handle of a hidden or disabled window, even if the point is within the window. An application should use the ChildWindowFromPoint function for a nonrestrictive search.
能力值:
( LV2,RANK:10 )
7 楼
应该不是,我把核心代码改为如下,编译后的程序完全可以把工具栏的第5个按钮删除。这说明获得当前句柄是成功的
程序:
点击下载:附件!tool.rar
核心代码:
.if eax == ID_TIMER3
invoke KillTimer,hWnd,ID_TIMER3
invoke RtlZeroMemory,addr @stPos,sizeof @stPos
invoke GetCursorPos,addr @stPos
invoke WindowFromPoint, @stPos.x, @stPos.y
mov hFileb1,eax
invoke GetClassName,hFileb1,addr @szBuffer2,256
invoke wsprintf,addr @szBuffer1,addr szTimeFormat,addr @szBuffer2
invoke lstrcmpi,addr Toolming,addr @szBuffer1
.if eax == 0
invoke SendMessage,hFileb1,TB_DELETEBUTTON,5,0
.endif
invoke SetTimer,hWnd,ID_TIMER3,200,NULL
.endif
能力值:
( LV2,RANK:10 )
8 楼
恢复灰色工具栏的程式和源码
工具栏上的按钮不是子窗口,我认为你取得的窗口是整个工具栏的不是对应的按钮窗口,(当然不包括向工具栏里加子窗口)
要想使灰色的可用应该在程序中要有相应的处理代码,这样你只要找到在UPDATE_CMDUI时用于判断是否可用的那个内存地址改他的值应该可以吧,我不会汇编,也不知道怎么去找这块内存,应该可以参考一些游戏作弊器
能力值:
( LV2,RANK:10 )
9 楼
你的这个方法有点太复杂,我已想了一个“?绝妙?”的主意:用穷举法解决了,反正也不是要那么精确。:D
能力值:
( LV2,RANK:10 )
10 楼
BOOL CALLBACK EnumChildProc (HWND hWnd,LPARAM lParam)
{
if(!IsWindowEnabled(hWnd))
EnableWindow(hWnd,TRUE);
return TRUE;
}
void Enable(void)
{
unsigned long h=0;
HWND hWnd;
while(h<0xffff)
{
hWnd=(HWND)(h++);
if(!IsWindowEnabled(hWnd))
{
EnableWindow(hWnd,TRUE);
EnumChildWindows(hWnd,EnumChildProc,1);
}
}
return;
}
....
即可.
能力值:
(RANK:10 )
11 楼
递归或者穷举一个窗口内的所有的子窗口,让他EnaleWindow