
不需要HOOK
#include <windowsh>
int main()
{
HWND hwnd = FindWindow( 0, "plan - 记事本" ) ;
RECT rect ;
GetWindowRect( hwnd, &rect ) ;
cout << "左上角坐标:" << rectleft << " " << recttop << endl
<< "右下角坐标" << rectright << " " << rectbottom << endl ;
}
在我电脑上打印:
左上角坐标: 1115 384
右下角坐标: 1577 438
实时更简单,你要响应鼠标移动消息的实时,你就在WM_MOUSEMOVE里加入这两句代码
不然就WM_TIMER里加入这两句吧
HOOK方法 vs Non-Hook方法
HOOK无非是希望在目标窗口WM_MOVE,WM_SIZE里获取并更新坐标
但是要HOOK其他进程的窗口的话,你需要放CALLBACK放在DLL里
简洁但是麻烦
Non-Hook也就是上面两句代码简单但不是很有效率
最后说句,以后你可以把这种问题发布到MFC领域,那里会得到更多答案
因为这个不是C++而是win32编程,
[DllImport("user32dll")]
public extern static int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
StringBuilder s = new StringBuilder(512);
int i = GetWindowText(thisHandle, s, sCapacity); //把thishandle换成你需要的句柄
MessageBoxShow(sToString());
The
GetProcessHandleFromHwnd
function
retrieves
a
process
handle
from
a
window
handle
HANDLE
WINAPI
GetProcessHandleFromHwnd(
HWND
hwnd,
);
这个函数通过窗口句柄获得进程句柄。有了进程句柄,PID是不是就知道怎么获得了?什么?不知道?那我告诉你,GetProcessId可以通过进程句柄获得进程ID:
DWORD
WINAPI
GetProcessId(
__in
HANDLE
Process
);
你是想模拟按键么
首先要获得窗口的句柄
用下面的函数应该能找到:
FindWindow根据类名\窗口标题寻找窗口
遍历顶层窗口EnumWindows
遍历窗口回调函数EnumWindowProc
遍历父窗口的所有子窗口EnumChildWindows
返回父窗口Point处的子窗口ChildWindowFromPoint
ChildWindowFromPointEx多一个参数UINT来忽略不可见无效透明的子窗口
获取与指定窗口具有莫种关系的窗口GetWindow
获取父窗口的子窗口中Z序最大的子窗口GetTopWindow
获取指定窗口相同层次Z序差1的窗口GetNextWindow
获取桌面窗口句柄GetDesktopWindow
用SendMessage函数不需要窗口标题的,只要句柄
LRESULT
SendMessage(
HWND
hWnd,
//
handle
of
destination
window
UINT
Msg,
//
message
to
send
WPARAM
wParam,
//
first
message
parameter
LPARAM
lParam
//
second
message
parameter
);
或者用keybd_event函数,要先用SetForegroundWindow函数把目标窗口设置成前台窗口
VOID
keybd_event(
BYTE
bVk,
//
virtual-key
code
BYTE
bScan,
//
hardware
scan
code
DWORD
dwFlags,
//
flags
specifying
various
function
options
DWORD
dwExtraInfo
//
additional
data
associated
with
keystroke
);
补充:
第一个:我进入某个游戏,用CE查到内存地址后,退出游戏,再查内存地址,两个内存地址是不一样的,有什么办法可以让每次的内存地址都一样?或者说下别的解决方法?
不让每次的内存地址都一样应该是做不到的,游戏每次运行由系统分配内存,哪能让你控制啊。
第二个:我想让鼠标在内存数值到某一个数值时,鼠标移动到某点进行鼠标 *** 作,该怎么写源代码?
定义一个指针变量p,类型根据你需要的数值而定
p=该内存地址
if(p==该数值)
{
//mousemove
}
以上就是关于C++怎样得到另一个窗口的位置坐标等信息,是通过HOOK来实现吗怎样实现我需要目标窗口实时坐标全部的内容,包括:C++怎样得到另一个窗口的位置坐标等信息,是通过HOOK来实现吗怎样实现我需要目标窗口实时坐标、c#已知其他窗口句柄怎么获取窗口标题、C#如何通过进程名称获取指定窗口的句柄,通过该句柄获取该窗口的标题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)