delphi 微信(WeChat)多开源代码
在网上看到一个C++代码示例:
原文地址:http://bbs.pediy.com/thread-217610.htm
觉得这是一个很好的调用 windows api 的示例,故将其转换成了 delphi xe8
源码下载:OpenNewWechat
下面给出所用到的windows api 定义
unit uWinApi; // http://bbs.pediy.com/thread-217610.htm
// 微信(WeChat)电脑端多开分析+源码 { 感谢原文提供的代码和 exe
晓不得2013 qq 26562729
2017-07-04
// 本代码是学习 win api 的一个经典示例
// 希望您会有所收获
}
interface uses
windows, TLHelp32, Generics.collections; type PSystemHandle = ^TSystemHandle; // 此结构体未公开,找了很久才弄正确。 TSystemHandle = packed record // 共16字节. 长度一定要准确。否则,后面没法玩。
dwProcessID: THandle;
bObjectType: Byte;
bflags: Byte;
wValue: Word;
GrantedAcess: Int64;
end; PSystemHandleList = ^TSystemHandleList; TSystemHandleList = record
dwHandleCount: Cardinal; // 获取到的结果前4个字节,表示数量
// 后面的就每 16 个字节一组,表示一个 TSystemHandle
Handles: array of TSystemHandle; // 定义成下面这样,亦可行。
// Handles:TSystemHandle; 只是不便于理解
end; PProcessRec = ^TProcessRec; TProcessRec = record
ProcessName: string;
ProcessID: THandle;
end; TProcessRecList = class(TList<PProcessRec>)
public
procedure FreeAllItem;
end; // win 规则下,都是让调用者传入 buff 长度,然后检查这个长度是否合适
// 如果不够,就返回一个错误,并且在 ASize 中指明需要的长度
// 以便调用者重新分配 buff 再次调用
// ASysInfoCls 是查询什么类别。 MS 没有全部公开. $10 为 SystemHanle.
// ASysInfo 理解为 Buff 就行了。
function ZwQuerySystemInformation(ASysInfoCls: Integer; ASysInfo: Pointer; ABufLen: Cardinal;
var ASize: Cardinal): Cardinal; stdcall; external 'ntdll.dll'; function NtQueryObject(Ahandle: THandle; AQuertyIndex: Integer; ABuff: Pointer; ABuffSize: Cardinal;
var ASize: Cardinal): Cardinal; stdcall; external 'ntdll.dll'; // 获取当前的进程
function GetAllProcess: TProcessRecList; implementation { TProcessRecList } procedure TProcessRecList.FreeAllItem;
var
p: PProcessRec;
begin
for p in self do
Dispose(p);
end; function GetAllProcess: TProcessRecList;
var
Entry32: TProcessEntry32W;
SnapshotHandle: THandle;
Found: boolean;
sExeFileName: string;
p: PProcessRec;
begin
Result := TProcessRecList.Create;
SnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, );
Entry32.dwSize := sizeof(Entry32);
Found := Process32First(SnapshotHandle, Entry32);
while Found do
begin
new(p);
Result.Add(p);
sExeFileName := Entry32.szExeFile;
p.ProcessName := sExeFileName;
p.ProcessID := Entry32.th32ProcessID;
Found := Process32Next(SnapshotHandle, Entry32);
end;
CloseHandle(SnapshotHandle);
end; end.
delphi 微信(WeChat)多开源代码的更多相关文章
- 使用delphi+intraweb进行微信开发1~4代码示例
前几讲重点阐述的是使用iw进行微信开发的技术难点及解决方法,提供的都是代码片段(微信消息加解密是完整代码),实际上我始终感觉按照教程实作是掌握一门技术的最重要的方法!不过对于刚刚接触这类开发的朋友来说 ...
- DELPHI微信支付代码
DELPHI微信支付代码 不管是微信支付还是支付宝支付, 3个最棘手的问题是:1,如何生成签名2,支付请求如何提交3, 如何验证签名 下面就围绕这二个问题来讲. 我使用的是XE3. 先看微信支付: ...
- 面向对象的全套“企业微信”api接口的代码实现,网上太多“面向过程”微信api接口的代码,这个开源给需要的人用
有段时间没有写文章了. 一直以来,微信的热门是看得到的,很多人都需要与微信的api对接. 今天我这里就分享全套的企业微信api接口的代码. 关于微信api,网上已经有很多实现的了. 但是我今天之所以还 ...
- GitHub + VSTS 开源代码双向同步
GitHub已经是全球开源代码的大本营了,通过以下统计你可以看到仅仅javascript在github就有超过32万个活动的repo.很多开发人员都会把自己的一部分代码分享到github上进行开源,一 ...
- wemall软件交易平台微信图文编辑器部分代码分享
wemall软件交易平台微信图文编辑器部分代码,可下载: controller.php <?php date_default_timezone_set("Asia/chongqing& ...
- Tensorflow 免费中文视频教程,开源代码,免费书籍.
Free-Tensorflow Tensorflow 免费中文视频教程,开源代码,免费书籍. 官方教程 官方介绍 https://tensorflow.google.cn/ 安装教程 https:// ...
- github 开源 代码 学习 集合(转载)
一个支持多种item类型的recycleView依赖注入库 1.通过注解的方式方便的把ViewHolder注入到recycleView中. 2.去除findViewByID等冗余操作. 3.去除编写a ...
- DELPHI PROTOBUF免费的开源支持库fundamentals5
DELPHI PROTOBUF免费的开源支持库fundamentals5 1.源码URL: https://github.com/fundamentalslib/fundamentals5 2.编译P ...
- 一个可随意定位置的带色Toast——开源代码Crouton的简单使用
今天在公司要求的代码中,要求显示的提示能够更加具有多样化,而不是简单的Toast字样,第一想法肯定是自定义View呀,结果在浏览中发现还有这样的一个开源代码——Crouton. 几经折腾,发现这个东西 ...
随机推荐
- 判断ssh远程命令是否执行结束
注:这是一个没什么鸟用的功能.不过也算是一种拓展. 通常在那些"一键化部署"的shell脚本中,可能需要使用ssh执行远程命令来实现一些简单的自动化,这些远程命令可能需要执行一段时 ...
- python基础——面向对象进阶
python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ...
- TR069网管协议应用在Android系统开发的前言
随着智能平台的终端设备不断发展,迫切需要我们解决这些终端的管理问题,而现有的终端统一管理平台已经成熟,主要是基于tr069协议网管平台,比如华为的itms等终端管理平台.所以,这篇文章就是为了实现一种 ...
- urllib.request.Request
import urllib.request #可以将url先构造成一个Request对象,传进urlopen #Request存在的意义是便于在请求的时候传入一些信息,而urlopen则不 reque ...
- Ubuntu+apt-get update时的源
源是通过 /etc/apt/sources.list # file /etc/apt/sources.list.d # dir 来确定的, 只要将其中的相应文件/相应行删除了, 在apt-get up ...
- Django REST framework+Vue 打造生鲜超市(八)
九.个人中心功能开发 9.1.drf的api文档自动生成和 (1) url #drf文档,title自定义 path('docs',include_docs_urls(title='仙剑奇侠传')), ...
- Linux(二)CentOS的安装
centos6.8 链接:https://pan.baidu.com/s/1TjCYXzijMzfpiZ9Z-D1Qhg 密码:7mvn 2.1 新建虚拟机 1 2.2 选中稍后安装操作系统(先把虚拟 ...
- 机器学习技法:07 Blending and Bagging
Roadmap Motivation of Aggregation Uniform Blending Linear and Any Blending Bagging (Bootstrap Aggreg ...
- 用js来实现那些数据结构09(集合01-集合的实现)
说到集合,第一个想到的就是中学学到的那个数学概念:集合.在我们开始集合相关的js实现前,我们有必要来了解一下什么是集合以及集合的数学概念. 好吧,我们一起来复习一下早就被我们遗忘的集合. 集合是由一组 ...
- [HNOI 2013]数列
Description 题库链接 给你四个数 \(N,K,M,P\) ,让你生成一段长度为 \(K\) 严格单调递增序列,并且满足: 第一位可以为任意元素: 相邻两位的差值不超过 \(M\) : 序列 ...