“金蛇语音播放器” 是我随便写的一个假名。要实现的功能是:

我在网上下载了一个播放器,在自己公司的软件中使用,用来播放微信的语音。

因为版权问题,我不想让别人知道我用的是金蛇播放器,于是就将其窗口隐藏;

为了安全起见,再将其窗口标题名称改为“语音播放”。

关联不起作用:将语音文件格式与此播放器关联,然后双击语音文件,不能播放。

但支持拖拽操作:可以将一个语音文件拖拽到此软件的窗口中,然后就开始播放。

于是可以模拟拖拽文件到此软件,实现播放功能,代码如下:

BOOL SimulateDropFile(LPCTSTR lpszPath)
{HWND hMain = ::FindWindow(NULL, _T("语音播放"));if (hMain == NULL) //第一次打开此播放器
    {//打开语音播放器CString appPath = Utils::GetAppPath();appPath += L"Data\\amrplayer.exe";ShellExecute(NULL, L"open", appPath, NULL, NULL, SW_MINIMIZE);//SW_HIDE 没效果int count = 0;while (1){//找到语音播放器的窗口句柄,hMain = ::FindWindow(NULL, _T("金蛇语音播放器"));if (hMain != NULL)break;Sleep(200);count++;if (count > 50)break;}if (hMain == NULL){LOG_ERROR(L"未找到语音播放器");return FALSE;}//改变窗口播放器窗口的标题文本SetWindowText(hMain, L"语音播放");::ShowWindow(hMain, SW_HIDE); //隐藏窗口
    }CString strFilePath = lpszPath;if (!::PathFileExists(strFilePath))return FALSE;//模拟拖拽操作char szFile[MAX_PATH] = { 0 };wcstombs(szFile, strFilePath.GetBuffer(0), _MAX_PATH);DWORD dwBufSize = sizeof(DROPFILES) + strlen(szFile) + 1;BYTE* pBuf = new BYTE[dwBufSize];if (pBuf == NULL)return FALSE;BOOL bResult = FALSE;memset(pBuf, 0, dwBufSize);DROPFILES* pDrop = (DROPFILES*)pBuf;pDrop->pFiles = sizeof(DROPFILES);strcpy((char*)(pBuf + sizeof(DROPFILES)), szFile);DWORD dwProcessId = 0;GetWindowThreadProcessId(hMain, &dwProcessId); //播发器的进程IDif (dwProcessId != NULL){HANDLE hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwProcessId);if (hProcess != NULL){LPSTR pszRemote = (LPSTR)VirtualAllocEx(hProcess, NULL, dwBufSize, MEM_COMMIT, PAGE_READWRITE);if (pszRemote && WriteProcessMemory(hProcess, pszRemote, pBuf, dwBufSize, 0)){::SendMessage(hMain, WM_DROPFILES, (WPARAM)pszRemote, NULL); //发送拖拽消息bResult = TRUE;}}}if (pBuf){delete[] pBuf;pBuf = NULL;}return bResult;
}

转载于:https://www.cnblogs.com/pjl1119/p/8628788.html

