C++获取光标所在位置的句柄,并向光标处发送数据,用PostMessage(),要详细代码。
C++获取光标所在位置的句柄,并向光标处发送数据,用PostMessage()实现,要详细代码。如果有其他实现也可以,用的vc++6.0主要是怎么获取光标处的句柄,c++...
C++获取光标所在位置的句柄,并向光标处发送数据,用PostMessage()实现,要详细代码。
如果有其他实现也可以,用的vc++6.0
主要是怎么获取光标处的句柄,c++小白,给出具体的代码,包括变量定义,函数的调用等。 展开
如果有其他实现也可以,用的vc++6.0
主要是怎么获取光标处的句柄,c++小白,给出具体的代码,包括变量定义,函数的调用等。 展开
1个回答
展开全部
通过Windows API 函数“HWND WindowFromPoint(POINT Point)”可以获取光标所在处的窗口的句柄。需要有一个触发消息来调用这个函数:比如按下键盘上的某个按键来触发这个函数调用。这是个简单的示范,能够模拟鼠标点击其他窗口的关闭按钮行为;要获得更完善的方案,可以给我私信。
具体操作方法:运行程序,让后将鼠标指针移动至其他窗口之上,最好是在标题栏上;然后按下键盘上的任意按键(推荐按字母键)。
在VC++6.0“文件”菜单中,新建一个空的“Win32 AppLication”工程。然后新建一个.cpp源文件,在源文件中写入如下代码:
#include <windows.h>
LRESULT CALLBACK WindowProc(HWND hdl_wnd, UINT msg_code, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
WNDCLASS wndcls;
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
wndcls.hbrBackground = (HBRUSH)COLOR_BTNSHADOW;
wndcls.hCursor = ::LoadCursor(NULL, IDC_ARROW);
wndcls.hIcon = ::LoadIcon(NULL, IDI_APPLICATION);
wndcls.hInstance = hInstance;
wndcls.lpfnWndProc = WindowProc;
wndcls.lpszClassName = "gethandle";
wndcls.lpszMenuName = NULL;
wndcls.style = CS_VREDRAW | CS_HREDRAW;
::RegisterClass(&wndcls);
::CreateWindow("gethandle", "获取窗口句柄", WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE, 200, 120, 400, 300, NULL, NULL, hInstance, 0);
MSG msg;
while (::GetMessage(&msg, NULL, 0, 0))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
return 1;
}
LRESULT CALLBACK WindowProc(HWND hdl_wnd, UINT msg_code, WPARAM wParam, LPARAM lParam)
{
LRESULT value = 0;
switch (msg_code)
{
case WM_CLOSE:
::PostQuitMessage(WM_QUIT);
break;
//注意:必须在本窗口获得键盘输入焦点的时候,WM_KEYDOWN消息才能生效!
//如果想在本窗口没有焦点的时候都能生效,则需要安装全局的键盘钩子。
case WM_KEYDOWN:
{
POINT pt;
HWND hdl_other;
::GetCursorPos(&pt); //获取鼠标指针的坐标
hdl_other = ::WindowFromPoint(pt); //将该坐标传递给获取句柄的函数
::PostMessage(hdl_other, WM_CLOSE, 0, 0); //用获取到的句柄,向目标窗口发送一个WM_CLOSE消息。WM_CLOSE消息相当于用户点击了窗口右上角的关闭按钮。
}
break;
default:
return ::DefWindowProc(hdl_wnd, msg_code, wParam, lParam);
}
return value;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询