网络上有很多使用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;
}
分享到:
相关推荐
以SDK方式编写未使用任何VCL控件,能够显示剪贴板中即时的文本内容。 在Delphi 10.4.2 下编译仅54.0 KB (55,296 字节),如果用低版本Delphi编译将更小,甚至到20K以下! 增加了监视剪切板细节的注释。 编译环境: ...
win32下实现视频播放。 C视频源代码 视频教程步骤源码 DDraw DirectX 实例 DES加密算法源代码 Detected memory leaks 检查内存泄漏源码 DigiStatic_src 自绘CStatic实现数字效果。 DirectShow开发指南pdf附属...
win32情况下实现媒体播放。 preemptivepopupkiller C#源码,实现简单游览器。 RangeScan扫描器源代码 ip地址扫描,发送邮箱。 ResizableLib 测试开源界面库Resizable。 RsPicture 自定义了一个图片库,然后引用...
win32下实现视频播放。 C视频源代码 视频教程步骤源码 DDraw DirectX 实例 DES加密算法源代码 如题。 Detected memory leaks 检查内存泄漏源码 DigiStatic_src 自绘CStatic实现数字效果。 DirectShow开发指南...
win32下实现视频播放。 C视频源代码 视频教程步骤源码 DDraw DirectX 实例 DES加密算法源代码 Detected memory leaks 检查内存泄漏源码 DigiStatic_src 自绘CStatic实现数字效果。 DirectShow开发指南pdf附属...
win32情况下实现媒体播放。 preemptivepopupkiller C#源码,实现简单游览器。 RangeScan扫描器源代码 ip地址扫描,发送邮箱。 ResizableLib 测试开源界面库Resizable。 RsPicture 自定义了一个图片库,然后引用...
win32下实现视频播放。 C视频源代码 视频教程步骤源码 DDraw DirectX 实例 DES加密算法源代码 Detected memory leaks 检查内存泄漏源码 DigiStatic_src 自绘CStatic实现数字效果。 DirectShow开发指南pdf附属...
第5章 剪贴板查看程序 第6章 进程查看程序 第7章 透明窗体实例 第8章 状态栏对话框 第9章 带微调和滑动条控件的工具栏 第10章 仿Winamp界面多媒体播放器 第11章 数据库操作--ODBC篇 第12章 数据库操作-DAO篇 第13章...
第5章 剪贴板查看程序 第6章 进程查看程序 第7章 透明窗体实例 第8章 状态栏对话框 第9章 带微调和滑动条控件的工具栏 第10章 仿Winamp界面多媒体播放器 第11章 数据库操作--ODBC篇 第12章 数据库操作-DAO篇 第13章...
第5章 剪贴板查看程序 第6章 进程查看程序 第7章 透明窗体实例 第8章 状态栏对话框 第9章 带微调和滑动条控件的工具栏 第10章 仿Winamp界面多媒体播放器 第11章 数据库操作--ODBC篇 第12章 数据库操作-DAO篇 第13章...
第5章 剪贴板查看程序 第6章 进程查看程序 第7章 透明窗体实例 第8章 状态栏对话框 第9章 带微调和滑动条控件的工具栏 第10章 仿Winamp界面多媒体播放器 第11章 数据库操作--ODBC篇 第12章 数据库操作-DAO篇 第13章...
第5章 剪贴板查看程序 第6章 进程查看程序 第7章 透明窗体实例 第8章 状态栏对话框 第9章 带微调和滑动条控件的工具栏 第10章 仿Winamp界面多媒体播放器 第11章 数据库操作--ODBC篇 第12章 数据库操作-DAO篇 第13章...
2.3.2 User32.dll............................................................................................................36 2.3.3 Gdi32.dll.............................................................