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. 几经折腾,发现这个东西 ...
随机推荐
- maven管理的jsp应用如何添加servlet、jsp相关依赖(org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp)
背景: 老大让做权限控制,研究了一下shiro,下了个demo下来,死活跑不起来,报 org.apache.jasper.JasperException: java.lang.ClassNotFoun ...
- layer ui插件显示tips时,修改字体颜色
今天做调查问卷,又遇到一个蛋疼小问题,记录下. 调查问卷有很多选项是要求必填的,如果不填的话,需要给出友好的提示.用的如下组件:http://layer.layui.com/ 1.之前一直默认用的: ...
- 如何把百度统计代码放入JS文件中?百度统计的JS脚本原理分析
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script&quo ...
- winform 如何加载Url图像(图像)
解决方法: 1pictureBox1.Image = Image.FromStream(System.Net.WebRequest.Create(http://www.baidu/new.gif ). ...
- JavaScript push() 方法
定义和用法: push() :可向数组的末尾添加一个或多个元素,并返回新的长度. 语法 arrayObject.push(newelement1,newelement2,....,newelement ...
- Python将excel文件从xls转换为xlsx
本文使用场景:将一个xls格式Excel文件转换为xlsx文件格式.接下来将一步一步演示该操作.你也可以对代码进行修改使其适用于你所需的场景. 安装Python3 首先需要安装Python,我这里安装 ...
- sumo快速运行简单仿真实例详细教程
本文旨在让大家快速的了解sumo,并给出运行一个简单的sumo的例子的教程,进而了解基本sumo工程的架构,使大家对该软件产生兴趣并持续学习下去,刚开始学习仿真的确枯燥,项目"跑起来&quo ...
- 【PYTHON】用户登录三次错误锁定
黑名单:blacklist.txt 用户名单:username_password.py # Author:Stephen Yuan # 用户名和密码 username_password = { ', ...
- 关于Goldwell平台推出赠金及手数奖励
关于Goldwell平台推出赠金及手数奖励 Goldwell平台是一家拥有30多年现货黄金经验平台,平台位于柬埔寨金边,是一家国际衍生品的经纪公司.Goldwell平台它对柬埔寨金融市场和客户绝对的承 ...
- [LeetCode] Prefix and Suffix Search 前后缀搜索
Given many words, words[i] has weight i. Design a class WordFilter that supports one function, WordF ...