易语言两种方法取指定进程窗口源码
系统结构:取模块路径,加入列表,彗星取指定进程ID,彗星取进程线程,彗星取线程窗口,EnumThreadWndProc,彗星取进程窗口,彗星取窗口类名,彗星取窗口标题,CreateToolhelp32Snapshot,Process32First,Process32Next,Module32First,TerminateProcess,OpenProcess,NtQuerySystemInformation,RtlMoveMemory_SYSTEM_PROCESSES,LocalFree,LocalAlloc,CopyMemory_SYSTEM_PROCESSES,EnumThreadWindows,lstrcpyn,CopyMemory,CopyMemory_数组,ZeroMemory,GetClassName,GetWindowText,GetWindowTextLength,FindWindowEx,GetWindowThreadProcessId,
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |------ 取模块路径
| |
| |------ _按钮1_被单击
| |
| |------ _按钮2_被单击
| |
| |------ 加入列表
| |
| |------ _图片框1_鼠标左键被放开
| |
| |
======功能程序集
| |
| |------ 彗星取指定进程ID
| |
| |------ 彗星取进程线程
| |
| |------ 彗星取线程窗口
| |
| |------ EnumThreadWndProc
| |
| |------ 彗星取进程窗口
| |
| |------ 彗星取窗口类名
| |
| |------ 彗星取窗口标题
| |
| |
======调用的Dll
| |
| |---[dll]------ CreateToolhelp32Snapshot
| |
| |---[dll]------ Process32First
| |
| |---[dll]------ Process32Next
| |
| |---[dll]------ Module32First
| |
| |---[dll]------ TerminateProcess
| |
| |---[dll]------ OpenProcess
| |
| |---[dll]------ NtQuerySystemInformation
| |
| |---[dll]------ RtlMoveMemory_SYSTEM_PROCESSES
| |
| |---[dll]------ LocalFree
| |
| |---[dll]------ LocalAlloc
| |
| |---[dll]------ CopyMemory_SYSTEM_PROCESSES
| |
| |---[dll]------ EnumThreadWindows
| |
| |---[dll]------ lstrcpyn
| |
| |---[dll]------ CopyMemory
| |
| |---[dll]------ CopyMemory_数组
| |
| |---[dll]------ ZeroMemory
| |
| |---[dll]------ GetClassName
| |
| |---[dll]------ GetWindowText
| |
| |---[dll]------ GetWindowTextLength
| |
| |---[dll]------ FindWindowEx
| |
| |---[dll]------ GetWindowThreadProcessId
调用的DLL命令:
.DLL命令 CreateToolhelp32Snapshot, 整数型, , "CreateToolhelp32Snapshot"
.参数 falg, 整数型
.参数 id, 整数型
.DLL命令 Process32First, 整数型, , "Process32First"
.参数 h, 整数型
.参数 p, PROCESSENTRY32
.DLL命令 Process32Next, 整数型, , "Process32Next"
.参数 h, 整数型
.参数 p, PROCESSENTRY32
.DLL命令 Module32First, 整数型, , "Module32First"
.参数 hsnap, 整数型
.参数 mod, MODULEENTRY32
.DLL命令 TerminateProcess, 整数型, , "TerminateProcess"
.参数 id
.参数 a
.DLL命令 OpenProcess, 整数型, "kernel32", "OpenProcess", , 将句柄返回给过程对象
.参数 dwDesiredAccess, 整数型
.参数 bInheritHandle, 整数型
.参数 dwProcessId, 整数型
.DLL命令 NtQuerySystemInformation, 整数型, "ntdll.dll"
.参数 SystemInformationClass, 整数型
.参数 SystemInformation, 整数型
.参数 SystemInformationLength, 整数型
.参数 ReturnLength, 整数型, 传址
.DLL命令 RtlMoveMemory_SYSTEM_PROCESSES, , "kernel32", "RtlMoveMemory"
.参数 Destination, SYSTEM_PROCESS_INFORMATION
.参数 Source, 整数型
.参数 Length, 整数型
.DLL命令 LocalFree, 整数型, "kernel32", "LocalFree"
.参数 hMem, 整数型
.DLL命令 LocalAlloc, 整数型, "kernel32", "LocalAlloc"
.参数 wFlags, 整数型
.参数 wBytes, 整数型
.DLL命令 CopyMemory_SYSTEM_PROCESSES, , "kernel32", "RtlMoveMemory"
.参数 Destination, SYSTEM_PROCESSES
.参数 Source, 整数型
.参数 Length, 整数型
.DLL命令 EnumThreadWindows, 整数型, "user32", "EnumThreadWindows", , 枚举与指定任务相关的窗口 非零表示成功,零表示失败
.参数 dwThreadId, 整数型, , 某线程的标识符,它的窗口将被枚举
.参数 lpfn, 整数型, , 指向一个函数的指针,要求为每个子窗口都调用这个函数。用AddressOf运算符获得函数在标准模式下的地址
.参数 lParam, 整数型, , 在枚举期间,传递给dwcbkd32d.ocx定制控件之EnumWindows事件的值。这个值的含义是由程序员规定的;
.DLL命令 lstrcpyn, 整数型, "kernel32", "lstrcpynA", ,
.参数 lpString1, 字节集, 传址
.参数 lpString2, 字节集, 传址
.参数 iMaxLength, 整数型
.DLL命令 CopyMemory, , "kernel32", "RtlMoveMemory", ,
.参数 pDest, 整数型, 传址
.参数 pSrc, 整数型
.参数 ByteLen, 整数型
.DLL命令 CopyMemory_数组, , "kernel32", "RtlMoveMemory"
.参数 pDest, 整数型, 传址 数组
.参数 pSrc, 整数型
.参数 ByteLen, 整数型
.DLL命令 ZeroMemory, , "kernel32.dll", "RtlZeroMemory", , 将一块内存置零
.参数 Destination, 整数型
.参数 Length, 整数型
.DLL命令 GetClassName, 整数型, "user32", "GetClassNameA", , 为指定的窗口取得类名 以字节数表示的类名长度;排除最后的空中止字符。零表示出错。会设置GetLastError
.参数 hwnd, 整数型, , 欲获得类名的那个窗口的句柄
.参数 lpClassName, 文本型, , 随同类名载入的缓冲区。预先至少必须分配nMaxCount+1个字符
.参数 nMaxCount, 整数型, , 由lpClassName提供的缓冲区长度;
.DLL命令 GetWindowText, 整数型, "user32", "GetWindowTextA", , 取得一个窗体的标题(caption)文字,或者一个控件的内容(在vb里使用:使用vb窗体或控件的caption或text属性) 复制到lpString的字串长度;不包括空中止字符。会设置GetLastError
.参数 hwnd, 整数型, , 欲获取文字的那个窗口的句柄
.参数 lpString, 文本型, , 预定义的一个缓冲区,至少有cch+1个字符大小;随同窗口文字载入
.参数 cch, 整数型, , lp缓冲区的长度;
.DLL命令 GetWindowTextLength, 整数型, "user32", "GetWindowTextLengthA", , 调查窗口标题文字或控件内容的长短(在vb里使用:直接使用vb窗体或控件的caption或text属性) 字串长度,不包括空中止字符
.参数 hwnd, 整数型, , 想调查文字长度的窗口的句柄;
.DLL命令 FindWindowEx, 整数型, "user32", "FindWindowExA", , 在窗口列表中寻找与指定条件相符的第一个子窗口 找到的窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError
.参数 hWnd1, 整数型, , 在其中查找子的父窗口。如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找)
.参数 hWnd2, 整数型, , 从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索
.参数 lpsz1, 文本型, , 欲搜索的类名。零表示忽略
.参数 lpsz2, 文本型, , 欲搜索的类名。零表示忽略;
.DLL命令 GetWindowThreadProcessId, 整数型, "user32", "GetWindowThreadProcessId", , ; 获取与指定窗口关联在一起的一个进程和线程标识符 拥有窗口的线程的标识符
.参数 hwnd, 整数型, , 指定窗口句柄;
.参数 lpdwProcessId, 整数型, 传址, 指定一个变量,用于装载拥有那个窗口的一个进程的标识符
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。