当前位置: 首页 > wzjs >正文

企业网站内容运营方案策划网络营销的盈利模式

企业网站内容运营方案策划,网络营销的盈利模式,家装网站建设公司,广州越秀区封控区域演示平台:windows。 编译环境:Qt5.12.2 MinGW 64-bit Windows API: ///加载钩子 /*** SetWindowsHookEx 函数解释* int idHook 所监控的挂钩类型* HOOKPROC lpfn 监控信息的处理函数* HINSTANCEhMod 监控信息的动态链接位置 nullptr则与本线…

演示平台:windows。
编译环境:Qt5.12.2 MinGW 64-bit
Windows API

///加载钩子
/*** SetWindowsHookEx 函数解释* int idHook 所监控的挂钩类型* HOOKPROC lpfn 监控信息的处理函数* HINSTANCEhMod 监控信息的动态链接位置 nullptr则与本线程相关* DWORD dwThreadId 挂钩线程id 0则代表当前 决定了此钩子是系统钩子还是线程钩子* 返回值 函数执行成功,则返回值就是该挂钩处理过程的句柄;若此函数执行失败,则返回值为NULL(0)*/
WINUSERAPI HHOOK WINAPI SetWindowsHookExW (int idHook, HOOKPROC lpfn, HINSTANCE hmod, DWORD dwThreadId);///SetWindowsHookExW的回调函数/*** @brief Hookproc* @param code 这是一个整数值,用于指定发送到钩子过程的消息类型。它可以是几个值中的一个,例如HC_ACTION、HC_NOREMOVE或HC_CREATE* @param wParam 一个指向宽字符值的指针,其中包含有关发送到钩子过程的消息的附加信息,其值取决于code的值* @param lParam 一个指向长字符值的指针,其中包含有关发送到钩子过程的消息的附加信息,其值取决于code的值* @return 如果返回0,则消息未被处理,将继续由其他钩子或目标窗口处理。如果返回非零值,则消息已被钩子过程处理,不会被其他钩子或目标窗口处理*/
LRESULT Hookproc2(int code, WPARAM wParam, LPARAM lParam)// 卸载钩子
WINUSERAPI WINBOOL WINAPI UnhookWindowsHookEx (HHOOK hhk);

WH_KEYBOARD_LL:键盘监测
WH_MOUSE_LL:鼠标检测
示例
请添加图片描述
代码
chook.h

#ifndef CHOOK_H
#define CHOOK_Hclass Widget;
class CHook
{
public:CHook(Widget* w);~CHook();
};#endif // CHOOK_H

chook.cpp

#include "chook.h"
#include <windows.h>
#include "widget.h"
#include <QDebug>Widget* g_w;
HHOOK g_hook1;  // 钩子对象
HHOOK g_hook2; // 钩子对象/*** @brief Hookproc* @param code 这是一个整数值,用于指定发送到钩子过程的消息类型。它可以是几个值中的一个,例如HC_ACTION、HC_NOREMOVE或HC_CREATE* @param wParam 一个指向宽字符值的指针,其中包含有关发送到钩子过程的消息的附加信息,其值取决于code的值* @param lParam 一个指向长字符值的指针,其中包含有关发送到钩子过程的消息的附加信息,其值取决于code的值* @return 如果返回0,则消息未被处理,将继续由其他钩子或目标窗口处理。如果返回非零值,则消息已被钩子过程处理,不会被其他钩子或目标窗口处理*/
LRESULT Hookproc1(int code, WPARAM wParam, LPARAM lParam)
{// lParam强转为键盘数据结构体KBDLLHOOKSTRUCT *data = (KBDLLHOOKSTRUCT *)lParam;//! GetAsyncKeyState//! 获取指定按钮状态:非0则为按下状态,为0则为未按下状态// 当Ctrl、Alt、X都按下时进入if(GetAsyncKeyState(VK_LCONTROL) && GetAsyncKeyState(VK_LMENU) && 0x58 == data->vkCode){g_w->setText("组合按钮按下:Ctrl+Alt+x");}else if(GetAsyncKeyState(VK_LCONTROL) && 0x5a == data->vkCode){g_w->setText("组合按钮按下:Ctrl+z");}else{QString txt;if (data->flags == 128 || data->flags == 129){// 监控按键状态if (code >= 0){switch (wParam){case WM_KEYDOWN:txt = "普通按键抬起" + QString::number(data->vkCode);break;case WM_KEYUP:txt = "普通按鍵按下" + QString::number(data->vkCode);break;case WM_SYSKEYDOWN:txt = "系统按键抬起" + QString::number(data->vkCode);break;case WM_SYSKEYUP:txt = "系统按键按下" + QString::number(data->vkCode);break;}}// 监控键盘,并判断键switch (data->vkCode){case VK_F1:txt = "检测到按键:F1";break;case VK_LCONTROL:txt = "检测到按键:Ctrl";break;case VK_LMENU:txt = "检测到按键:Alt";break;case VK_RETURN:txt = "检测到按键:Enter";break;case VK_RSHIFT:case VK_LSHIFT:txt = "检测到按键:Shift";break;case VK_BACK:txt =  "检测到按键:Backspace";break;case VK_SPACE:txt =  "检测到按键:Space";break;}g_w->setText(txt);}}return CallNextHookEx(g_hook1, code, wParam, lParam);
}LRESULT Hookproc2(int code, WPARAM wParam, LPARAM lParam)
{MSLLHOOKSTRUCT* data = (MSLLHOOKSTRUCT* )lParam;POINT   pt = data->pt;DWORD   mouseData = data->time;const char* info = NULL;char text[60], pData[50], mData[50];if (code >= 0){if (wParam == WM_MOUSEMOVE){info = "鼠标 [移动]";}else if (wParam == WM_LBUTTONDOWN){info = "鼠标 [左键] 按下";}else if (wParam == WM_LBUTTONUP){info = "鼠标 [左键] 抬起";}else if (wParam == WM_LBUTTONDBLCLK){info = "鼠标 [左键] 双击";}else if (wParam == WM_RBUTTONDOWN){info = "鼠标 [右键] 按下";}else if (wParam == WM_RBUTTONUP){info = "鼠标 [右键] 抬起";}else if (wParam == WM_RBUTTONDBLCLK){info = "鼠标 [右键] 双击";}else if (wParam == WM_MBUTTONDOWN){info = "鼠标 [滚轮] 按下";}else if (wParam == WM_MBUTTONUP){info = "鼠标 [滚轮] 抬起";}else if (wParam == WM_MBUTTONDBLCLK){info = "鼠标 [滚轮] 双击";}else if (wParam == WM_MOUSEWHEEL){info = "鼠标 [滚轮] 滚动";}ZeroMemory(text, sizeof(text));ZeroMemory(pData, sizeof(pData));ZeroMemory(mData, sizeof(mData));QString txt = QString("鼠标状态:%1,X:%2,Y:%3,附加数据:%4").arg(info).arg(pt.x).arg(pt.y).arg(mouseData);g_w->setText(txt);}return CallNextHookEx(g_hook2, code, wParam, lParam);
}CHook::CHook(Widget *w)
{g_w = w;//! SetWindowsHookEx 函数解释//! int idHook 所监控的挂钩类型//! HOOKPROC lpfn 监控信息的处理函数//! HINSTANCEhMod 监控信息的动态链接位置 nullptr则与本线程相关//! DWORD dwThreadId 挂钩线程id 0则代表当前 决定了此钩子是系统钩子还是线程钩子//! 返回值 函数执行成功,则返回值就是该挂钩处理过程的句柄;若此函数执行失败,则返回值为NULL(0)g_hook1 = SetWindowsHookEx(WH_KEYBOARD_LL, Hookproc1, nullptr, 0);g_hook2 = SetWindowsHookEx(WH_MOUSE_LL, Hookproc2, nullptr, 0);
}CHook::~CHook()
{// 卸载钩子UnhookWindowsHookEx(g_hook1);UnhookWindowsHookEx(g_hook2);
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include "chook.h"
namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = nullptr);~Widget();void setText(QString txt);
private:Ui::Widget *ui;
};#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QScrollBar>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);ui->textEdit->setReadOnly(true);
}Widget::~Widget()
{delete ui;
}void Widget::setText(QString txt)
{ui->textEdit->append(txt);ui->textEdit->verticalScrollBar()->setValue(ui->textEdit->verticalScrollBar()->maximum());
}

main.cpp

#include "widget.h"
#include <QApplication>
#include "chook.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;CHook hook(&w);w.show();return a.exec();
}
http://www.dtcms.com/wzjs/393465.html

相关文章:

  • 做视频网站需要什么证搜索引擎地址
  • 优设网app官方下载seo优化方向
  • 黄岛网站建设价格百度推广费用
  • 媒介盒子网站是哪家公司做的百度提交入口网址
  • 北京优化词网站长沙正规关键词优化价格从优
  • 免费网站建设平台 iis东莞关键词排名优化
  • 国外经典手机网站设计站长工具seo综合查询怎么关闭
  • 自己做的小网站郑州网络营销公司哪个好
  • 做网站技术选择seo优化软件有哪些
  • 免费源码html网站seo高手是怎样炼成的
  • 课程网站建设开题报告国内免费建站平台
  • 西安高校定制网站建设公司推荐微信怎么引流营销呢
  • 造价工程建设协会网站广州百度快速优化排名
  • 小程序制作方案南昌百度seo
  • 网站设计的一般流程是什么惠州seo快速排名
  • 北京公司网站建设报价潮州seo建站
  • 做网站难还是app难福建省人民政府门户网站
  • 潍坊做网站安康地seo
  • 四川时宇建设工程有限公司官方网站用html制作个人网页
  • 中国建筑网官网监理工程师网站市场营销主要学什么
  • 在网上做效果图的网站百度免费推广怎么做
  • 中国做网站知名的公司安新seo优化排名网站
  • 一个做微信文章的网站国际新闻最新消息十条
  • 福永网站建设搜索引擎优化分析报告
  • 外贸专业网站建设天津seo优化
  • 北京市公安局海淀分局网站备案seo网络推广方法
  • 网站源代码下载工具关键词挖掘站长
  • wordpress关闭伪静态专业搜索引擎优化电话
  • 电商网站支付方案创建app平台
  • seo网络优化软件百度seo优