原文链接:http://hi.baidu.com/coo_boi/item/e1e0f5ab45bddbdd5af191df

网上找了个C++的翻一下,原文链接:http://www.cnblogs.com/zhujian198/archive/2009/07/14/1523426.html

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Sub RtlZeroMemory Lib "kernel32" (dest As Any, ByVal numBytes As Long) Private Type POINTAPI
x As Long
y As Long
End Type Private Type DROPFILES
pFiles As Long
pt As POINTAPI
fNC As Long
fWide As Long
End Type Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, _
ByVal lpAddress As Long, _
ByVal dwSize As Long, _
ByVal flAllocationType As Long, _
ByVal flProtect As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, _
ByVal lpBaseAddress As Long, _
lpBuffer As Any, _
ByVal nSize As Long, _
lpNumberOfBytesWritten As Long) As Long
Private Declare Function VirtualFree Lib "kernel32" (lpAddress As Any, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const WM_DROPFILES = &H233&
Private Const PROCESS_VM_OPERATION = &H8&
Private Const PROCSS_VM_READ = &H100&
Private Const PROCESS_VM_WRITE = &H20&
Private Const MEM_COMMIT = &H1000&
Private Const PAGE_READWRITE = &H4&
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Private Sub Command1_Click()
Dim hWnd As Long
Dim dwPid As Long
Dim hProc As Long
Dim pMem As Long
Dim pBuff() As Byte
Dim objDFS As DROPFILES
Dim dwBuffSize As Long
Dim szFileName() As Byte szFileName = StrConv("d:\1.txt", vbFromUnicode)
dwBuffSize = Len(objDFS) + UBound(szFileName) + ReDim pBuff(dwBuffSize - )
Call RtlZeroMemory(ByVal VarPtr(pBuff()), dwBuffSize)
Call RtlZeroMemory(ByVal VarPtr(objDFS), Len(objDFS))
objDFS.pFiles = Len(objDFS)
Call CopyMemory(ByVal VarPtr(pBuff()), ByVal VarPtr(objDFS), Len(objDFS))
Call CopyMemory(ByVal VarPtr(pBuff(Len(objDFS))), ByVal VarPtr(szFileName()), UBound(szFileName) + ) hWnd = FindWindow("notepad", vbNullString)
If hWnd Then
Call GetWindowThreadProcessId(hWnd, dwPid)
hProc = OpenProcess(&H8& + &H20&, False, dwPid)
If hProc Then
pMem = VirtualAllocEx(hProc, &, dwBuffSize, MEM_COMMIT, PAGE_READWRITE)
If pMem Then
Debug.Print pMem
If WriteProcessMemory(hProc, pMem, pBuff(), dwBuffSize, &) Then
Call SendMessage(hWnd, WM_DROPFILES, pMem, ByVal &)
Debug.Print "SendMessage OK"
Else
Debug.Print "WriteProcessMemory Failed"
End If
Call VirtualFree(ByVal pMem, dwBuffSize, &)
End If
Call CloseHandle(hProc)
End If
End If
End Sub

VB6之SendMessage模拟拖放事件的更多相关文章

  1. Android 模拟MotionEvent事件 触发输入法

    Android 模拟MotionEvent事件 触发输入法   android输入法layoutbutton文本编辑encoding 关键词:MotionEvent,模拟按键,模拟点击事件,主动弹出输 ...

  2. 浅谈Winform事件的实现以及模拟其事件的实现(附实现源码)

    当我们初学Winform的时候被其神奇的事件功能所吸引,当点击一个按钮时,便会跳到我们所写的点击方法当中去.然而这并不符合我们对方法的理解,究竟.net在后面帮助我们实现了什么.我们怎样模拟其事件的实 ...

  3. HTML5拖放事件(Drag-and-Drop,DnD)

    拖放 拖放是一种常见的特性,即抓取对象以后拖到另一个位置.在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 拖放是在“拖放源(drag source)”和“拖放目标(drop target ...

  4. android 模拟按键事件

    模拟按键事件可以提高代码的复用性,比如在一个edittext的回车事件里做的一些处理 在该edittext的另一个输入要做相同的处理时,模拟按键事件就非常方便了. 代码很简单,直接上代码: new T ...

  5. js模拟触发事件

     html标签元素封装着实用的[事件],但在很多时候,需要[模拟触发事件],比如 [按钮单机事件]  可以实实在在点击按钮触发该事件,但体验而言,很多时候需要js逻辑处理让实现 触发事件的效果这时就用 ...

  6. 模拟DOMContentLoaded事件

    window.onload事件 文档中所有图片,脚本,链接以及子框完成加载后,才会触发window.onload事件. 浏览器兼容性:All DOMContentLoaded事件 当页面中的文档树解析 ...

  7. JS模拟键盘事件 -- 原理及小例子

    提问: 键盘默认事件,比如tab切换,alt+f4关闭,ctrl+t新建等,如果不想通过键盘而是一些按钮点击来触发这些功能,该咋办呢? 例子: 先以tab为例上一个小例子: <!DOCTYPE ...

  8. Android事件详解——拖放事件DragEvent

    1.Android拖放框架的作用? 利用Android的拖放框架,可以让用户用拖放手势把一个View中的数据移到当前layout内的另一个View中去. 2.拖放框架的内容? 1)拖放事件类 2)拖放 ...

  9. H5 拖放事件详解

    拖放事件 H5的拖放事件提供了多个接口: 1.drag:当元素或者选中的文本被拖动时触发(每几百毫秒触发一次),应用在被拖拽元素上 2.dragend:当拖动操作结束时触发(通过释放鼠标按钮或者点击转 ...

随机推荐

  1. Spring Boot 学习(1)

    文 by / 林本托 Tip 做一个终身学习的人. Spring Boot 初体验 Spring Boot 包含了很多 start(Spring boot 中 的叫法,就是一个模块,后文统一称模块,便 ...

  2. Linux如何安装VMware Tools

    第一步:安装VMware Tools 桌面上会出现一个光盘,并且会弹出一个框框,里面是VMware Tools的安装包,将其拖到桌面上 就像下面这样 进入终端,将文件拷贝到/tmp目录下面,并解压(也 ...

  3. OpenCV探索之路(十四):绘制点、直线、几何图形

    绘制点和圆 void cvCircle( CvArr* img, CvPoint center, int radius, CvScalar color, int thickness=1, int li ...

  4. 9.Java 加解密技术系列之 RSA

    Java 加解密技术系列之 RSA 序 概念 工作流程 RSA 代码实现 加解密结果 结束语 序 距 离上一次写博客感觉已经很长时间了,先吐槽一下,这个月以来,公司一直在加班,又是发版.上线,又是新项 ...

  5. 并串转换FPGA电路结构的探讨

    如题,并串转换时FPGA设计里,一个很常用的模块,这里有一个小的探讨. 一般情况下我们可以使用一个计数器与数据选择器进行并串转换,如下图的的结构.这个结构通过计数器不断的改变数据选择器的地址端,从而使 ...

  6. [认证授权] 4.OIDC(OpenId Connect)身份认证授权(核心部分)

    0 目录 认证授权系列:http://www.cnblogs.com/linianhui/category/929878.html 1 什么是OIDC? 看一下官方的介绍(http://openid. ...

  7. Javascript及Jquery获取元素节点以及添加和删除操作

    用了javascript和jquery很久,把所有元素节点的操作总结了下,放在博客上作为记录. Javascript获取元素的主要方式有三种 1.document.getElementById('ma ...

  8. Ajax请求(二)--JQuery的Ajax请求方法

    JQuery库的Ajax请求的几种方法: 1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中. 参数含义: url (String ...

  9. gulp报错

    这个问题网上搜索到的答案不一定能够解决问题,有可能是node版本问题,需要升级 到最新版就可以了....

  10. iter迭代器的应用

    迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束. 用户不用关心迭代器的内部结构,仅需通过next方法不断去读取下一个内容 不能随机访问任意一个内容,只 ...