易语言取进程pid

易语言取进程pid,第1张

版本 2

子程序 GetProcessPid, 整数型, 公开, 失败返回-1 进程名称取PID

参数 进程名, 文本型

局部变量 hSnapShot, 整数型

局部变量 End, 整数型

局部变量 buffer, PROCESSENTRY32

局部变量 pid, 整数型

pid = -1

hSnapShot = CreateToolhelp32Snapshot (2, 0)

bufferdwSize = 296

End = Process32First2 (hSnapShot, buffer)

判断循环首 (End ≠ 0)

    如果真 (到小写 (到文本 (bufferszExeFile)) = 到小写 (进程名))

        pid = bufferth32ProcessID

        跳出循环 ()

    如果真结束

    End = Process32Next2 (hSnapShot, buffer)

判断循环尾 ()

CloseHandle (hSnapShot)

返回 (pid)

DLL命令 CreateToolhelp32Snapshot, 整数型, "KERNEL32dll", "CreateToolhelp32Snapshot"

    参数 dwFlags, 整数型

    参数 th32ProcessID, 整数型

DLL命令 Process32First2, 整数型, "KERNEL32dll", "Process32First"

    参数 hSnapshot, 整数型

    参数 lppe, PROCESSENTRY32

DLL命令 Process32Next2, 整数型, "KERNEL32dll", "Process32Next"

    参数 hSnapshot, 整数型

    参数 lppe, PROCESSENTRY32

DLL命令 CloseHandle, 整数型, "KERNEL32dll", "CloseHandle"

    参数 hObject, 整数型

数据类型 PROCESSENTRY32

    成员 dwSize, 整数型

    成员 cntUsage, 整数型

    成员 th32ProcessID, 整数型

    成员 th32DefaultHeapID, 整数型

    成员 th32ModuleID, 整数型

    成员 cntThreads, 整数型

    成员 th32ParentProcessID, 整数型

    成员 pcPriClassBase, 整数型

    成员 dwFlags, 整数型

    成员 szExeFile, 字节型, , "256", 如果写成文本型,此处将会被放置一个指针,很显然会出错

版本 2

子程序 取进程标识符ID, 整数型, 公开, GetWindowThreadProcessId返回进程ID

参数 窗口句柄, 整数型, , hwnd,指定窗口句柄

局部变量 局部_变量, 整数型

取进程线程标识符_ (窗口句柄, 局部_变量)

返回 (局部_变量)

版本 2

DLL命令 取进程线程标识符_, 整数型, "user32dll", "GetWindowThreadProcessId", 公开, Long,拥有窗口的线程的标识符 GetWindowThreadProcessId,获取与指定窗口关联在一起的一个线程和进程标识符

参数 窗口句柄, 整数型, , hwnd,指定窗口句柄

参数 进程标识符, 整数型, 传址, lpdwProcessId,指定一个变量,用于装载拥有那个窗口的一个进程的标识符

放到 启动子程序 下面

或者你用启动窗口启动 则放到启动窗口创建完毕事件下面,貌似对位置没有什么特别的要求

个人习惯

取命令行(参数)

参数是个文本型数组,反正我用到现在也只发现这个数组只有1个成员

参数[1]就是你想要的东西

ProcessReadMemory的参数:

HANDLE hProcess //待处理的进程的句柄

LPCVOID lpBaseAddress, //待处理的进程的要读取数据块的起始地址

LPVOID lpBuffer, //缓冲区地址

DWORD nSize, //要读的字节数

LPDWORD lpNumberOfBytesRead //函数处理后实际读取得字节数,要传地址

WIN32 的系统存储控件分为两部分用户部分和系统部分,各位2GB(NT下也有分为3GB和1GB的)。在WIN32下每个进程独占系统的存储空间的用户部分(低端的2GB,0x00000000-0x7fffffff)

但在这2GB的开始合末尾个各有一小块被有特别的用途,应用程序并不能使用,对于NT和95/98,这块区域的大小不一样,NT是

0x0000-0xffff,95/98是多少我也不忘了,末尾块的范围我也记不得了,这些你可以去查一下,我想能明白是怎么回事就行了。你能访问的地址

就介于这两块内存之间,所以你的开始地址可以是这两块内存之间的任意地址。

    static class Program

    {

        /// <summary>

        /// 应用程序的主入口点。

        /// </summary>

        [STAThread]

        static void Main(string[] args)

        {

            ApplicationEnableVisualStyles();

            ApplicationSetCompatibleTextRenderingDefault(false);

            if (argsLength > 0)

            {

                ApplicationRun(new BgControlForm(args));

            }

            else 

            {

                ApplicationRun(new Form1());

            }

            

        }

    }

在此基础上,写一个带参数的form构造函数

BgControlForm  

        public BgControlForm(string[] args)

        {

            InitializeComponent();

            MessageBoxShow(args[0]);

        }

以上就是关于易语言取进程pid全部的内容,包括:易语言取进程pid、如何获取指定进程的PDI易语言、易语言怎么获取启动参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9533705.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存