精华内容
下载资源
问答
  • 获取进程句柄

    2015-09-23 09:02:40
    一个通过进程获取窗口句柄的实验小程序,有需要的同志可以看看代码,比较简单
  • C++通过进程名获取进程句柄

    万次阅读 2017-03-09 09:54:18
    记录下一段,比较常用的...//通过进程ID获取进程句柄 HANDLE GetProcessHandle(int nID) { return OpenProcess(PROCESS_TERMINATE, FALSE, nID); } //通过进程名获取进程句柄 HANDLE GetProcessHandle(LPCWSTR lpN...

    记录下一段,比较常用的代码。

    #include <TlHelp32.h>
    
    //通过进程ID获取进程句柄
    //PROCESS_ALL_ACCESS 获取所有权限
    //PROCESS_QUERY_INFORMATION 获取进程的令牌、退出码和优先级等信息
    HANDLE GetProcessHandle(int nID)
    {
    	return OpenProcess(PROCESS_ALL_ACCESS, FALSE, nID);
    }
    
    //通过进程名(带后缀.exe)获取进程句柄
    HANDLE GetProcessHandle(LPCWSTR lpName)
    {
    	HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    	if (INVALID_HANDLE_VALUE == hSnapshot) 
    	{
    		return NULL;
    	}
    	PROCESSENTRY32 pe = { sizeof(pe) };
    	BOOL fOk;
    	for (fOk = Process32First(hSnapshot, &pe); fOk; fOk = Process32Next(hSnapshot, &pe)) 
    	{
    		if (!_tcsicmp(pe.szExeFile, lpName)) // 不区分大小写
    		{
    			CloseHandle(hSnapshot);
    			return GetProcessHandle(pe.th32ProcessID);
    		}
    	}
    	return NULL;
    }

     

    展开全文
  • 获取进程句柄的方法

    2020-02-22 00:25:49
    通过进程ID获取进程句柄 HANDLE GetProcessHandle(int nID) { return OpenProcess(PROCESS_TERMINATE, FALSE, nID); } //2.通过进程名获取进程句柄 HANDLE GetProcessHandle(LPCWSTR lpName) { HAN...
    #include <TlHelp32.h>
     
    //1.通过进程ID获取进程句柄
    HANDLE GetProcessHandle(int nID)
    {
    	return OpenProcess(PROCESS_TERMINATE, FALSE, nID);
    }
     
    //2.通过进程名获取进程ID,再调用OpenProcess获得进程句柄
    DWORD GetProcessID(LPCWSTR lpName)
    {
    	HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    	if (INVALID_HANDLE_VALUE == hSnapshot) 
    	{
    		return NULL;
    	}
    	PROCESSENTRY32 pe = { sizeof(pe) };
    	BOOL fOk;
    	for (fOk = Process32First(hSnapshot, &pe); fOk; fOk = Process32Next(hSnapshot, &pe)) 
    	{
    		if (!_tcscmp(pe.szExeFile, lpName)) 
    		{
    			CloseHandle(hSnapshot);
    			return pe.th32ProcessID;
    		}
    	}
    	return NULL;
    }
    
    展开全文
  • VB Spy获取进程句柄源码实例,列出出当前运行程序的窗口信息、子进程信息和鼠标坐标、句柄信息,程序可设置窗口总在最前端显示。
  • 稍等,我给你做一个。不过控制台程序是dos界面的哦。到时候你自己按需求自己改吧。做好了我给你传上来。#include#includeusing namespace std;...}HANDLE GetProcessHandle(int nID)//通过进程ID获取进程句柄{ret...

    稍等,我给你做一个。不过控制台程序是dos界面的哦。到时候你自己按需求自己改吧。做好了我给你传上来。

    #include

    #include

    using namespace std;

    HANDLE main()

    {

    int nID;

    cout>nID;

    return GetProcessHandle(nID);

    }

    HANDLE GetProcessHandle(int nID)//通过进程ID获取进程句柄

    {

    return OpenProcess(PROCESS_ALL_ACCESS, FALSE, nID);

    }

    这个是比较简单的方法,不需要遍历所有进程。

    望采纳。

    OpenProcess的具体说明下面链接中有。百度百科

    http://baike.baidu.com/view/1280137.htm

    下面是我自己写的方法,你也可以修改之后用

    这个方法用于判断进程是否运行,你想取到进程句柄那说明这个进程一定在运行中了

    那就可以用我这个方法来判断了

    //check if a process is running

    int GetProcessCount(const TCHAR* szExeName)//参数改成PID就行了

    {

    TCHAR sztarget[MAX_PATH];

    lstrcpy(sztarget, szExeName);

    CharLowerBuff(sztarget, MAX_PATH);

    int count = 0;

    PROCESSENTRY32 my;

    HANDLE hHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    if (((int)hHandle) != -1)

    {

    my.dwSize = sizeof(my);

    if (Process32First(hHandle, &my))

    {

    do

    {

    CharLowerBuff(my.szExeFile, MAX_PATH);

    if (lstrcmp(sztarget, my.szExeFile) == 0) //你这里可以改成my.PID

    判断PID是不是你要找的,如果是的话就返回my.handle就行了。

    {

    count++;

    }

    }while (Process32Next(hHandle, &my));

    }

    CloseHandle(hHandle);

    }

    return count;

    }

    展开全文
  • 获取进程句柄的方式有很多种,之前有说到CreateProcess函数,该函数在一个进程中打开另一个进程,并且得到子进程的句柄,不过有时候我们更想获得正在运行的进程的句柄。获取正在运行的进程句柄也有几种方式,下面...

    获取进程句柄

    获取进程句柄的方式有很多种,之前有说到CreateProcess函数,该函数在一个进程中打开另一个进程,并且得到子进程的句柄,不过有时候我们更想获得正在运行的进程的句柄。获取正在运行的进程句柄也有几种方式,下面介绍一下几个函数。

    FindWindow

    invoke    FindWindow,lpClassName,lpWindowName

    该函数返回一个窗口句柄,第一个参数指向要取得句柄的窗口类的名称,第二个参数指向窗口的标题。

    GetWindowThreadProcessId

    invoke    GetWindowThreadProcessId,hWnd,lpdwProcessId

    该函数获取创建窗口的进程的ID。第一个参数就是要获取ID的进程创建的窗口的句柄。第二个参数指向一个双字变量,函数会返回 进程的ID到里面。

    OpenProcess

    invoke    OpenProcess,dwDesireAccess,bInheritHandle,dwProcessId
    .if       eax
              mov    hProcess,eax
    .endif

    该函数通过进程ID获得进程的句柄。

    • dwDesiredAccess:指定需要对该进程进行的操作,指定操作需要操作代码,操作代码可以在MSDN中查看。
    • bInheritHandle:指明返回的句柄是否可以被当前进程的子进程继承,如果参数指定为TRUE,那么句柄可以被继承。
    • dwProcessId:指定目标进程的进程ID。

    函数执行成功返回被打开的进程的句柄,如果失败则返回NULL,这个时候可能时因为权限不够。如果我们不需要再对该进程进行操作了,一定要用CloseHandle函数将获得的句柄关闭。

    按照以上的顺序使用函数,就能获得一个已经打开的进程的句柄。

    第二种方法就是通过快照函数获得进程的句柄。快照,也就是说该函数会像照相一样,获取一下当前系统这一刻的进程的状态。

    通过快照函数可以获取一个进程的列表,还可以获取获取线程和模块等对象的列表。

    CreateToolhelp32Snapshot

    invoke    CreateToolhelp32Snapshot,dwFlags,th32ProcessID
    .if       eax
              mov    hSnapShot,eax
    .endif

    dwFlags参数用来指定快照中需要返回的对象,参数可以指定对进程中的堆进行枚举,对进程中的模块进行枚举,对系统范围内进程进行枚举,对系统范围内的线程进行枚举。

    后面一个参数用来指定一个进程ID,当dwFlags参数指定为进行系统范围的枚举时,这个会自动忽略。

    该函数执行成功后返回一个快照句柄,然后我们可以通过两个函数来获得系统里所有进程的信息。

    Process32First

    invoke    Process32First,hSnapShot,offset stProcess

    该函数用来进行首次调用。第一个参数是之前获得的快照句柄。第二个参数指向一个结构。

    PROCESSENTRY32结构

    PROCESSENTRY32    STRUCT
        dwSize            DWORD    ?
        cntUsage          DWORD    ?    
        th32ProcessID     DWORD    ?        ;进程ID
        th32ModuleID      DWORD    ?        ;进程默认堆的ID
        cntThreads        DWORD    ?        ;进程模块的ID
        th32ParentProcessID    DWORD    ?   ;
        pcPriClassBase    DWORD    ?        ;进程的父进程的ID
        dwFlags           DWORD    ?
        szExeFile         db    MAX_PATH dup(?)    ;进程对应的可执行文件名
    PROCESSENTRY32    ENDS

    函数执行成功后进程的信息就会返回到这个结构中。但是在使用函数前要先将结构中的dwSize字段填写为结构的长度。

    用该函数首次获取进程的信息后,后面再到循环中用Process32Next函数获取剩余的进程的信息。获取进程的顺序是按照26个英文字母的顺序来的。

    这两个函数是通过快照获取进程的函数,前面讲过快照函数还可以获取线程,堆,模块的信息。对应的函数:Thread32First,Thread32Next,Heap32First,Heap32Next,Module32First,Module32Next。不同的函数对应的结构也不一样。
     

     

     

    展开全文
  • 常用代码: TlHelp32.h 开发文档 ... 进程Pid取进程句柄 */ HANDLE ProcessPid2Handle( DWORD pid) { return OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); } /* 进程名称获取进程Pid */ DWORD ProcessName...
  • VC++ 通过进程名或进程ID获取进程句柄 HANDLE GetProcessHandle(int nID)//通过进程ID获取进程句柄{return OpenProcess(PROCESS_ALL_ACCESS, FALSE, nID);}HANDLE GetProcessHandle(LPCTSTR pName)//通过进程名获取...
  • VC++ 通过进程名或进程ID获取进程句柄 http://wenhaidongke.blog.163.com/blog/static/1280700902009101992259465/HANDLE GetProcessHandle(int nID){ return OpenProcess(PROCESS_ALL_ACCESS, FALSE, nID);}...
  • ObOpenObjectByPointer获取进程句柄

    千次阅读 2013-12-20 16:55:18
    内核函数:根据进程id获取进程句柄NTSTATUS ObOpenObjectByPointer( IN PVOID Object, IN ULONG HandleAttributes, IN PACCESS_STATE PassedAccessState OPTIONAL, IN ACCESS_MASK DesiredAccess, IN...
  • // 根据窗口名获取进程句柄 HWND hWnd = FindWindowA(NULL, "扫雷"); DWORD dwPid = -1; GetWindowThreadProcessId(hWnd, &dwPid); HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPid);
  • 0x01 通过进程名获取进程句柄: 首先通过进程名得到进程ID: 1、 通过 CreateToolhelp32Snapshot 获得当前系统中所有进程的快照 2、 通过 Process32First 判断第一个进程的信息是否正常 3、 通...
  • import win32apiimport win32conimport win32guiimport win32uiimport win32consoleimport win32processimport osimport signalMAIN_HWND = 0def is_win_ok(hwnd, starttext):s = win32gui.GetWindowText(hwnd)if ...
  • 上节课通过进程名称获取进程ID,然后再通过进程ID来获取窗口句柄,本课直接通过进程名称来获取窗口句柄,其实是对 进程_名取ID 和 进程_ID取窗口句柄 一个应用组合封装。通过进程名称取得相应的窗口的句柄,成功返回...
  • 要获取某个进程的句柄,首先要获取该进程的ID,通过ID获取进程句柄。代码如下: 需要用到的头文件: #include "tlhelp32.h" #include "windows.h" DWORD GetProcessidByName(const wchar_t* name) { PROCESSENTRY...
  • 使用CreateProcess创建一个 进程 后,PROCESS_INFORMATION结构中会包含 进程 的handle,和唯一存在的 进程 ID 而后使用openprocess打开 进程 时,根据第一个参数 (dwDesiredAccess:想拥有的该 进程 访问权限 ...
  • 线程的访问权限 与进程句柄一样,我们这里也可以立即忽略某些访问权限: SYNCHRONIZE THREAD_QUERY_INFORMATION THREAD_GET_CONTEXT THREAD_QUERY_LIMITED_INFORMATION THREAD_SUSPEND_RESUME THREAD_TERMINATE 之后...
  • = IntPtr.Zero && IsWindow(ptrWnd)) // 从缓存中获取句柄 { return ptrWnd; } else { ptrWnd = IntPtr.Zero; } } bool bResult = EnumWindows(new WNDENUMPROC(EnumWindowsProc), uiPid); // 枚举窗口返回 false ...
  • 大家好我们今天要教大家利用易语言获取指定窗口的句柄,也就是获取某个进程,然后获取进程句柄号! 其实网上有很多这方面的教程,但是他们讲的都是一些没用的,API或者是某某模块!其实根本就不需要那些就能轻松...
  • 1. 通过进程名获取进程ID BOOL CFileOperation::KillProcessFromName(CString strProcessName) { //创建进程快照(TH32CS_SNAPPROCESS表示创建所有进程的快照) HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32...
  • _GetODProcID proc LOCAL @hWinOD ;...进程句柄 LOCAL @idProcessOD ;进程ID invoke FindWindow,addr szClassName,NULL ;通过类名获取窗口句柄  .if eax ;
  • 通过查看进程的一些信息,可以定位到进程中使用的 so 文件,以及进程的状态大前提:设备必须是 root 之后的,否则会报错1、查看进程的内存加载情况cat /proc/[pid]/maps中间的 pid 为进程 id那么如何查看手机的进程呢...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,425
精华内容 570
关键字:

获取进程句柄