随笔分类 - c语言
c语言 将byte转化为二进制数值计算 2021.4.7
摘要:BYTE bytes1[4] = {0x00,0x10,0x40,0x00}; //创建4字节的字节数组 注意:字节是逆序的 BYTE bytes2[4] = {0x05,0x20,0x40,0x00}; DWORD b1 = *(DWORD *)bytes1; //先将bytes1转化成(DWOR
[汇编]JMP 指令 地址该写多少 2021.4.6
摘要:假如说要在00402000出写下跳转到00401000处用16进制该怎么写? 根据Intel x86 JMP指令的16进制为E9,所以地址为E9 XXXXXXXX,需要注意的是XXXXXXXX地址值不是要跳转的绝对地址值,而是从当前JMP命令到跳转位置的相对距离。 JMP指令转换为机器码时,需要计算
C语言 输出宽字符中文
摘要:#include <locale.h> void main(){ setlocale(LC_ALL, "chs"); printf("当前程序运行的工作目录:%ws",path); } 代码页编码 936 注意:setlocale(LC_ALL, "chs"); 一定要放在输出的前面 std::co
C语言 获取进程文件路径
摘要:DWORD GetModuleFileNameA( HMODULE hModule, // in 进程路径 LPSTR lpFilename, // out 存储文件路径的缓冲区首地址 DWORD nSize //in 缓冲区的大小); 头文件: windows.h 使用案例一:获取本进程的文件路径
C语言 dllMain的格式
摘要:/** 名称:DllMain 功能: dll被操作是系统会自动调用 参数:HANDLE hModule dll的句柄 DWORD ul_reason_for_call 调用原因 LPVOID lpReserved 如果是动态加载则为NULL 静态加载则为非NULL 返回值:BOOL 如果为False
C语言 导出函数的格式
摘要:#ifdef __cplusplus //如果是c++文件,就将endif内的代码用c编译器编译 extern "C" { #endif __declspec(dllexport) void SetProcName(LPCTSTR szProcName)//__declspec(dllexport)
以类比的方式理解函数指针
摘要:函数指针对我来说一直是老大难得问题,今天我终于对于他有了一点点理解。 一般情况下,对于函数指针大多数是下面两种情况: 1.void (*PFN_SetProcName)(LPCTSTR szProcName); 2.typedef void (*PFN_SetProcName)(LPCTSTR sz
MFC 文件对话框
摘要:1.CString 实质上是宽字符 LPCTSTR filter = _T("Dll files(.dll)|*.dll||"); //Dll files(.dll)为描述 *.dll 显示的类型 最后的|| 为结束的意思 可以追加 如:"Dll files(.dll)|*.dll|(Text fi
c语言监视本进程的键盘钩子
摘要:源码: #include "stdio.h" #include <Windows.h> #include "conio.h" LRESULT CALLBACK KeyboardProc(int code,WPARAM wParam,LPARAM lParam)//钩子过程 { printf("1")
c语言安装全局消息钩子的源代码
摘要:1 #include <stdio.h> 2 #include <conio.h> 3 #include <windows.h> 4 #define DEF_DLL_NAME "keyHook.dll" 5 #define DEF_FUN_NAME "keyboardPrc@12" 6 7 8 9