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. 几经折腾,发现这个东西 ...
随机推荐
- 【第二十篇】C#微信H5支付 非微信内浏览器H5支付 浏览器微信支付
微信开发者文档 微信H5支付官方文档 请阅读清楚 最起码把所有参数看一遍 这个地方也可以看看 微信案例 http://wxpay.wxutil.com/mch/pay/h5.v2.php,请在微 ...
- 高级控件之Scrollview ( 滑动屏幕 ) 与 Imageview (滑动屏幕 切换图片)
ScrollView 的xml布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayo ...
- 如何让服务端同时支持WebSocket和SSL加密的WebSocket(即同时支持ws和wss)?
自从HTML5出来以后,使用WebSocket通信就变得火热起来,基于WebSocket开发的手机APP和手机游戏也越来越多.我的一些开发APP的朋友,开始使用WebSocket通信,后来觉得通信不够 ...
- APP开发外包时常见的错误
时代在发展,科技在进步,很多企业都想要开发出属于自己的一款APP.然而,不是每个企业都有开发团队或是专门雇一个技术人员来做的,有一个好方法就是把开发APP的工作外包出去,找一个比较好的外包公司根据自己 ...
- js高阶函数应用—函数防抖和节流
高阶函数指的是至少满足下列两个条件之一的函数: 1. 函数可以作为参数被传递:2.函数可以作为返回值输出: javaScript中的函数显然具备高级函数的特征,这使得函数运用更灵活,作为学习js必定会 ...
- [LeetCode] Construct String from Binary Tree 根据二叉树创建字符串
You need to construct a string consists of parenthesis and integers from a binary tree with the preo ...
- Java基础知识回顾之三 ----- 封装、继承和多态
前言 在上一篇中回顾了java的修饰符和String类,这篇就来回顾下Java的三大特性:封装.继承.多态. 封装 什么是封装 在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部份包装 ...
- selenium chrome浏览器与chrome.driver的对应关系
看到网上基本没有最新的chromedriver与chrome的对应关系表,便兴起整理了一份如下,希望对大家有用: chromedriver版本 支持的Chrome版本 v2.34 v61-63 v2. ...
- 双边滤波算法的简易实现bilateralFilter
没怎么看过双边滤波的具体思路,动手写一写,看看能不能突破一下. 最后,感觉算法还是要分开 水平 与 垂直 方向进行分别处理,才能把速度提上去. 没耐性写下去了,发上来,给大伙做个参考好了. 先上几张效 ...
- 报错pymysql.err.DataError: (1406, "Data too long for column 'gender' at row 1")
在Django默认的admin后台创建超级用户时, 报错pymysql.err.DataError: (1406, "Data too long for column 'gender' at ...