您的位置:首页 > 其它

这个问题有点难。

2008-11-05 09:32 197 查看
这个问题有点难。 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20061104112712179.html

我想得到其它应用程序的窗口大小和区域,不知道怎么办?请高手指点。
最好能有源代码。

var aRect: TRect;
begin
GetWindowRect(Handle,aRect);
ShowMessage(Format('(%d,%d,%d,%d) Height:%d Width:%d',[aRect.Left,aRect.Top,aRect.Right,aRect.Bottom,aRect.Bottom-aRect.Top,aRect.Right-aRect.Left]));
end;

楼上的是用窗口句柄取得窗口大小

别的应用程序的窗口句柄用 FindWindow 取得

Handle := FindWindow(nil, '窗口的标题');

如果窗口标题相同就没办法了, 会找到第一个相同的窗口

恩,高手。谢谢你们。
不过我还有一个问题,我想鼠标移动到一个窗口上的时候,把它的边框加粗(用颜色显示出来),这个通过你们的提示已经可以实现了,可是,我想在鼠标离开的时候就还原,怎么对别的应用程序的窗口实现这个功能,感觉一画上去就不知道怎么还原了,给点提示。谢谢了。。。

我还想问一个问题。用什么方法可以通过句柄得到其它窗口边框的颜色。谢谢各位的参与。

越问越多了哈

COLORREF GetPixel(
HDC hdc, // handle of device context
int XPos, // x-coordinate of pixel
int nYPos // y-coordinate of pixel
);
得到定点处的 Color

要的参数是 DC

HDC GetDC(
HWND hWnd // handle of window
);
用你的窗口句柄取得

忘了说 上面 getdc 是取得客户区的, 想取得整个窗口可以用

HDC GetDCEx(

HWND hWnd, // handle of window
HRGN hrgnClip, // handle of clip region
DWORD flags // device-context creation flags
);

怕你还问, 再说, 那两个 pos 是相对于窗口的, 相对于屏幕的 pos 要作一次转换

BOOL ClientToScreen(

HWND hWnd, // window handle for source coordinates
LPPOINT lpPoint // pointer to structure containing screen coordinates
);
用的是(delphi)TPoint 结构

取得 mouse 当前位置的是

BOOL GetCursorPos(

LPPOINT lpPoint // address of structure for cursor position
);
相对 delphi 参数应该是 var Point: TPoint, 这个取得的是相对屏幕的 mouse cursor 位置

上面 ClientToScreen 说倒了, 你要用 ScreenToClient
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