WPARAM wParam
As seen in:
Habr.com,
DEV Community,
The Code Project,
cnblogs.com,
GameDev.net,
CSDN,
Blogarama,
Root.cz,
Malware.News
Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by WPARAM wParam
[그래픽스] DirectX 11 - 환경세팅
문득 DirectX에 대해 배워보고 싶어서 한번 배워봤다. OpenGL과 비교하면서 적을 생각이다. 이거는 뭐 다운받을 필요 없다. OpenGL은 lib, dll 막 뭐 설치한 거 같은데 여기선 그런거 없이 그냥 바로 이것만 해도 된다.
Winmine_XP.exe 코드 분석
IDA는 실행파일을 기계어에서 사람이 읽을 수 있는 형태로 바꿔주는 도구이다. 이 IDA를 이용해 Winmine_XP.exe를 분석하겠다. IDA에 해당 실행 파일을 넣으면 다음과 같은 Graph View를 볼 수 있다. *Graph View: 함수 흐름을 블록 단위 그래프로 보여줌 F5를 눌러 디컴파일하면 다음과 같은 101줄의 코드로 변환되었다.
像豆包电脑那样,鼠标在桌面上拖动一个文件,刚开始拖动,还没进入任何窗口,豆包就能感知到,然后在屏幕右下角弹出提示,可以帮忙解读文件。这个是怎么实现的? 目前,通过鼠标钩子判断是否在拖拽,如果在拖拽,就通过 OleGetClipboard 函数从剪贴板获取文件信息,但是剪贴板里面没有文件相关的信息。代码如下: #include <windows.h> #include <shlobj.h> #include <vector> #include <string> #include <iostream> #include <chrono> #include <thread> HHOOK g_mouseHook; bool g_isDragging = false; POINT g_dragStartPos = { 0, 0 }; const int DRAG_THRESHOLD = 3; // 拖动阈值(像素) void ExtractFileInfoFromDropClipboard(); void CheckOtherDataFormats(IDataObject*...
Malware development trick 46: simple Windows keylogger. Simple C example
﷽ Introduction to Malware Binary Triage (IMBT) Course Looking to level up your skills? Get 10% off using coupon code: MWNEWS10 for any flavor. Enroll Now and Save 10%: Coupon Code MWNEWS10 Note: Affiliate link – your enrollment helps support this platform at no extra cost to you. Hello, cybersecurity enthusiasts and white hackers! This post is very simple but not less important. One of my students ask about another simple trick in malware development: keylogging logic.
Putting Our Hooks Into Windows
We're back with another post about common malware techniques. This time we are talking about setting Windows hooks. This is a simple technique that can be used to log keystrokes or inject code into remote processes. We will be employing the use of SetWindowsHookEx to register a function to be called whenever an event is triggered. We will demonstrate this method in C and C# like we have in previous posts. 1.1 How Does it Work? This attack works by utilizing the Windows SetWindowsHookEx function.
win32 mapwindowpoints
#include <windows.h> #include <iostream> // Global variables for window handles HWND hWndMain; HWND hWndChild; // Function to create a console window void CreateConsole() { // Allocate a console for the calling process AllocConsole(); // Redirect standard output to the console FILE* pFile; freopen_s(&pFile, "CONOUT$", "w", stdout); // Optionally, you can redirect standard input and error as well freopen_s(&pFile, "CONIN$", "r", stdin); freopen_s(&pFile, "CONOUT$", "w", stderr); std::cout <<...
额
/******************************************/ class CMyWindow : public CWindowImpl { public: DECLARE_WND_CLASS(_T("CMyWindowClass")) BEGIN_MSG_MAP(CMyWindow) MESSAGE_HANDLER(WM_PAINT, OnPaint) END_MSG_MAP() LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { PAINTSTRUCT ps; HDC hdc = BeginPaint(&ps); // 绘制窗口内容 RECT rect; GetClientRect(&rect); DrawText(hdc, _T("Hello, World!"), -1, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE); EndPaint(&ps); return 0; } }; /* int WINAPI...
win32-鼠标消息、键盘消息、计时器消息、菜单资源_电脑按键消息值-CSDN博客
承接前文: win32窗口编程 windows 开发基础 win32-注册窗口类、创建窗口 win32-显示窗口、消息循环、消息队列 键盘消息 WM_KEYDOWN :按键被按下时产生。 WM_KEYUP :按键被放开时产生。 WM_SYSKEYDOWN :系统按键被按下时产生,比如:ALT、F10等。 WM_SYSKEYUP :系统按键放开时产生。 附带信息: WPARAM :按键的 Virtual Key Code(虚拟键码),虚拟键码是操作系统定义的一组唯一标识不同键的整数值,用来表示每个键盘键的抽象标识。虚拟键码与具体的物理键盘码(如扫描码)或字符不同,它不依赖于特定的键盘布局。应用程序通过检查wParam的值可以得知是哪个键被按下了,然后可以进行相应的处理逻辑。因为虚拟键码是统一的跨越不同键盘布局的标识符,这样设计帮助开发者编写跨平台和可移植的应用程序。 LPARAM :按键的参数,例如按下的次数 按下一个按键并松开,会产生一个 WM_KEYDOWN 消息和一个 WM_KEYUP 消息(成对出现)。 按下一个按键不松开,会连续产生 WM_KEYDOWN...
windows SDK编程 --- 消息之键盘消息(4)
前置知识 在Windows操作系统中,键盘消息是用来通知应用程序有关键盘输入事件的一种机制。当用户在键盘上进行操作,比如按键或释放键时,Windows会生成相应的消息并发送给处理这些输入的应用程序。这些消息对于开发图形用户界面(GUI)应用程序至关重要,因为它们允许应用程序响应用户的输入。 下面是几种主要的键盘消息及其用途的详细说明: WM_KEYDOWN 描述: 当用户按下一个键盘键(并未完全释放)时发送此消息给拥有焦点的窗口。 参数: wParam:虚拟键码。 lParam:提供了有关按键的更多信息,如重复次数、扫描码、ALT键是否被按下等。 lParam 参数的详细位分布: 0-15位:重复计数(Repeat count)。这表示自从用户开始按下键以来,由于按键保持不放,相同的消息被自动重复发送的次数。这个计数不是累积的,每次消息发送时都是独立的计数。 16-23位:扫描码(Scan code)。这是键盘硬件产生的代码,用于识别物理键。 24位:扩展键标志(Extended-key flag)。如果是扩展键(如功能键、方向键等),该位为1。 25-28位:保留,未使用。...
GUI02-在窗口上跟踪并输出鼠标位置(Win32版)-CSDN博客
(1) 响应 WM_MOUSEMOVE 消息获得鼠标位置; (2) 响应 WM_PAINT 将鼠标位置输出到窗口中; (3) 学习二者之间的关键步骤:调用 InvalidateRect() 以通知窗口重绘。 零.
NX二次开发跟随鼠标响应的动态预览_ug二次开发 钩子实现-CSDN博客
用到了鼠标钩子和坐标转换, 启动钩子后,程序会一直捕捉你的鼠标响应,会一直执行你实现的代码,所以在数据的处理上一定要严格,不能出现变量未初始化和空指针等情况,不然会造成程序闪退,在程序执行完一定要将钩子卸载干净,不然也会造成程序闪退。如果你遇到类似问题解决不掉可以关注博主,给博主留言。 LRESULT CALLBACK hookproc(UINT nCode,WPARAM wParam,LPARAM lParam);//声明在静态全局 void GetScreenPt(HWND delta,POINT pt,double screenXYZ[3]); HHOOK hook = NULL; //卸载钩子 if(hook!=NULL) { UnhookWindowsHookEx(hook); hook = NULL; } //钩子启动 DWORD id =GetCurrentThreadid(); hook =SetWindowsHookEx(WH_MOUSE,(HOOKPROC)hookproc,NULL,id); //获取视图坐标 void GetScreenPt(HWND...
西安邮电大学Windows编程---菜单的设计_cmd界面实现下拉菜单功能-CSDN博客
吐槽 由于这学期开了一门Windows编程的选修课,在课上老师点到我说让我上去讲解一个地方,说讲了就给平时分加50。 加50分平时分是你的谎言,到底是选修课老师,说好的谁上去讲了这个给谁平时分加50,到头来平时分跟大家一样,好好好,这么玩。让我失望透顶,虽然我讲的也确实一般,但是你这么玩有点不是很说的过去吧。 但吐槽归吐槽,我还是查询了一番资料,了解了一下的,下面讲讲我的见解吧。 提示:以下是本篇文章正文内容,下面案例可供参考 一、Windows编程是什么? 首先我从上了大学后使用的Dev-C++,然后就是使用的#include<stdio.h>来进行hello,world等操作。 我们一般学到的这种是在DOS环境下运行的程序,所以在实现功能时我们会看到这样的框框。 概括来说,我们学到的这种C语言编程是控制台应用程序,我们所有的输出结果一般来说的话都会在这个黑框框里显示或根据程序交互。...
28_UI通用对话框多少会一点之浏览文件夹与遍历目录-CSDN博客
UI通用对话框多少会一点之浏览文件夹与遍历目录 要想让用户选择一个文件夹,可以调用SHBrowseForFolder()函数∶ PIDLIST_ABSOLUTE SHBrowseForFolder(_in_ BROWSEINFO lpbi); 函数返回值为PIDLIST_ABSOLUTE数据类型,在shtypes.h头文件中定义如下︰ #define PIDLIST_ABSOLUTE LPITEMIDLIST typedef ITEMIDLIST *LPITEMIDLIST typedef struct _ITEMIDLIST { SHITEMID mkid; } ITEMIDLIST; typedef struct _SHITEMID { USHORT cb; BYTE abID[ 1 ]; }SHITEMID; 返回值类型PIDLIST_ABSOLUTE指定所选文件夹相对于命名空间根目录的位置。如果用户在对话框中单击了"取消"按钮、关闭了对话框或发生了错误,则返回值为NULL.
【小沐学C++】C++ 实现鼠标键盘钩子HOOK
1、简介 https://learn.microsoft.com/zh-cn/windows/win32/winmsg/about-hooks 挂钩是应用程序截获消息、鼠标操作和击键等事件的机制。 截获特定类型的事件的函数称为 挂钩过程。 挂钩过程可以对其接收的每个事件执行操作,然后修改或放弃该事件。 挂钩是系统消息处理机制中的一个点,其中应用程序可以安装子例程来监视系统中的消息流量,并在某些类型的消息到达目标窗口过程之前对其进行处理。 以下一些示例使用 挂钩: 监视用于调试的消息 支持录制和播放宏 为帮助密钥 (F1) 提供支持 模拟鼠标和键盘输入 实现基于计算机的训练 (CBT) 应用程序 2、相关函数 将应用程序定义的挂钩过程安装到挂钩链中。 你将安装挂钩过程来监视系统的某些类型的事件。 这些事件与特定线程或与调用线程位于同一桌面中的所有线程相关联。 HHOOK SetWindowsHookExA( [in] int idHook, [in] HOOKPROC lpfn, [in] HINSTANCE hmod, [in] DWORD dwThreadId ); HHOOK...
WindowsAPI--使用Windows API中键盘、鼠标监控钩子
本节将介绍如何使用Windows API中的SetWindowsHookEx和RegisterHotKey函数来实现键盘鼠标的监控。这些函数可以用来设置全局钩子,通过对特定热键挂钩实现监控的效果,两者的区别在于SetWindowsHookEx函数可以对所有线程进行监控,包括其他进程中的线程,而RegisterHotKey函数只能对当前线程进行监控。 首先我们来实现注册热键功能,注册热键可以使用RegisterHotKey()函数,该函数可以将一个热键与当前应用程序或线程绑定,使得当用户按下热键时,系统会自动将该热键的消息发送到该应用程序或线程中,该函数原型如下; BOOL RegisterHotKey( HWND hWnd, int id, UINT fsModifiers, UINT vk ); 其中,参数的含义如下: hWnd:热键所属的窗口句柄,通常设置为NULL,表示与当前线程绑定 id:热键的ID号,用于区分不同的热键 fsModifiers:热键的修饰键,可以使用组合键,例如Ctrl、Alt、Shift等...
dx9 pong game
Author 212 October 28, 2023 08:53 PM I am trying to get paddles to move in a pong game using dx9 I put y variables in the WM_KEYDOWN function but they don't seem to work even though exit(0) works.
Making a Simple Screensaver for Windows 95 using C++
In the world of modern computing, where screensavers have become an afterthought due to advancements in display technology and power-saving features, it’s fun to take a trip down memory lane and explore how screensavers were created in the early days of computing. In this article, we’ll dive into the nostalgic world of Windows 95 and learn how to make a simple Screensaver using C++.
Reboot or not to reboot?
Download C++ Source Code Table of Contents Introduction Simple Application PeekMessage and Device Notifications What About Windows Service?
13.2 外部DirectX绘制实现
开发者社区 人工智能 文章 正文 2023-10-13 2 简介: 在前一节中我们简单介绍了D3D绘制窗体所具备的基本要素,本节将继续探索外部绘制技术的实现细节,并以此实现一些简单的图形绘制功能,首先外部绘制的核心原理是通过动态创建一个新的窗口并设置该窗口属性为透明无边框状态,通过消息循环机制实现对父窗口的动态跟随附着功能,当读者需要绘制新的图形时只需要绘制在透明窗体之上即可实现动态显示的效果。 在前一节中我们简单介绍了D3D绘制窗体所具备的基本要素,本节将继续探索外部绘制技术的实现细节,并以此实现一些简单的图形绘制功能,首先外部绘制的核心原理是通过动态创建一个新的窗口并设置该窗口属性为透明无边框状态,通过消息循环机制实现对父窗口的动态跟随附着功能,当读者需要绘制新的图形时只需要绘制在透明窗体之上即可实现动态显示的效果。 首先第一步定义所需要的关键变量如下,代码中包含了DirectX 9和DWM的必要库,代码初始化了一些Direct3D 9的变量和指针,包括Direct3D 9设备、呈现参数、Direct3D 线条对象和 Direct3D...
13.1 使用DirectX9绘图引擎
DirectX 9 是由微软开发的一组多媒体应用程序接口API,用于创建和运行基于Windows平台的多媒体应用程序,尤其是游戏。它是DirectX系列中的一个版本,于2002年发布,是DirectX系列中的一个重要版本,DirectX 9在其发布时引入了许多新的功能和性能优化,成为当时PC游戏开发的主要标准,许多经典的PC游戏使用了DX9作为其图形和音频渲染引擎。虽然后续出现了更多强大的引擎,但本质上都是可以兼容Dx9的。 在使用Dx9引擎之前读者需要自行下载该绘制库,当然在课件中笔者已经为大家准备了绿色版,读者可自行解压到指定目录下,在目录下有一个Developer Runtime其内部是引擎运行时所需要的运行环境,读者可根据不同的需求安装对应位数的运行库,安装成功后则可配置开发目录,一般而言我们只需要关注Include引入目录,以及Lib库目录即可。 读者可自行打开属性页面,并选中VC++目录自行配置,如下图所示; 13.1.1 初始化变量...
12.1 使用键盘鼠标监控钩子_孤风洗剑的博客-CSDN博客
本节将介绍如何使用Windows API中的SetWindowsHookEx和RegisterHotKey函数来实现键盘鼠标的监控。这些函数可以用来设置全局钩子,通过对特定热键挂钩实现监控的效果,两者的区别在于SetWindowsHookEx函数可以对所有线程进行监控,包括其他进程中的线程,而RegisterHotKey函数只能对当前线程进行监控。 首先我们来实现注册热键功能,注册热键可以使用RegisterHotKey()函数,该函数可以将一个热键与当前应用程序或线程绑定,使得当用户按下热键时,系统会自动将该热键的消息发送到该应用程序或线程中,该函数原型如下; BOOL RegisterHotKey( HWND hWnd, int id, UINT fsModifiers, UINT vk ); 其中,参数的含义如下: hWnd:热键所属的窗口句柄,通常设置为NULL,表示与当前线程绑定 id:热键的ID号,用于区分不同的热键 fsModifiers:热键的修饰键,可以使用组合键,例如Ctrl、Alt、Shift等...
BUUCTF reverse wp 51 - 55
findKey shift + f12 找到一个flag{}字符串, 定位到关键函数, F5无效, 大概率是有花指令, 读一下汇编 这里连续push两个byte_428C54很奇怪, nop掉下面那个, 再往上找到函数入口, p设置函数入口, 再F5 LRESULT __stdcall sub_401640(HWND hWndParent, UINT Msg, WPARAM wParam, LPARAM lParam) { int v5; size_t v6; DWORD v7; int v8; int v9; CHAR *v10; CHAR v11[256]; char v12[7]; __int16 v13; char v14; char Str[253]; __int16 v16; char v17; CHAR v18[256]; CHAR String[4]; int v20; __int16 v21; CHAR Text[32]; struct tagRECT Rect; CHAR Buffer[100]; HDC hdc; struct tagPAINTSTRUCT...
DirectX12学习笔记-创建窗口-CSDN博客
创建窗口就是纯的Win API,我设想的窗口是这样的: 我们调用WinMain启动窗口,然后在WinMain初始化和启动消息循环。 消息会传入OnEvent, WndProc是窗口过程函数(每个窗口都有一个WndProc函数,用于接收和处理窗口相关的消息,如鼠标点击、键盘输入、窗口大小调整等。) #pragma once #include<Windows.h> namespace LocalRenderer { class Window { MSG msg; public: HWND WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); void OnEvent(MSG& msg) const; static LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); }; } //然后就实现窗口吧 #include"Window.h" #include...
SimpleCG程序交互操作_b2b160的博客-CSDN博客
之前所有示例程序都是属于展示型的,只是作为展示板输出使用,不涉及键盘和鼠标的输入交互,下面我们开始接触具有交互功能的程序。 没有交互功能的程序可以满足一定需求,不过大部分的程序是不能脱离交互功能的。程序依据使用者的操作进行相应反应并进行相关输出从而达到互动,将让程序的魅力提高一个层次。一个典型的应用就是游戏,所以学习完本篇内容后将可以进行一些游戏程序的编写。当前SimpleCG库主要支持的输入操作是鼠标和键盘,下面看看具体如何操作吧。 想要在SimpleCG中处理Windows的交互操作,就是需要定义一个消息处理函数,消息处理函数名字可以随便定义,但形式是固定的。例如鼠标消息固定形式如下所示: LRESULT OnLButtonDown( HWND hWnd, WPARAM wParam, int nX, int nY ) { } 名字OnLButtonDown是可以自己定义的,一般也是按消息功能命名。定义完消息函数后,依据想要接收的消息进行注册,所谓注册也就是调用一个设置函数。例如想要接收左键点击消息,按如下方式设置: SetMouseProcess(...
使用Visual Studio 2022实现透明按钮和标签、POPUP样式窗体的一种工业系统的UI例程
例程实现的功能说明 1、主窗体采用POPUP样式,无标题栏、无菜单栏,适合工业类软件 2、按钮、标签使用自绘,实现透明样式,可以实现灵活的样式设计,更具设计感 按钮重绘函数:OnDrawItem() 按钮样式设定:WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON | BS_OWNERDRAW 消息处理函数的设定: case WM_DRAWITEM: OnDrawItem(hWnd, message, wParam, lParam); break; case WM_CTLCOLORBTN: return (LRESULT)(HBRUSH)GetStockObject(NULL_BRUSH); break; 标签重回函数:DrawStatic() case WM_CTLCOLORSTATIC: return DrawStatic(hWnd, message, wParam, lParam); break; 3、整个UI进行了独立设计,导出了函数,可以在主程序使用 4、实现了全局变量的导入,减少了局部变量的使用...
ATM security analysis 3.0: PHDays 12 in review
Python, Java, C++, Delphi, PHP—these programming languages were used create a virtual crypto ATM machine to be tested by the participants of the $NATCH contest at Positive Hack Days 12. The entire code was written by ChatGPT and proved to be exceptionally good. This time, we had reviewed the contest concept and decided to use a report system. In addition to standard tasks (kiosk bypass, privilege escalation, and AppLocker bypass), this year's participants faced new unusual tasks.
TCP-消息队列模型_老白_的博客-CSDN博客
#include "main.h" fd_win_set setSockets; VOID Server_write_error() { } int cteateserver(HWND hwnd) { WORD wVersionRequested; WSADATA wsaData; int err; /* 使用Windef.h中声明的MAKEWORD(低字节、高字节)宏 */ wVersionRequested = MAKEWORD(2, 2); /*启用网络链接库,调用的封装库命令*/ err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) { /* Tell the user that we could not find a usable */ /* Winsock DLL.
从应用层到MCU,看Windows处理键盘输入 [2.a.1.传球手User32.dll]
副标题:精准型消息断点 前文作为系列的开篇,我们站在Notepad.exe的视角,看它接过系统传来的消息,交由Notepad的窗口处理函数(WndProc)进行处理的过程。User32.dll!DispatchMessage API是前面"系统传来"4个字中的一环,也是最靠近应用层的一环。本文从该API切入,逐渐远离熟悉的应用层。开始前先回顾1个User32.dll导出的API(也是本文的主角): 1.
Windows内核开发_windows 内核开发-CSDN博客
Windows内核开发 对话框是一种很特殊的窗口,体现在消息的处理上 WndProc(...){ ... DefWindowProc(...); } 缺省函数(...){ ... 自定义函数(...); ....
【C++图形化界面】使用HiEasyX优化黑框输入输出交互界面_easyx可以做输出框吗_今晚吃奥利奥炒酸奶的博客-CSDN博客
实现一份不错的课程设计,往往需要利于进行实现良好交互的图形化界面。 在这学期的课程设计中,我发现了一套可以通用的图形化界面,适合需要界面,但不需要多高级的界面的,并且像我一样图形化知识基础为0的C/C++小白。 现记录如下: (1)运行环境:VS2019 (2)实现效果: ①在编辑框内可以输入内容(能实现改变字号、字体、字色、背景颜色,设置只读等基础设置),将输入的内容写入到文件中 ②调用其他程序的exe(想优化输入输出的那个程序) ③可点击按钮,查看运行结果 (3)待继续优化的方向: ①目前输入、输出无法支持中文,只能全英。 ②打开初始界面后,若点开了其他如浏览器等覆盖该界面后,编辑框有一定几率会直接不见。 (1)发现需要实现简单的图形化界面问题,主要满足大学课设的一般需求。 (2)考虑过QT和C#,没使用的原因很简单,就是对这两个完全没什么了解,并且希望只凭借自己浅薄的C/C++的知识就能实现,不需要多么高级的效果。 (3)了解发现easyx该文件可以实现简单的图形化界面,于是着手开始实践。但是等到实现了后,发现当前的效果只能是:...
Dx11--用dx11绘制棱台,并用键盘和鼠标进行旋转缩放操作_d3d11 缩放_Freak587的博客-CSDN博客
目录 一、 二、 三、 前言: 当我们要绘制如下图所示的立体图形棱台时,如果我们用顶点缓冲区来绘制的话,那我们需要绘制36个顶点。其中,我们知道棱台也就拥有8个顶点,这也说明了其余的28个顶点是重复的顶点。 能不能减少顶点的创建获得内存与性能的提升呢?那么,索引缓冲区的作用就来了! 1.下图是棱台的八个顶点 2.然后我们再把顶点数据放到索引数组里,我们就可以重复地利用顶点数据了,如下图所示 解释:如0,1,2就是利用第0个顶点,第1个顶点和第2个顶点绘制了一个三角形,所以这里,我们就利用了012,230六个顶点即两个三角形来绘制正面(四边形) 似乎特别容易理解,但是我们还没有创建索引缓冲区呢!我们需要索引缓冲区来和设备上下文打交道。 创建缓冲区: //=======================================索引缓存的设置============================================== // --------索引数组 DWORD indices[] = { // 正面 0, 1, 2, 2, 3, 0, // 左面 4, 5, 1,...
笔记--学习mini3d代码_黑山老妖的博客的博客-CSDN博客
主要是记录学习mini3d代码时,查的资料; 从github下载的代码: GitHub - skywind3000/mini3d: 3D Software Renderer in 700 Lines !!3D Software Renderer in 700 Lines !! Contribute to skywind3000/mini3d development by creating an account on GitHub.https://github.com/skywind3000/mini3d 1.1 类型定义以及结构体 typedef unsigned int IUINT32; //===================================================================== // 数学库:此部分应该不用详解,熟悉 D3D 矩阵变换即可 //===================================================================== typedef struct { float...
Windows 程序设计--- 鼠标(1)
最近学习了一下Windows 程序设计这本书中的鼠标章节,现在总结一下学习的内容。大家可以一起参考。我将分为两个部分进行介绍。有关鼠标更具体的学习可以参考微软官方文档鼠标输入 1.鼠标的基础知识 1.0 定义:鼠标带有一个或者多个按钮的定位设备。区别于键盘:输入和管理文本功能。鼠标主要用来绘制和处理图形对象。我们常用的鼠标是两个按钮+一个滚轮,其实滚轮中间也有一个按钮。 1.1 操作系统中与鼠标有关的API函数: ①获取电脑是否连接鼠标: fMouse = GetSystemMetrics(SM_MOUSEPRESENT) ②确定鼠标按钮数 cButtons = GetSystemMetrics(SM_CMOUSEBUTTONS) ③设置鼠标的其他信息 BOOL WINAPI SystemParametersInfoW( _In_ UINT uiAction, _In_ UINT uiParam, _Pre_maybenull_ _Post_valid_ PVOID pvParam, _In_ UINT fWinIni); 例如获取鼠标滚轮信息:...
进程通信的五种普通方法_凯迪网资讯
安全汇 2023-02-01 05:54 广东 4350 0 0 SendMessage 和 PostMessage 最大的区别: SendMessage:发送的消息不进入消息队列,而是 将指定的消息发送到一个或多个窗口,所以会等待对方的处理,直到对方接收到了才返回 PostMessage:发送的消息进入到消息队列,所以不会等待对方的处理,直接放到消息队列就返回 hmod 和 dwThreadId参数说明: 如果需要设置局部钩子(作用范围:单一的进程),那么hmod参数为0,dwThreadId设置为需要钩住的线程的ID。 如果需要设置全局钩子(作用范围:所有有效进程),那么hmod参数为模块句柄(钩子的回调函数需要在DLL中),dwThreadId设置为0。 #include#include#include int main(int argc, char* argv[]){ //HWND hwnd; HMODULE hModule; HWND hWnd; HHOOK g_Hook; hModule =...
Minimal cross-platform graphics
I grew up with BASIC and Turbo Pascal. My first programs were very simple graphical games. I still miss the era of BGI and BASIC’s painting commands. Those graphics were neither beautiful nor fast, but they were simple. Simple enough for a kid with only elemental geometry knowledge to build something exciting. Even today, whenever I want to prototype or visualise something, to experiment with generative art or to write a toy graphical app – I feel nostalgic for the old days.
Pong and Direct X9
Hee is my code for a pong game using directx9, I am unable to move the paddles up an down I just need a little help.
Windows编程_熠熠晨曦_的博客-CSDN博客
Windows编程基础 应用程序分类 在Windows这个操作系统平台上,共有三类应用程序 控制台程序Console Dos程序,本身没有窗口,通过Windows DOS窗口执行 窗口程序 库程序 存放代码、数据的程序,执行程序时可以从中取出代码执行和获取数据 静态库程序:扩展名LIB,在编译链接程序时,将代码放入到执行文件中 动态库程序:扩展名DLL,在程序执行时从中获取代码 应用程序对比 入口函数 控制台程序 - main 窗口程序 - WinMain 动态库程序 - DllMain 静态库程序 - 无入口函数 文件存在方式 控制台程序、窗口程序 - EXE文件 动态库程序 - DLL文件 静态库程序 - LIB文件 开发工具和库 编译工具 编译器CL.EXE 将源代码编译成目标代码.obj 链接器LINK.EXE 将目标代码、库链接生成最终文件 资源编译器RC.EXE (.rc)将资源编译,最终通过链接器存入最终文件 路径 :C:\Program Files (x86)\Microsoft Visual Studio \VC\bin 库和头文件 Windows库(动态库)...
ImGUI 1.87 绘制D3D外部菜单
ImGUI 它是与平台无关的C++轻量级跨平台图形界面库,没有任何第三方依赖,可以将ImGUI的源码直接加到项目中使用,该框架通常会配合特定的D3Dx9等图形开发工具包一起使用,ImGUI常用来实现进程内的菜单功能,而有些辅助开发作者也会使用该框架开发菜单页面,如下将公开新版ImGUI如何实现绘制外部菜单的功能。 ImGUI官方下载地址:https://github.com/ocornut/imgui/releases 在使用ImGUI页面之前需要先来实现一个简单的附着功能,即如何将一个窗体附着到另一个窗体之上,其实代码很简单,如下所示当用户输入进程PID时,会自动跟随窗体并附着在窗体顶部。 #include <Windows.h> #include <iostream> struct handle_data { unsigned long process_id; HWND best_handle; }; BOOL IsMainWindow(HWND handle) { return GetWindow(handle, GW_OWNER) == (HWND)0 &&...
Windows API应用程序开发--按钮和下拉框
一、工程创建 打开VS,左上角文件-新建-项目。 筛选语言为C++,平台为Windows,项目类型为桌面,选择Windows桌面向导,下一步。 Windows桌面向导 对项目命名,选定项目路径为先前的文件夹,创建。 在应用程序类型中选择桌面应用程序(.exe),勾选空项目,确定。 应用程序类型 在解决方案资源管理器窗口中,选中创建的项目,右击,添加-新建项,分别选择C++文件(.cpp) 和 头文件(.h),改名,添加。 添加文件 二、控件的创建 1、控件 窗口控件种类繁多,按钮、编辑框、列表框、组合框(下拉框)、滚动条等。实际上,它们都属于父窗口的子窗口,因此在创建时,同样是使用CreateWindow / CreateWindowEx函数。在窗口样式的指定时,将其指定为WS_CHILD就可以使其成为一个子窗口。标准的子窗口控件,也称为通用控件(Common Control)。 对窗口样式指定的选项很多,样式参考。 2、创建控件 创建控件通常在WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)函数内。...
进程的通信 - WM_COPYDATA
在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。其中使用SendMessage向另一进程发送WM_COPYDATA消息是一种比较经济实惠的方法。 WM_COPYDATA通信需要将传递的消息封装在COPYDATASTRUCT结构体中,在SendMessage消息传递函数时作为lParam参数传递 COPYDATASTRUCT的结构如下: typedef struct tagCOPYDATASTRUCT { ULONG_PTR dwData; DWORD cbData; PVOID lpData; } COPYDATASTRUCT, *PCOPYDATASTRUCT; 参数dwData 为自定义数据,按照自己习惯设置就好,不影响对象的传输; 参数cbData 表示传递数据的大小(以字节为单位 参数PVOID 表示传递的数据,是一个void*类型...
使用windows钩子(HOOK)实现DLL注入_hook注入_大草原的小灰灰的博客-CSDN博客
DLL注入 在Windows中,每个进程有自己私有的地址空间。当我们用指针来引用内存的时候,指针的值表示的是进程自己的地址空间中的一个内存地址。进程不能创建一个指针来引用属于其他进程的内存。因此,如果进程有一个缺陷会覆盖随机地址处的内存,那么这个缺陷不会影响到其他进程所使用的内存。 独立的地址空间对开发人员和用户是非常有利的。对开发人员来说,系统更有可能捕获错误的内存读/写。对于用户来说,操作系统变得更加健壮了,因为一个应用程序的错误不会导致其他应用程序或操作系统崩溃。 所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。可以通过很多种方式来实现DLL注入。 HOOK技术 这篇文章主要介绍下通过HOOK技术来实现DLL注入 windows窗口程序 先创建一个windows窗口程序 新建一个win32项目 新建一个源文件,写一个windows窗口程序 #include <windows.h> typedef BOOL(*P)(); //窗口处理函数 LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg,...
C++ 窗体程序初步(全网最全)
官方入门文档:[Create a traditional Windows Desktop application (C++)](https://docs.microsoft.com/en-us/cpp/windows/walkthrough-creating-windows-desktop-applications-cpp#:~:text=From the main menu%2C choose,Desktop Wizard then choose Next.) IDE的选择 窗体程序的开发我会推荐大家使用微软旗下的Microsoft Visual Studio 打开网页后下拉到最下方,选择对应版本就可以直接下载 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LN78QTeB-1660453573869)(https://f.pz.al/pzal/2022/08/14/2faeac26253ef.gif)] 下载后双击运行,选择如下图的所需配置项(没有python需求的可以不勾选python,对窗体程序开发并没有影响) 然后点击下载并安装...
C++ 在Win32中简单使用WebView2
webView2简介 Microsoft Edge WebView2 控件允许在本机应用中嵌入 web 技术(HTML、CSS 以及 JavaScript)。 WebView2 控件使用 Microsoft Edge 作为绘制引擎,以在本机应用中显示 web 内容。 使用 WebView2 可以在本机应用的不同部分嵌入 Web 代码,或在单个 WebView2 实例中生成所有本机应用。可以去官网查看具体信息,比如支持哪些系统,这是比较重要的(抄袭官网的 ps: 手动狗头) ps: webVIew2 简介 环境准备: 1.visual studio 2022 (虽然有点新,但是和其他版本差不多) 2.WebView2 是需要 Microsoft Edge WebView2 Runtime支持 检查自己是否安装了 Microsoft Edge WebView2 Runtime 相信大家怎么找到这个位置(继续狗头)。 如果没有下载的话: 下载链接:webView2 双击即可下载 搭建环境 最好以管理员方式运行 visual studio 1.创建一个Win32项目 ps: visual...
Vulkan: vytvoření okna
Zdrojáky si můžete stáhnout. Pro zkompilování na Win32 nepotřebujeme nic instalovat. Pro platformu Xlib a Wayland ale můžeme potřebovat vývojové balíčky, tedy pokud je již nemáme nainstalované. Na Ubuntu jsou to obyčejně libx11-dev pro Xlib a libwayland-dev a wayland-protocols pro Wayland. Ve zdrojácích máme tři cpp soubory, každý pro jednu platformu. Začneme od Win32, ať pak můžeme pokračovat knihovnou Xlib následovanou moderním Waylandem.
Windows中的Hook机制_windows hook_AlbertOS的博客-CSDN博客
Hook,被译作“钩子”或者“挂钩”。 我在另一篇博客中也简单提出这种机制vue2的生命周期函数 vue框架中的生命周期函数就是一种钩子函数,它是一种中断消息的机制。 通过钩子函数达到对特定事件的消息的响应和操作。 windows中的Hook技术被广泛应用于安全的多个领域,比如杀毒软件的主动防御功能,涉及到对一些敏感API的监控,就需要对这些API进行Hook;窃取密码的木马病毒,为了接收键盘的输入,需要Hook键盘消息;甚至是Windows系统及一些应用程序,在打补丁时也需要用到Hook技术。接下来,我们就来学习Hook技术的原理。 这里借用别人的图来解释一下钩子的机制, 在Micrisoft Windows中, 每个进程都有自己的私有地址空间。当我们用指针来引用内存的时候,指针的值表示的是进程自己的自制空间的一个内存地址。进程不能创建一个指针来引用属于其他进程的内存。 简单的说就是在调用函数和被调用函数之间再加上一个Hook函数,这个函数就可以接受消息、处理消息、转发消息了,从而实现我们想要的自定义功能。...
Qt 基于win11无边框界面的实现(最大化按钮悬浮弹出snap layout)
提示:这里可以添加本文要记录的大概内容: 在Qt界面开发中,为了使UI界面更加协调,或者说标题栏需要添加自定义的一些功能或者控件时,常常使用无边框窗口进行设计符合自己需求的标题栏,然而当去掉系统边框之后,在普通按钮上悬浮又不会弹出snap layout布局,强烈的好奇心下,就产生一个可以支持win11 snap layout 的无边框窗口。 提示:以下是本篇文章正文内容,下面案例可供参考 1、QT版本以及编译器 Qt版本: Qt5.9.9 编译器:MSVC2015 64bit 2、主要参考文章以及代码参考 Windows平台Qt无边款窗口技术细节 这里还要感谢该篇文章大佬提供的思路以及帮助,很有耐心的解决我的疑问。 windows系统实现无边框,同时支持Aero效果 代码是在这个开源项目的基础之上进行修改的,是一个很完美的Qt无边框解决方案,具体无边框的细节可以参考这个,下面是一个翻译的文章基于QMainWindow 实现的效果很好的 Qt 无边框窗口 3、声明 由于本人知识有限,如有什么错误或者不足的地方,还请各位大佬帮忙指出。...
Windows --- 常用消息以及消息附加参数
Win32:Windows 窗口的原理,既可以编 32 位也可以编 64 位 WM:Windows Message 创建窗口的窗口类型名要写第一步、第二步注册窗口的类型名,否则会导致创建窗口失败 下面来解析 Windows 中常用的消息: 窗口处理函数会处理很多消息,会处理哪些消息呢?下面来监测一下这些消息是什么 //窗口处理函数 LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { //定义一个字符串 wchar_t szMsg[100]; //多字节用 sprintf //格式化-> 宽字符用 wsprintf //把格式化的字符串存储到szMsg中,格式化窗口句柄hWnd 用十六进制显示 #会自动加前缀 wsprintf(szMsg,L"hWnd:%#x\tuMsg:%#x\twParm:%#x\tlParam:%#x\n",hWnd,uMsg,wParam,lParam); //用于输出调试信息 OutputDebugString(szMsg);...
【如何用C++编程制作一个简单的游戏引擎】_c++游戏引擎_watsonbu的博客-CSDN博客
写一个游戏引擎类的头文件(.h); 写一个游戏引擎类的实现文件(.cpp); 在编程中如何调用游戏引擎。 一 、在VS2015中新建一个 Visual C++ 常规空项目,添加一个游戏引擎头文件实现文件。详细步骤如下: 二 、游戏引擎头文件 GameEngine.h 源代码: #pragma once #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow); LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); BOOL GameInitialize(HINSTANCE hInstance); void GameStart(HWND hWindow); void GameEnd(); void GameActivate(HWND hWindow); void GameDeactivate(HWND...
Windows.h 库函数的学习
句柄: 参考链接 1、FindWindow函数 该函数可以通过窗口类名或者窗口标题名来查找特定窗口句柄,返回值是窗口的句柄。 HWND FindWindowW( [in, optional] LPCWSTR lpClassName, [in, optional] LPCWSTR lpWindowName ); 微软windows.h API文档 这里可以用SPY++抓类名/窗口标题。 抓目标窗口,这里就复制标题来抓句柄。 2、SendMessage函数 这个函数的功能是向句柄对应窗口发送指令 SendMessage function (winuser.h) - Win32 apps | Microsoft Docs LRESULT SendMessage( [in] HWND hWnd, [in] UINT Msg, [in] WPARAM wParam, [in] LPARAM lParam ); UNI 例子1- WM_CLOSE 代码 //摧毁窗口测试 void testHWND() { HWND window; //定义一个窗口句柄变量,用来储存窗口句柄...
Pong and Direct3D
I am learning DX9 and C++. I am making a pong game using Direct3D. I am trying to move the player paddle using the move_player variable in WMKEYDOWN and wParam==VKUP. I think I am having a scoping problem. Here is some of my code.
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with WPARAM
Contact WPARAM, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack