这个问题有点难。
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
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
相关文章推荐
- 031 二进制1的数量(keep it up, 看到这个问题,刚开始有点蒙)
- CView::OnMouseActivate这个方法有点问题
- bash shell 有点难啊?谁有什么方法吗?帮我看看下面这个问题啊
- CView::OnMouseActivate这个方法有点问题
- 中午没有得休息,就为了那个window 7系统group policy client服务未能登录,拒绝访问,看来这个系统真的有点问题
- java: cannot execute binary file 如果遇到这个错,一般是操作系统位数出问题了。
- warning LNK4006 这个烂问题终于搞掉了!
- 请教一个问题,Android应用运行时在调用某个API(比如相机)时,系统如何判断这个应用是否具备相应的权限?
- 这个HelloWorld有点长
- 由于以下错误: 0x80040154,无法创建 CLSID 为“{E436EBB3-524F-11CE-9F53-0020AF0BA770}”的 COM 对象。怎么解决这个问题?
- 没有找到cxcore100.dll,因此这个应用程序未能启动,重新安装应用程序可能会修复此问题
- 当你输入一个网址的时候,实际会发生什么?(赛门铁克电话面试我,曾经问过这个问题,最后一问,我只能说不知道)
- yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。
- AMD处理器安装RVDS2.2破解方法 (找了很久,该贴终于解决这个问题)
- 在VS2005下用C++写的程序,安装到另一台未安装VS2005的电脑上,结果出现如下的问题:““由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”。在我自己的机子上就能正常安装运行。查了一下网上的方法: 方法一: 在类似
- 关于创业型企业该如何配置开发人员,这个问题我也被问过很多从……
- 企业怎么看培训出来的人,这个问题太简单了
- 解决“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”
- IDEA+Gradle+SpringBoot+SpringDataJPA+lambok(lombok有点问题)(一)
- Hashtable 和Hashmap 的区别——该死的中兴通讯在2014年签约时临门问这个问题还让写迭代器