欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

delphi 微信(WeChat)多开源代码

发布时间:2024/3/24 编程问答 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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 265627292017-07-04// 本代码是学习 win api 的一个经典示例// 希望您会有所收获 } interfaceuseswindows, TLHelp32, Generics.collections;typePSystemHandle = ^TSystemHandle; // 此结构体未公开,找了很久才弄正确。 TSystemHandle = packed record // 共16字节. 长度一定要准确。否则,后面没法玩。 dwProcessID: THandle;bObjectType: Byte;bflags: Byte;wValue: Word;GrantedAcess: Int64;end;PSystemHandleList = ^TSystemHandleList;TSystemHandleList = recorddwHandleCount: Cardinal; // 获取到的结果前4个字节,表示数量// 后面的就每 16 个字节一组,表示一个 TSystemHandleHandles: array of TSystemHandle; // 定义成下面这样,亦可行。// Handles:TSystemHandle; 只是不便于理解end;PProcessRec = ^TProcessRec;TProcessRec = recordProcessName: string;ProcessID: THandle;end;TProcessRecList = class(TList<PProcessRec>)publicprocedure 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; varp: PProcessRec; beginfor p in self doDispose(p); end;function GetAllProcess: TProcessRecList; varEntry32: TProcessEntry32W;SnapshotHandle: THandle;Found: boolean;sExeFileName: string;p: PProcessRec; beginResult := TProcessRecList.Create;SnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);Entry32.dwSize := sizeof(Entry32);Found := Process32First(SnapshotHandle, Entry32);while Found dobeginnew(p);Result.Add(p);sExeFileName := Entry32.szExeFile;p.ProcessName := sExeFileName;p.ProcessID := Entry32.th32ProcessID;Found := Process32Next(SnapshotHandle, Entry32);end;CloseHandle(SnapshotHandle); end;end.

 

转载于:https://www.cnblogs.com/lackey/p/7144778.html

总结

以上是生活随笔为你收集整理的delphi 微信(WeChat)多开源代码的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。