發現 RTX (騰訊企業通) 內建的 camerawnd.dll 提供類似 QQ 截圖功能,經簡單逆向分析,記錄其匯出函數與呼叫方式,供參考。
使用 Depends.exe 查看,發現三個匯出函數:
CameraSubArea — 區域截圖CameraWndArea — 視窗截圖CameraScreen — 全螢幕截圖typedef void (*FUN)();
HMODULE hInst = LoadLibrary(_T("CameraWnd.dll"));
if (hInst != NULL) {
FUN pFunc = (FUN)GetProcAddress(hInst, "CameraSubArea");
if (pFunc != NULL) pFunc();
}
CameraSubArea 與 CameraWndArea 均可正常觸發對應截圖模式;CameraScreen 直接呼叫會異常,推測需參數。
以 VC 偵錯模式追蹤呼叫指令:
; CameraSubArea
push 40800000h
push 1
push 1
call 100010E0
; CameraWndArea
push 40800000h
push 0
push 2
call 100010E0
; CameraScreen 入口
push ebp
mov ebp, esp
push 0FFh
push 10007973h
推測前兩者均呼叫 CameraScreen(mode, showMagnifier, param3):
void CameraSubArea() { CameraScreen(1, 1, 0x40800000); }
void CameraWndArea() { CameraScreen(2, 0, 0x40800000); }
CameraScreen 應有回傳值 (判斷使用者是否取消/完成截圖),無回傳值則需自行檢查剪貼簿附帶原始碼可直接編譯測試,有興趣可自行嘗試修改參數探索更多功能。