日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Win32 API 获取其他程序剪贴板内容

發布時間:2025/4/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Win32 API 获取其他程序剪贴板内容 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼如下;使用CFree;

#include <windows.h>int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) {/* TODO: Place code here.*/HGLOBAL hGlobal ;PTSTR pGlobal ;HWND hwnd = FindWindow(NULL, "計算器");OpenClipboard (hwnd) ; hGlobal = GetClipboardData (CF_TEXT) ;if (hGlobal != NULL){pGlobal = (PTSTR) GlobalLock (hGlobal) ;MessageBox(NULL, pGlobal, "獲取剪貼板文本", MB_OK);GlobalUnlock (hGlobal) ;}CloseClipboard () ;return 0; }

先查找 計算器 窗口;然后打開其剪貼板,然后獲取內容;

如果是對于UNICODE文本則使用 hGlobal = GetClipboardData (CF_UNICODETEXT) ;

HGLOBAL是兼容以前windows 3.x時代的16位內存分配API的數據,表示一個內存塊,這個內存塊是GlobalAlloc分配的,需要GlobalLock才能取得內存塊的指針。
不過在Win32下,這個數據和Global內存分配函數沒有用了,保留下來只是為了兼容。而且在Win32下,HGLOBAL就是一個void *的指針,可以不用GlobalLock直接使用來訪問內存。
注意:但是某種特定情況下還是需要使用GlobalAlloc 和 HGLOBAl ,如CreateStreamOnHGlobal、CoTaskMemAlloc。

?

Globallock函數:
鎖定內存中指定的內存塊,并返回一個地址值,令其指向內存塊的起始處。除非用 GlobalUnlock 函數將內存塊解鎖,否則地址會一直保持有效。
參數
hMem Long,指定一個全局內存塊的句柄。

?

先運行win自帶計算器,輸入一些數據,在計算器菜單中點擊 復制 菜單,此時計算器輸入的內容被拷貝到剪貼板;然后啟動程序;

運行如下;

程序彈出消息框顯示獲取的剪貼板內容,程序運行后會彈出消息框顯示計算器剪貼板的內容;但是當消息框顯示的時候無法用鍵盤的PrtSc鍵截圖;因為此時內存是全局鎖定的;

總結

以上是生活随笔為你收集整理的Win32 API 获取其他程序剪贴板内容的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。