网络上有很多使用MFC和.NET实现windows剪贴板监控的程序。这里参考《Windows程序设计(第五版)》实现了一个最简单的Win32剪贴板监控程序。采用原始的win32编程,不适用MFC和.NET等的封装库。

下面是需要修改的WndProc函数。(整个工程在https://github.com/kingzone/ClipboardMonitor)

//
//  函数: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  目的: 处理主窗口的消息。
//
//  WM_COMMAND  - 处理应用程序菜单
//  WM_PAINT    - 绘制主窗口
//  WM_DESTROY  - 发送退出消息并返回
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
static HWND hwndNextViewer;
HGLOBAL hGlobal;
PTSTR pGlobal;
RECT rect;
switch (message)
{
case WM_CREATE:
hwndNextViewer = SetClipboardViewer(hWnd);
break;
case WM_CHANGECBCHAIN:
if((HWND)wParam == hwndNextViewer)
hwndNextViewer = (HWND)lParam;
else if(hwndNextViewer)
SendMessage(hwndNextViewer, message, wParam, lParam);
//return 0;
break;
case WM_DRAWCLIPBOARD:
if(hwndNextViewer)
SendMessage(hwndNextViewer, message, wParam, lParam);
InvalidateRect(hWnd, NULL, TRUE);
//return 0;
break;
case WM_COMMAND:
wmId    = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
// OpenClipboard, GetClipboardData, CloseClipboard
GetClientRect(hWnd, &rect);
OpenClipboard(hWnd);
#ifdef UNICODE
hGlobal = GetClipboardData(CF_UNICODETEXT);
#else
hGlobal = GetClipboardData(CF_TEXT);
#endif
if(hGlobal != NULL)
{
pGlobal = (PTSTR)GlobalLock(hGlobal);
DrawText(hdc, pGlobal, -1, &rect, DT_EXPANDTABS);
GlobalUnlock(hGlobal);
}
CloseClipboard();
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
ChangeClipboardChain(hWnd, hwndNextViewer);
PostQuitMessage(0);
//return 0;
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
转载:点击打开链接

Win32编程实现剪贴板监控查看相关推荐

  1. 如何监控员工电脑剪贴板并查看记录

    企业员工在日常使用电脑办公的过程中,剪贴板可以说是使用最为广泛和频繁的一项功能.不论是公司文件编辑,还是各应用程序之间共享信息,剪贴板都扮演着极为重要的角色.剪贴板实际上是Windows系统内置的一段 ...

  2. windows 剪贴板监控

    迅雷下载或者旋风下载都有一个很有意思的剪贴板监控功能,当你打开剪贴板监控时,如果你复制了一个下载的URL,这两个程序都会弹出来下载框来让你去下载,显得很智能,昨天发现灵格斯词霸也有个剪贴板取词功能. ...

  3. Win32 编程基础

    Windows编程框架 #include <windows.h> #include <windowsx.h>//函数声明BOOL InitWindow( HINSTANCE h ...

  4. Win32编程基础知识

    Win32编程基础知识 尽管Windows应用程序千变万化,令人眼花缭乱,但,消息机制和窗口过程却始终它们的基础,掌握了这两项技术,也就相当于把握住了问题的关键. 如果你以前是C程序员或是MFC的忠实 ...

  5. Win32编程基础知识(包括对程序的分析)

    管Windows应用程序千变万化,令人眼花缭乱,但,消息机制和窗口过程却始终它们的基础,掌握了这两项技术,也就相当于把握住了问题的关键. 如果你以前是C程序员或是MFC的忠实用户,只要你学习过C语言的 ...

  6. 什么是win32编程

       win=windows操作平台  32=32位的操作系统  顾名思义 可以简单理解为:编写可以在32位的windows操作系统下运行的程序. Win32编程,指的是用Window提供的API(A ...

  7. 利用Python和win32编程范例——按需定制一个按键精灵

    转自:作者 橘子一方 http://www.orangecube.net/articles/python-win32-example.html 利用Python和win32编程范例--按需定制一个按键 ...

  8. WIN32编程经验总结

    WIN32编程经验总结 分类: C/C++ 2013-10-28 10:37 157人阅读 评论(0) 收藏 举报 一 窗口和消息 1 前缀 前缀  全称  释义   CS  class style ...

  9. python pywin32 相同句柄_如何利用Python和win32编程避免重复性体力劳动(一)——开始、FindWindow和FindWindowEx...

    请移步至这里以获得更加的排版和阅读体验,谢谢您 本系列文章假设各位看官对python是足够熟悉的,但却不太了解win32编程. 嘛..其实我也没学过win32编程,脸请各位看官随意招呼. 需求:最近因 ...

最新文章

  1. 揭秘丨“北京八分钟”里中国制造的科技力量
  2. 周期串 字符串的最小正周期
  3. macOS完全卸载Android Studio方法
  4. javaI/O之PushbackInputStream
  5. ExceptionLess新玩法 — 记日志
  6. 数据结构c语言版第16页,数据结构c语言版
  7. aref无效 lisp_aref无效 lisp_Common Lisp专题4:数组
  8. 《机器学习实战》笔记(01):机器学习基础
  9. react之使用js创建虚拟DOM
  10. 批量标准化BN方法简介【避免了梯度消失和梯度爆炸、加速网络的收敛、优化网络结构】
  11. Redis:使用Redis的分布式锁
  12. python slicer_报表筛选:Excel Slicer与SQL Server Reporting Services(SSRS)参数
  13. spring 如何决定使用jdk动态代理和cglib(转)
  14. 从何润东代言团宝,看团购行业逐渐成熟
  15. selinux为enforcing模式时,运行anonymous上传之后无法删除
  16. Python爬取QQ音乐并下载
  17. JAVA基础——接口(全网最详细教程)
  18. 怎么制作gif动图,gif动态图怎么制作
  19. SEO优化 TDK的写法思路
  20. ExoPlayer播放器剖析(六)ExoPlayer同步机制分析

热门文章

  1. 【Git】Git概述、Git安装和使用、工作区,暂存区和版本库
  2. PTA 7-3 判断回文字符串
  3. 计算机网络 ARP协议全面实验分析讲解
  4. java程序一直运行_程序如何一直保持运行的?
  5. SLAM——视觉里程计
  6. 用爱心传承爱心 用善心铸就明天
  7. uniapp修改data数据后页面未更新渲染
  8. 【北大先修课】计算概论(A)题库全代码
  9. Linux系统基础-2018-图形界面
  10. 思科--高可用和高可靠网络考试