Delphi获取进程数

program Project2;

uses
   Windows , PsAPI;

procedure CvtInt;
asm
        OR      CL , CL
        JNZ     @ CvtLoop
@ C1 :    OR      EAX , EAX
        JNS     @ C2
        NEG     EAX
        CALL    @ C2
        MOV     AL , '-'
        INC     ECX
        DEC     ESI
        MOV     [ ESI ] , AL
        RET
@ C2 :    MOV     ECX , 10

@ CvtLoop :
        PUSH    EDX
        PUSH    ESI
@ D1 :    XOR     EDX , EDX
        DIV     ECX
        DEC     ESI
        ADD     DL , '0'
        CMP     DL , '0' + 10
        JB      @ D2
        ADD     DL ,( 'A' - '0') - 10
@ D2 :    MOV     [ ESI ] , DL
        OR      EAX , EAX
        JNE     @ D1
        POP     ECX
        POP     EDX
        SUB     ECX , ESI
        SUB     EDX , ECX
        JBE     @ D5
        ADD     ECX , EDX
        MOV     AL , '0'
        SUB     ESI , EDX
        JMP     @ z
@ zloop : MOV     [ ESI + EDX ] , AL
@ z :     DEC     EDX
        JNZ     @ zloop
        MOV     [ ESI ] , AL
@ D5 :
end;

function IntToStr( Value : Integer) : string;
//  FmtStr(Result, '%d', [Value]);
asm
        PUSH    ESI
        MOV     ESI , ESP
        SUB     ESP , 16
        XOR     ECX , ECX       // base: 0 for signed decimal
        PUSH    EDX            // result ptr
        XOR     EDX , EDX       // zero filled field width: 0 for no leading zeros
        CALL    CvtInt          //--函数在下图
        MOV     EDX , ESI
        POP     EAX            // result ptr
        CALL    System .@ LStrFromPCharLen
        ADD     ESP , 16
        POP     ESI
end;

var
  pid : array [ 0 .. 65535 ] of DWORD;
  size : DWORD;
begin
  if EnumProcesses( @ pid , 65535 , size) then
  MessageBox( 0 , PChar( IntToStr( size div SizeOf( DWORD))) , '' , 0);
end .
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值