zoukankan      html  css  js  c++  java
  • c++ 发送消息,模拟拖拽文件

     1 #include <ShlObj.h>
     2 BOOL SimulateDropFile(CString strFilePath)
     3 {
     4     char szFile[MAX_PATH] = {0};
     5     wcstombs(szFile, strFilePath.GetBuffer(0), _MAX_PATH);
     6     DWORD dwBufSize = sizeof(DROPFILES) + strlen(szFile) + 1;
     7     
     8     //通过类名或窗口标题 找到接受拖拽的窗口
     9     HWND hMain = ::FindWindow(NULL, _T("XX播放器"));
    10     if (hMain == NULL)
    11         return FALSE;
    12     BYTE* pBuf = new BYTE[dwBufSize];
    13     if (pBuf == NULL)
    14         return FALSE;
    15 
    16     BOOL bResult = FALSE;
    17     memset(pBuf, 0, dwBufSize);
    18     DROPFILES* pDrop = (DROPFILES*)pBuf;
    19     pDrop->pFiles = sizeof(DROPFILES);
    20     strcpy((char*)(pBuf + sizeof(DROPFILES)), szFile);
    21 
    22     DWORD dwProcessId = 0;
    23     GetWindowThreadProcessId(hMain, &dwProcessId);
    24     if (dwProcessId != NULL)
    25     {
    26         HANDLE hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwProcessId);
    27         if (hProcess != NULL)
    28         {
    29             LPSTR pszRemote = (LPSTR)VirtualAllocEx(hProcess, NULL, dwBufSize, MEM_COMMIT, PAGE_READWRITE);
    30             if (pszRemote && WriteProcessMemory(hProcess, pszRemote, pBuf, dwBufSize, 0))
    31             {
    32                 ::SendMessage(hMain, WM_DROPFILES, (WPARAM)pszRemote, NULL);
    33                 bResult = TRUE;
    34             }
    35         }
    36     }
    37 
    38     if (pBuf)
    39     {
    40         delete[] pBuf;
    41         pBuf = NULL;
    42     }
    43     return bResult;
    44 }

    在调用该函数之前,先打开接受拖拽的进程
    ShellExecute(NULL, L"open", exe完整路径, NULL, NULL, SW_SHOWNORMAL);
  • 相关阅读:
    PyTorch 60 分钟入门教程:数据并行处理
    调参侠的末日? Auto-Keras 自动搜索深度学习模型的网络架构和超参数
    图片格式在线转换
    非常好的Oracle教程
    符号大全
    图片在线生成
    奥比岛人物立绘
    Linux 下的分屏利器-tmux安装、原理及使用
    CentOS7 安装极点五笔输入法
    zabbix监控服务搭建
  • 原文地址:https://www.cnblogs.com/pjl1119/p/7509388.html
Copyright © 2011-2022 走看看