windows查看和管理进程的工具

windows查看和管理进程的工具,第1张

1使用windows内部 ntsd 命令来中止进程

step1 使用任务管理器查看进程的 PID 选择选项,查看-选择列,选中 PID(进程标志符)可以打开PID显示。

step2 在DOS提示符下运行 ntsd -c -q -p PID 即可立即中止进程。

2Process

Explorer软件介绍:让使用者能看到在后台执行的处理程序,能显示目前已经载入哪些模块,分别是正在被哪些程序使用着,还可显示这些程序所调用的DLL进程,以及他们所打开的句柄。Process

Explorer最大的特色就是可以中终任何进程,甚至包括系统的关键进程,目前最新版本1006。

句柄(Handle)是一个是用来标识对象或者项目的标识符,可以用来描述窗体、文件等,值得注意的是句柄不能是常量。

Windows之所以要设立句柄,根本上源于内存管理机制的问题,即虚拟地址。简而言之数据的地址需要变动,变动以后就需要有人来记录、管理变动,因此系统用句柄来记载数据地址的变更。

最左素短语就是处于句型最左边的素短语的短语。素短语是一个递归的定义,至少含有一个终结符,并且除它自身之外不再含任何更小的素短语。

扩展资料:

句柄的使用

句柄在Windows编程中是一个很重要的概念,在 Windows程序中并不是用物理地址来标识一个内存块、文件、任务或动态装入模块的。相反地,Windows API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行 *** 作。

应该明白的是,句柄是一个标识符,是用来标识对象或者项目的。从数据类型上来看它只是一个16位的无符号整数。

应用程序几乎总是通过调用一个Windows函数来获得一个句柄,之后其他的Windows函数就可以使用该句柄,以引用相应的对象。在 Windows编程中会用到大量的句柄。

我简单的看了一下那里,好象只能获得PID而并不是句柄,

VB有很多限制,我有点代码给你吧,

'进程 *** 作API

Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long

Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

'进程控制---结构体

Private Type PROCESSENTRY32

dwSize As Long

cntUsage As Long

th32ProcessID As Long

th32DefaultHeapID As Long

th32ModuleID As Long

cntThreads As Long

th32ParentProcessID As Long

pcPriClassBase As Long

dwFlags As Long

szExeFile As String MAX_PATH

End Type

代码:

snap = CreateToolhelpSnapshot(TH32CS_SNAPall, 0) ':获得进程“快照”的句柄/

procdwSize = Len(proc)

theloop = ProcessFirst(snap, proc) ':获取第一个进程,并得到其返回值

While theloop <> 0 ':当返回值非零时继续获取下一个进程

If InStr(LCase(procszExeFile), "wowexe") > 0 Then

AddofApp = procth32ProcessID

Exit Do

End If

theloop = ProcessNext(snap, proc)

Wend

CloseHandle snap

看msdn吧。可以调用GetPhysicalMonitorsFromHMONITOR函数或者GetPhysicalMonitorsFromIDirect3DDevice9函数得到窗口句柄

首先你需要获得需要 *** 作窗体(A)的句柄。第二需要你获得窗体(A)中控件的ID号,比如文本框(Edit)控件的ID第三需要根据控件的ID获得控件的句柄(hwnd)第四根据hwnd对控件进行 *** 作明白了上述任务之后,那么下面的就是具体如何 *** 作了。第一:获得窗体的句柄 分为两种情况,窗体有标题和窗体没有标题有标题的窗体很简单使用window API中的FindWindow就很容易找到。HWnd hwnd = ::FindWindow(NULL,"窗体的标题名字");如果窗体没有标题,只知道窗体的类名那么也可以使用FindWindow。HWnd hwnd = ::FindWindow("窗体的类名",NULL); 如果窗体没有标题,也不知道类名。但窗体中的按钮或者文本可以明显看到,也是可以找到窗体的句柄的。可以使用函数EnumWindows和EnumWindowsProc 假设窗体没有标题,也不知道该窗体的类名,但知道窗体中有一个“登陆"按钮的名字。具体 *** 作如下:// 枚举已经打开的窗体,回调函数 BOOL CALLBACK EnumWindowsProc(HWND hWnd,LPARAM lParam) { if(::IsWindowVisible(hWnd)) { wchar_t WindowTitle[100]={0}; /::GetWindowText(hWnd,WindowTitle,100); ::MessageBox(NULL,WindowTitle,NULL,MB_OK); / ::GetWindowText(hWnd,WindowTitle,100); CString str1=WindowTitle; UINT a=0; if(str1=="") { a = ::GetDlgItemText(hWnd,1,WindowTitle,100); CString str=WindowTitle; if(str == _T("登录")) { ((CAutoLoginDlg)lParam)->dhwnd = hWnd; return FALSE; } } return a==0; } return TRUE; } 调用方式:

HWND hWnd =NULL; EnumWindows(&EnumWindowsProc ,(LPARAM)this ); hWnd = this->dhwnd;OK 至此您已经获得窗体A的 *** 作句柄hwnd了。

第二:第二需要你获得窗体(A)中控件的ID号,比如按钮控件的ID第一种方法很见简单:使用UISPY软件,获取窗体A中任何一个控件的ID第二种方法相对复杂:需要使用自己进行查询和判断,下面贴上我的方法// 获取某一个窗体中的控件,并添加到ListView中 void CAutoLoginDlg::GetInstance(int id) { HWND hWnd=NULL; CString str(_T("")); hWnd = ::GetDlgItem(dhwnd,id); if(hWnd==NULL) return; WCHAR result[25]; WCHAR szClassName[MAX_PATH]; ::GetClassName(hWnd, szClassName, MAX_PATH); if (( wcscmp(szClassName, _T("Button"))) == 0 ) { str="Button"; } if (( wcscmp(szClassName, _T("Edit"))) == 0 ) { str="Edit"; } if (( wcscmp(szClassName, _T("ComboBox"))) == 0 ) { str="Combobox"; } int item =m_lListInsertItem(0,_T("")); m_lListSetItemText(item,0, (LPCTSTR) str); CString temp; tempFormat(_T("%d"),id); m_lListSetItemText(item,1,(LPCTSTR)temp); tempFormat(_T("%ld"),hWnd); m_lListSetItemText(item,2, (LPCTSTR)temp ); ::GetWindowText(hWnd,result,25); m_lListSetItemText(item,3,result); OnUpdateUI(FALSE); }你需要使用上述方法进行轮询的方法进行查询并获取各种控件的ID,句柄,和显示文字。

第三:需要根据控件的ID获得控件的句柄(HWND )需要使用的方法GetDlgItemHWND pLoginWnd =::GetDlgItem(hwnd,loginID); 第四根据hwnd对控件进行 *** 作

1修改文本使用函数SetWindowText,比如修改第三步按钮显示的文字HWND pLoginWnd =::GetDlgItem(hwnd,loginID); CString str=_T("登录中"); ::SetWindowText(pLoginWnd,str)2发送按钮的单击事件

The GetProcessHandleFromHwnd function retrieves a process handle from a window handle

HANDLE WINAPI GetProcessHandleFromHwnd(

HWND hwnd,

);

这个函数通过窗口句柄获得进程句柄。有了进程句柄,PID是不是就知道怎么获得了?什么?不知道?那我告诉你,GetProcessId可以通过进程句柄获得进程ID:

DWORD WINAPI GetProcessId(

__in HANDLE Process

);

以上就是关于windows查看和管理进程的工具全部的内容,包括:windows查看和管理进程的工具、什么是句柄、VB列举windows所有进程句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10103109.html

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

发表评论

登录后才能评论

评论列表(0条)

保存