您的位置:首页 > 其它

win32强化练习4.3_粗糙的SPY获取别人的窗口

2016-11-26 02:29 211 查看
之前我们获取别人的窗口的菜单时,使用的是SPY++,其问题在于每次打开的窗口分配的句柄编号都是不一定的,我们的程序总不能老是去改啊!

那么这个练习,我们就做一个粗糙的SPY,用鼠标去获取窗口,而不用再改程序了。

这个练习主要功能: 1. 在窗口上绘制一个图标,2. 点击图标(其他区域不起作用)后会改变光标提示,3. 移动到其他窗口上,得到其窗口句柄编号,4. 操作这个窗口

步骤如下:

1. 在WM_PAINT中绘制一个图标

case WM_PAINT:
{
HICON hIcon1 = LoadIconA(g_hInst, MAKEINTRESOURCEA(IDI_ICON1));
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
DrawIcon(hdc, 100,100, hIcon1);
EndPaint(hwnd, &ps);
}


2. 处理左键或右键按下消息,判断点击坐标是否在上一步绘制的图标范围内

case WM_RBUTTONDOWN:
{
POINT pt;
RECT rt;
rt.left = 100;			rt.right = 150;
rt.top = 100;			rt.bottom = 150;
pt.x = LOWORD(lParam);
pt.y = HIWORD(lParam);
if (PtInRect(&rt, pt))//判断鼠标是否在图标范围内
{
MessageBox(0,"GET",0,0);


3. 如果点在图标范围内,则改变光标

SetCapture(hwnd);
bDraw = true;
case WM_SETCURSOR:
{
if (bDraw)
{
SetCursor(hCur);
return 0; //不让DefWindowProc将光标改回
}
}
4. 设置捕捉后,就可以移到其他窗口上,处理松开按键消息

case WM_RBUTTONUP:
{
ReleaseCapture();
bDraw = 0;
hDes = WindowFromPoint(pt);
CreateWindow("BUTTON","ADD",WS_CHILD|WS_VISIBLE, 100,100,100,20,hDes,(HMENU)101010,g_hInst, NULL);
}


这一节即练习了图标的加载和绘制,又练习了光标的加载和应用,还练习了鼠标的系列消息处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  WIN32