electron c++ 使用SetWindowsHookEx 获取鼠标选中的文本或者选中的文件路径
要获取鼠标选中的文本或者选中的文件路径,您需要使用以下步骤:
- 在您的C++代码中包含以下头文件:
#include <Windows.h>
#include <Winuser.h>
- 声明以下变量:
HHOOK hHook;
HINSTANCE hInstance;
- 在您的代码中创建一个回调函数,以在鼠标事件发生时获取选中的文本或者文件路径。以下是一个示例回调函数:
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam) {
if (nCode == HC_ACTION) {
switch (wParam) {
case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
case WM_MBUTTONDOWN:
HWND hWnd = GetForegroundWindow();
DWORD pid;
GetWindowThreadProcessId(hWnd, &pid);
HANDLE hProcess = OpenProcess(PROCESS_VM_READ, FALSE, pid);
if (hProcess) {
POINT pt;
GetCursorPos(&pt);
DWORD_PTR result;
SendMessageTimeout(hWnd, EM_GETSEL, (WPARAM)&result, 0, SMTO_ABORTIFHUNG, 100, NULL);
if (result != 0) {
char buffer[4096];
SIZE_T bytesRead;
ReadProcessMemory(hProcess, (LPCVOID)result, buffer, sizeof(buffer), &bytesRead);
buffer[bytesRead] = '\0';
printf("Selected text: %s\n", buffer);
} else {
char filePath[MAX_PATH];
if (GetOpenFileNameA(&ofn)) {
printf("Selected file: %s\n", filePath);
}
}
CloseHandle(hProcess);
}
break;
}
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
- 在您的代码中创建一个函数,以安装钩子并开始监听鼠标事件。以下是一个示例函数:
void StartHook() {
hInstance = GetModuleHandle(NULL);
hHook = SetWindowsHookEx(WH_MOUSE_LL, MouseProc, hInstance, 0);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnhookWindowsHookEx(hHook);
hHook = NULL;
}
- 调用 StartHook() 函数以开始监听鼠标事件并获取选中的文本或者文件路径。例如:
int main() {
StartHook();
return 0;
}
请注意,以上示例代码仅适用于获取选中的文本或者打开文件选择器以获取选中的文件路径。如果您需要获取其他类型的选中内容,您需要相应地修改代码
原文地址: https://www.cveoy.top/t/topic/f4OS 著作权归作者所有。请勿转载和采集!