- 博客(16)
- 资源 (19)
- 收藏
- 关注
原创 获取特殊路径
获取特殊路径获取windows下的一些特殊路径,如桌面、我的文档、收藏等路径,使用 SHGetSpecialFolderPath 获取。 原型:BOOL SHGetSpecialFolderPath( HWND hwndOwner, _Out_ LPTSTR lpszPath, _In_ int csidl, _In_ BOOL fCreate)
2017-07-25 17:54:48 479
原创 windows下线程同步
windows下线程同步windows下的一些同步方法,volatile、Interlocke函数、CRITICAL_SECTION、SRWLOCK、Mutex。 - volatile: 变量声明未 volatile 变量,如:volatile int num = 0;Interlocke函数: 该系列函数能实现原子操作:LONG __cdecl InterlockedIncrement(
2017-07-19 16:17:17 382
原创 DLL导出
DLL导出DllMain 类似于main函数或者winmain等入口函数,当加载、卸载、线程启动、线程终止时会调用,可在此申请资源或清理资源等。DLL可以配合头文件和lib使用,或者使用LoadLibrary+GetProcAddress动态加载。代码: DLL: dllmain.cpp 生成DLL项目时会自动生成.#include "stdafx.h"BOOL APIENTRY DllMai
2017-07-16 18:36:58 294
原创 暂停和恢复进程
暂停和恢复进程CreateToolhelp32Snapshot创建线程快照,枚举线程,判断线程PID与选中的PID一致,则使用SuspendThread、ResumeThread暂停和恢复线程,进程的所有线程暂停或恢复,则进程也将会被暂停和恢复。进程被暂停后包括GUI都完全无响应。代码:BEGIN_MESSAGE_MAP(CSuspendProcessDlg, CDialogEx) ON_W
2017-07-16 18:17:03 1413
原创 枚举进程模块
枚举进程模块使用 CreateToolhelp32Snapshot 创建进程快照,第一个参数为 TH32CS_SNAPMODULE 时创建进程模块快照,类似枚举进程时使用的 Process32First、Process32Next,枚举进程模块时使用 Module32First、Module32Next 枚举进程模块。代码: CEnumModuleDlg:BEGIN_MESSAGE_MAP(CEn
2017-07-11 21:27:25 1023
原创 控制服务程序
控制服务程序枚举、启动、停止服务程序,使用OpenSCManager、EnumServicesStatus、OpenService、ControlService、StartService等API。 CEnumServiceDlg.cppBEGIN_MESSAGE_MAP(CEnumServiceDlg, CDialogEx) ON_WM_PAINT() ON_WM_QUERYDRA
2017-07-10 13:19:12 395
原创 守护进程
守护进程WaitForMultipleObjects 可以等待进程、线程、事件、信号、mutex等,可以用它实现进程保护,在需要保护的进程被结束时,重新启动保护进程,可以达到普通用户无法正常结束进程的目的,如保护进程和被保护进程互相保护,那就更难结束了。代码: stdafx.h#define WM_PROCESSEND WM_USER+1typedef struct PROCESS_STRUCT
2017-07-10 13:14:29 218
原创 异步socket TCP 通信
异步socket TCP 通信使用 WSAAsyncSelect 可实现异步 socket 通信,原型:WSAAsyncSelect( SOCKET s, //套接字 HWND hWnd, //接收网络事件的窗口句柄 unsigned int wMsg,//网络事件通知消息 long lWvent //套接字需
2017-07-10 13:09:01 640
原创 socket TCP 通信
socket TCP 通信SOCKET可用于主机间或者进程间通信等。 TCP/UDP通信流程: 代码(本机TCP): Server://启动监听线程void CSocketDlg::OnBnClickedStart(){ m_run = TRUE; if (!AfxBeginThread(CSocketDlg::StartRecvThread, this, THREAD
2017-07-10 13:05:42 367
原创 添加、移除托盘图标以及气泡提示
添加、移除托盘图标以及气泡提示在头文件中声明NOTIFYICONDATA类型的m_tray结构,然后再类向导中添加WM_NOTIFYICON消息的处理函数,使用 Shell_NotifyIcon 操作托盘图标。 .hpublic: BOOL AddRemoveTray(BOOL flag); NOTIFYICONDATA m_tray; BOOL ShowBubbleTip
2017-07-09 23:54:16 2011
原创 异步命名管道
异步命名管道命名管道可以用于进程间通信。 client 端: // 打开管道 HANDLE hPipe = CreateFile("\\\\.\\Pipe\\NamedPipe", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hPipe == I
2017-07-07 16:52:51 2333
原创 纯C MD5计算
纯C MD5计算代码是从网上找的,具体来源找不到了,在找来的代码上改了内存泄漏和改成纯C实现。 .c#include<string.h>#include <stdio.h> #include <stdlib.h> #include <memory.h> #include <math.h> typedef unsigned char BYTE;typedef unsigne
2017-07-07 16:41:36 433
原创 关机、注销、登录、锁屏、资源管理器重启等消息
关机、注销、登录、锁屏、资源管理器重启等消息关机、重启消息 WM_QUERYENDSESSION: 关机、重启时windows会广播一个WM_QUERYENDSESSION 消息,接收到该消息后,应用可以做一些清理退出动作,如果未处理返回,win10等会出现应用程序组织关机、重启的提示,win7等则会等待5s左右,然后强行关闭应用。使用时直接在 WindowProc 中处理 WM_QUERYEN
2017-07-07 13:34:23 6453
原创 微秒级延时
微秒级延时windows下Sleep()函数提供毫秒级延时,但是没有微秒级延时,以下代码可以微秒级延时:void DelayExec(double us) { if (us == 0) { return; } LARGE_INTEGER litmp; LONGLONG QPart1,QPart2;; double
2017-07-07 13:21:30 1021
原创 Windows下特权获取
Windows下特权获取Windows下部分操作需要特权才能执行,如下代码示例通过修改token获取SE_DEBUG_NAME特权,其他特权与此类似,只需要将SE_DEBUG_NAME换成其他特权即可,如下代码类似于MSDN的示例: https://msdn.microsoft.com/en-us/library/windows/desktop/aa446619(v=vs.85).aspx wi
2017-07-07 13:20:14 3967
原创 结束进程
结束进程使用TerminateProcess直接结束进程,如果结束不了,则修改token获取SE_DEBUG_NAME特权,再次TerminateProcess结束进程。//请求获取特权BOOL CKillPSDlg::SetPrivilege(LPCTSTR lpszPrivilege, BOOL bEnable){ OutputDebugString(lpszPrivilege);
2017-07-07 13:18:34 294
DLL函数和类导出
2017-07-16
暂停、恢复进程
2017-07-16
枚举进程DLL
2017-07-11
服务程序控制
2017-07-10
windows进程守护
2017-07-10
windows进程结束
2017-07-07
使用 GetAdaptersInfo 或 GetAdaptersAddresses 获取网络相关参数
2017-07-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人