易语言模拟拖放操作源码
系统结构:文本目录到列表,拖拽文件,ReleaseCapture,SetCapture,GetWindowThreadProcessId,OpenProcess,VirtualAllocEx,写内存_DROPFILES,写内存_文件名,VirtualFreeEx,CloseHandle,取错误信息_,取结构长度_DROPFILES,
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |------ 文本目录到列表
| |
| |------ 拖拽文件
| |
| |------ _超级列表框_文件列表_鼠标左键被按下
| |
| |------ _超级列表框_文件列表_鼠标左键被放开
| |
| |------ _超级列表框_文件列表_表项跟踪
| |
| |
======调用的Dll
| |
| |---[dll]------ ReleaseCapture
| |
| |---[dll]------ SetCapture
| |
| |---[dll]------ _取父窗口句柄
| |
| |---[dll]------ GetWindowThreadProcessId
| |
| |---[dll]------ OpenProcess
| |
| |---[dll]------ VirtualAllocEx
| |
| |---[dll]------ 写内存_DROPFILES
| |
| |---[dll]------ 写内存_文件名
| |
| |---[dll]------ VirtualFreeEx
| |
| |---[dll]------ CloseHandle
| |
| |---[dll]------ 取错误信息_
| |
| |---[dll]------ 取结构长度_DROPFILES
调用的DLL命令:
.DLL命令 ReleaseCapture, 整数型, , , , 为当前的应用程序释放鼠标捕获
.DLL命令 SetCapture, 整数型, , , , 将鼠标捕获设置到指定的窗口。在鼠标按钮按下的时候,这个窗口会为当前应用程序或整个系统接收所有鼠标输入
.参数 hwnd, 整数型, , 要接收所有鼠标输入的窗口的句柄
.DLL命令 _取父窗口句柄, 整数型, , "GetParent", , user32.dll取出指定窗口句柄的父窗口句柄
.参数 hwnd, 整数型, , 子窗口句柄
.DLL命令 GetWindowThreadProcessId, 整数型, "User32.dll", "GetWindowThreadProcessId", , 找出某个窗口的创建者(线程或进程),返回创建者的标志符。返回线程号。
.参数 hWnd, 整数型, , 被查找窗口的句柄
.参数 lpdwProcessId, 整数型, 传址, 进程号的存放地址(变量地址)。如果参数不为NULL,即提供了存放处--变量,那么本函数把进程标志拷贝到存放处,否则不动作。
.DLL命令 OpenProcess, 整数型, "Kernel32.dll ", "OpenProcess", , 打开一个已存在的进程对象,成功返回进程的句柄,失败返回0.
.参数 dwDesiredAccess, 整数型, , 渴望得到的访问权限(标志);PROCESS_VM_OPERATION(8) or PROCESS_VM_READ(16) or PROCESS_VM_WRITE(32)
.参数 bInheritHandle, 逻辑型, , 是否继承句柄
.参数 dwProcessId, 整数型, , 进程标识符
.DLL命令 VirtualAllocEx, 整数型, "Kernel32.dll", "VirtualAllocEx", , 在指定进程的虚拟空间保留或提交内存区域,成功就返回分配内存的首地址,不成功就是NULL。
.参数 hProcess, 整数型, , 申请内存所在的进程句柄
.参数 lpAddress, 整数型, , 保留页面的内存地址;一般用NULL自动分配
.参数 dwSize, 整数型, , 欲分配的内存大小,字节单位;注意实际分 配的内存大小是页内存大小的整数倍
.参数 flAllocationType, 整数型, , MEM_RESERVE or MEM_COMMIT;MEM_RESERVE:保留进程的虚拟地址空间,而不分配任何物理存储。保留页面可通过继续调用VirtualAlloc()而被占用;MEM_COMMIT:为特定的页面区域分配内存中或磁盘的页面文件中的物理存储
.参数 flProtect, 整数型, , PAGE_EXECUTE_READWRITE: 区域包含可执行代码,应用程序可以读写该区域。
.DLL命令 写内存_DROPFILES, 整数型, "Kernel32.dll", "WriteProcessMemory", , 返回非零值代表成功。
.参数 hProcess, 整数型, , 由OpenProcess返回的进程句柄,-1 = 自身进程;
.参数 lpBaseAddress, 整数型, , 要写的内存首地址,再写入之前,此函数将先检查目标地址是否可用,并能容纳待写入的数据。
.参数 lpBuffer, DROPFILES, 传址, 指向要写的数据的指针。
.参数 nSize, 整数型, , 要写入的字节数。
.参数 lpNumberOfBytesWritten, 整数型, , 实际数据的长度。
.DLL命令 写内存_文件名, 整数型, "Kernel32.dll", "WriteProcessMemory", , 返回非零值代表成功。
.参数 hProcess, 整数型, , 由OpenProcess返回的进程句柄,-1 = 自身进程;
.参数 lpBaseAddress, 整数型, , 要写的内存首地址,再写入之前,此函数将先检查目标地址是否可用,并能容纳待写入的数据。
.参数 lpBuffer, 文本型, 传址, 指向要写的数据的指针。
.参数 nSize, 整数型, , 要写入的字节数。
.参数 lpNumberOfBytesWritten, 整数型, , 实际数据的长度。
.DLL命令 VirtualFreeEx, 整数型, "Kernel32.dll", "VirtualFreeEx", , 成功返回非零,失败返回零。
.参数 hProcess, 整数型, , 目标进程的句柄
.参数 IpAddress, 整数型, , 要释放的虚拟内存空间首地址的指针;如果 dwFreeType 为 MEM_RELEASE, 则该参数必须为VirtualAllocEx的返回值
.参数 dwSize, 整数型, , 虚拟内存空间的字节数。如果 dwFreeType 为 MEM_RELEASE,则 dwSize 必须为 0 . 按 VirtualAllocEx审请时的大小全部释放。如果dwFreeType 为 MEM_DECOMMIT, 则释放从lpAddress 开始的一个或多个字节 ,即 lpAddress +dwSize。
.参数 dwFreeType, 整数型, , 释放类型;MEM_RELEASE(32768)完全回收
.DLL命令 CloseHandle, 整数型, "Kernel32.dll", "CloseHandle", , 关闭句柄,非零表示成功,零表示失败。
.参数 hObject, 整数型, , 要关闭的句柄
.DLL命令 取错误信息_, 整数型, "kernel32", "GetLastError", , ,
.DLL命令 取结构长度_DROPFILES, 整数型, "kernel32.dll", "GlobalSize", , 取数据类型结构尺寸
.参数 结构, DROPFILES, 传址
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。