[模拟拖拽] 模拟将一个文件拖拽到一个软件窗口上,实现拖拽操作(微信语音播放器)...相关推荐

  1. linux把文件移到当前目录下,松勤软件测试-如何用Linux将一个文件移动到另一个目录下...

    原标题:松勤软件测试-如何用Linux将一个文件移动到另一个目录下 用mv命令进行操作 1.作用 mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中.该命令等同于DOS系统下的ren和mov ...

  2. linux怎么将一个文件移动到另一个目录下

    用mv命令 1.作用 mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中.该命令等同于DOS系统下的ren和move命令的组合.它的使用权限是所有用户. 2.格式 mv [options] ...

  3. java 文件指定位置插入_java 中利用io流将一个文件插入到另一个文件中的指定位置,指定位置...

    展开全部 import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.F ...

  4. 将一个文件复制到另外一个文件中

    #include<stdio.h> #include<stdlib.H> int main() {  FILE *in,*out;                        ...

  5. linux初探——linux怎么将一个文件移动到另一个目录下

    目录处理在日常工作中是比较常见的,今天就向大家介绍几个常用的跟目录处理有关的命令. 一.创建目录:mkdir mkdir 是 make directories 的缩写,该命令最简单的用法就是,直接在 ...

  6. Android音乐播放器开发(5)—播放界面(播放、暂停、上一首、下一首,顺序播放、随机播放、拖拽进度条…)

    1. 说明 源码已同步到Gitee仓库,Github仓库,觉得还不错的话帮忙点个"star"吧,非常感谢. Android播放器专栏其它文章: 服务端:Android音乐播放器开发 ...

  7. vue+element制作音乐播放器播放进度条bug(鼠标拖拽slider滑块滑动到指定位置无效)

    最开始bug还没解决时的效果图 bug解决后的效果图 项目场景: 想自己做一个基于vue仿网易云音乐的音乐网站,在制作播放器的时候用到了element ui里面的slider组件,制作完成后发现使用c ...

  8. 微信语音短消息amr文件转WAV

    " 微信语音短消息amr文件转WAV." 在<SILK编码语音转WAV格式>中提到过,"腾讯系产品,包括QQ.微信.小程序,在语音相关的实现中,也大量使用到S ...

  9. Python-读取PDF文件显示在窗口上-Pdf阅读器

    读取PDF文件显示窗口上 1.实现功能 2.需要模块 3.实现思路 4.效果展示 5.代码展示 6.扩展 1.实现功能 打开一个指定pdf文件,将pdf文件中第一页显示在窗口上. 2.需要模块 模块名 ...

最新文章

  1. [转]struts2处理.do后缀的请求
  2. python 下载网页文件_『如何用python把网页上的文本内容保存下来』python爬取网页内容教程...
  3. UA PHYS515A 电磁理论III 静磁学问题1 Maxwell方程与静磁学问题
  4. 网络爬虫ip代理服务器【程序样例】
  5. Zookeeper-02-概念
  6. 连续汗蒸一星期有什么好处?
  7. React server rendering —— 网易美学主站同构实录
  8. “软”苹果水逆的一周:杂志服务崩溃,新机型遭泄露,芯片首架离职
  9. AMD规范和requirejs入门
  10. hdu4757(可持久化 Trie )
  11. 关于Android的.so文件你所需要知道的 - 简书
  12. python卡方拟合优度检验_如何使用Python中的科学库执行卡方拟合优度测试?
  13. 设计模式之简单工厂模式和抽象工厂模式
  14. 简述微处理器、微型计算机、微机系统的组成和三者间关系?
  15. python关键词排名批量查排名_[代码全屏查看]-Python 批量获取Baidu关键词的排名并入库...
  16. Win11更改系统文件夹的默认保存位置方法分享
  17. C语言多人对战贪吃蛇,双人对战贪吃蛇
  18. 解决服务器上传的tar格式的中不可以解压tar格式的压缩包 zip解压中文会在文件中显示乱码
  19. android半透明图层颜色叠加,Android 图层混合模式PorterDuff.Mode
  20. MIT开创减少双量子比特门误差的新方法,提高鲁棒性迈向纠错量子计算机

热门文章

  1. 河南省濮阳市谷歌高清卫星地图下载
  2. vue-infinite-scroll 实现触底加载
  3. 最近总结了数据分析必备的一些网站!
  4. 朝韩危机-Python模拟导弹互射
  5. 泛在操作系统的国内外主要产品
  6. 北大联合腾讯发布泛在操作系统研究报告:泛在操作系统成产业趋势,研究与实践进入加速期...
  7. vue-element-admin 适合前端开发的后台管理系统模板
  8. PHP登录成功显示头像,实现WordPress评论框显示已登录用户头像
  9. 魔乐科技李兴华老师Oracle笔记阅读摘要
  10. xmind更改分支方向