#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "formdragwidget.h"
#include <QtWidgets>
#include <QTimer>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowFlags(Qt::WindowCloseButtonHint);
hide();
mp_timer = new QTimer(this);
connect(mp_timer, SIGNAL(timeout()), this, SLOT(sl_timeOut()));
mp_timer->setInterval(100);
mp_formDragWidget = new FormDragWidget(ui->widget_drag);
mp_formDragWidget->show();
connect(mp_formDragWidget, SIGNAL(sg_drag(bool)), this, SLOT(sl_drag(bool)));
QTimer::singleShot(0, this, SLOT(sl_init()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::sl_timeOut()
{
__GetWindowsInfo();
}
void MainWindow::sl_drag(bool flg)
{
if (flg) {
mp_timer->start();
}
else {
mp_timer->stop();
__BackPos();
}
}
void MainWindow::sl_init()
{
__BackPos();
show();
}
void MainWindow::__GetWindowsInfo()
{
POINT ptCursor;
GetCursorPos(&ptCursor);
POINT pt2;
pt2.x = ptCursor.x-10;
pt2.y = ptCursor.y-10;
//获取窗口句柄
HWND hWnd = WindowFromPoint(pt2);
if (hWnd != 0) {
if ((HWND)this->winId() == hWnd) { //----- 本程序窗口
ui->lineEdit_windowHwnd->setText("");
ui->lineEdit_windowTitle->setText("");
ui->lineEdit_windowClass->setText("");
ui->lineEdit_windowStyle->setText("");
ui->lineEdit_windowRect->setText("");
return;
}
if ((HWND)mp_formDragWidget->winId() == hWnd) { //----- 准星窗口
return;
}
//----- 获取窗口标题
TCHAR szTitle[MAX_PATH];
GetWindowText(hWnd, szTitle, MAX_PATH);
//----- 获取窗口类名
TCHAR szClass[MAX_PATH];
GetClassName(hWnd, szClass, MAX_PATH);
//----- 获取窗口样式
LONG style = GetWindowLong(hWnd, GWL_STYLE);
//----- 获取窗口矩形
RECT rect;
GetWindowRect(hWnd, &rect);
QString windowsHwnd = QString("%1").arg((quintptr)hWnd, 8, 16, QLatin1Char('0')).toUpper();
QString windowsTitle = QString::fromWCharArray(szTitle);
QString windowsClass = QString::fromWCharArray(szClass);
QString windowsStyle = QString("%1").arg((quint32)style, 8, 16, QChar('0')).toUpper();
QString windowsRect = QString("(%1,%2)-(%3,%4) %5×%6")
.arg(rect.left)
.arg(rect.top)
.arg(rect.right)
.arg(rect.bottom)
.arg(rect.right - rect.left)
.arg(rect.bottom - rect.top);
ui->lineEdit_windowHwnd->setText(windowsHwnd);
ui->lineEdit_windowTitle->setText(windowsTitle);
ui->lineEdit_windowClass->setText(windowsClass);
ui->lineEdit_windowStyle->setText(windowsStyle);
ui->lineEdit_windowRect->setText(windowsRect);
}
}
void MainWindow::__BackPos()
{
mp_formDragWidget->move(mapToGlobal(ui->widget_drag->pos() + QPoint(9, 9)));
}
void MainWindow::resizeEvent(QResizeEvent *event)
{
__BackPos();
QWidget::resizeEvent(event);
}
void MainWindow::moveEvent(QMoveEvent *event)
{
__BackPos();
QWidget::moveEvent(event);
}
没有合适的资源?快使用搜索试试~ 我知道了~
使用QT编写的窗口句柄查看器 Spy++,源码奉献
共15个文件
cpp:3个
ui:2个
png:2个
需积分: 5 2 下载量 83 浏览量
2024-08-13
11:28:08
上传
评论
收藏 6.8MB RAR 举报
温馨提示
使用QT编写的窗口句柄查看器,拖动准星到需要查看的窗口释放,显示窗口的句柄以及一些基本信息。主要技巧是实现准星的拖动释放过程。 程序分两个部分,一部分实现可拖动的准星,一部分实现在准星拖动时刷新准星所在窗口的句柄信息。 一个主窗口类:MainWindow,负责主窗口显示以及在收到开始信号后,定时刷新当前鼠标所在窗口信息并显示,收到停止信号后停止刷新。 一个可拖动的准星类:准星拖动以一个QWidget的派生类实现,在此类中,鼠标左键按下发出开始信号,左键释放发出停止信号。按下并拖动过程中,将准星QWidget移动到鼠标所在位置。
资源推荐
资源详情
资源评论
收起资源包目录
Spy++.rar (15个子文件)
formdragwidget.ui 483B
rc.rc 1KB
mainwindow.h 731B
Spy++.pro.user 34KB
mainwindow.cpp 3KB
Spy++.pro 1KB
PNG
AIM.png 2KB
APP.png 2KB
main.cpp 183B
formdragwidget.h 676B
mainwindow.ui 7KB
bin
Spy++.exe 18.92MB
rc.qrc 129B
icon.ico 32KB
formdragwidget.cpp 1KB
共 15 条
- 1
资源评论
老神仙
- 粉丝: 4
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功