c++ 发送消息,模拟拖拽文件

摘要:
=NULL)28{29LPSTRpszRemote=VirtualAllocEx;30if31{32::SendMessage;33bResult=TRUE;34}35}36}3738if39{40delete[]pBuf;41pBuf=NULL;42}43 returnbResult;44}在调用此函数之前,首先打开接受拖动的进程ShellExecute;
 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);

免责声明:文章转载自《c++ 发送消息,模拟拖拽文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VMP加壳(三):VMP壳爆破实战-破解某编辑类软件VTK 空间几何变换(Transform),平移、旋转和缩放下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

VMP加壳(二):VMP的虚拟化原理

由于CPU只能识别和执行二进制文件,并直接让硬件CPU执行虚拟机的二进制代码,因此只能考虑通过纯软件模拟虚拟机执行代码指令。为了在软件级别模拟CPU执行二进制代码指令,一般的虚拟机指令要么是操作寄存器,虚拟机指令的处理程序必须模拟这些函数。它用于指示虚拟CPU当前执行的代码。为了满足上述要点,2。VMP虚拟机的执行过程(1)考虑启动VT。...

实用干货丨如何使用Prometheus配置自定义告警规则

前言普罗米修斯是一个用于监控和报警的开源系统。在普罗米修斯的术语中,它所监视的事物被称为目标。在本文中,我们将逐步展示如何安装Prometheus来监控/创建报警,并根据自定义事件配置自定义报警规则。当条件满足时,它将发出警报集成Alertmanager来处理客户端应用程序发送的警报。警报管理器将与发送警报通知的电子邮件帐户集成。了解普罗米修斯操作员根据普罗...

解决微信公众平台接口配置信息配置失败问题

填写完URL和TOKEN后,当您单击“提交”时,系统将始终提示您“配置失败”或其他错误,以确认URL所指向的后台页面代码是否正常。请确认TOKEN配置是否正常。此时,请检查INDEX页面的编码格式,并将其更改为GB2312进行尝试,这可能会解决您的问题。我想把这篇文章献给我浮躁的自己。...

等保2.0四级安全要求

平等保护2.0四级安全要求四级安全保护能力:应能够在统一的安全战略下,防止恶意攻击、严重自然灾害和来自国家一级、敌对组织和资源丰富的威胁源的其他严重危害造成的资源损害。它应该能够及时检测和监控攻击和安全事件,所有功能都可以快速恢复。以下粗体字段是平等保护的第4级和第3级之间的差异,应予以更多注意。...

【解决方法】ModuleNotFoundError: No module named 'flask._compat'

起源最近发下很多人在我的python课程下面提问,关于安装完扩展运行程序的时候出现如下的莫名其妙的错误Traceback(mostrecentcalllast):File"manage_web.py",line2,infromapplicationimportapp,managerFile"/data/www/private_deploy/python3_y...