挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
游戏交易就上寄售网-专注稳定-诚信赢天下玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)天下盾/国内/免实名/免备案CDN无视一切CC/DD攻击 找塔科夫作者TG @wuhao1954 QQ283931494 →入驻S9企业发卡网各种全黑号辅助群:475351077
██【我要租此广告位】██... .
查看: 12709|回复: 17
打印 上一主题 下一主题

进程句柄查看工具(File,Event,Mutant,Section等句柄)

[复制链接]

4万

积分

621

主题

168

听众
已帮网友解决4 个问题
好评
1010
贡献
47474
海币
3701
交易币
2000

最佳新人活跃会员开荒者原创大师推广达人沙发王侦察队队长宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老在线王源码大师终身成就杰出贡献机器王评分大师回帖大师CM制造者CM杀手艺术大师签到达人土豪知识库

QQ
跳转到指定楼层
楼主
发表于 2014-6-21 13:47:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑



SeekHandle.rar (1.62 MB, 下载次数: 150)
源码:

  1. // SeekHandleDlg.cpp : 实现文件
  2. //

  3. #include "stdafx.h"
  4. #include "SeekHandle.h"
  5. #include "SeekHandleDlg.h"
  6. #include "type.h"
  7. #include"tlhelp32.h"
  8. #include "afxdialogex.h"

  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #endif


  12. // 用于应用程序“关于”菜单项的 CAboutDlg 对话框

  13. class CAboutDlg : public CDialogEx
  14. {
  15. public:
  16.         CAboutDlg();

  17. // 对话框数据
  18.         enum { IDD = IDD_ABOUTBOX };

  19.         protected:
  20.         virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

  21. // 实现
  22. protected:
  23.         DECLARE_MESSAGE_MAP()
  24. };

  25. CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
  26. {
  27. }

  28. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  29. {
  30.         CDialogEx::DoDataExchange(pDX);
  31. }

  32. BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
  33. END_MESSAGE_MAP()


  34. // CSeekHandleDlg 对话框



  35. CSeekHandleDlg::CSeekHandleDlg(CWnd* pParent /*=NULL*/)
  36.         : CDialogEx(CSeekHandleDlg::IDD, pParent)
  37. {
  38.         m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  39. }

  40. void CSeekHandleDlg::DoDataExchange(CDataExchange* pDX)
  41. {
  42.         CDialogEx::DoDataExchange(pDX);
  43.         DDX_Control(pDX, IDC_LSTPROC, m_lstProc);
  44.         DDX_Control(pDX, IDC_LSTPROCINFO, m_lstProcInfo);
  45. }

  46. BEGIN_MESSAGE_MAP(CSeekHandleDlg, CDialogEx)
  47.         ON_WM_SYSCOMMAND()
  48.         ON_WM_PAINT()
  49.         ON_WM_QUERYDRAGICON()
  50.         ON_BN_CLICKED(IDOK, &CSeekHandleDlg::OnBnClickedOk)
  51.         ON_NOTIFY(NM_CLICK, IDC_LSTPROC, &CSeekHandleDlg::OnNMClickLstproc)
  52.         ON_NOTIFY(NM_RCLICK, IDC_LSTPROCINFO, &CSeekHandleDlg::OnNMRClickLstprocinfo)
  53.         ON_COMMAND(ID_CLOSEHAND, &CSeekHandleDlg::OnClosehand)
  54.         ON_COMMAND(ID_SHOWALL, &CSeekHandleDlg::OnShowall)
  55.         ON_COMMAND(ID_SCREEN, &CSeekHandleDlg::OnScreen)
  56.         ON_COMMAND(ID_CLEANMUTEX, &CSeekHandleDlg::OnCleanmutex)
  57. END_MESSAGE_MAP()


  58. // CSeekHandleDlg 消息处理程序

  59. BOOL CSeekHandleDlg::OnInitDialog()
  60. {
  61.         CDialogEx::OnInitDialog();

  62.         // 将“关于...”菜单项添加到系统菜单中。

  63.         // IDM_ABOUTBOX 必须在系统命令范围内。
  64.         ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  65.         ASSERT(IDM_ABOUTBOX < 0xF000);

  66.         CMenu* pSysMenu = GetSystemMenu(FALSE);
  67.         if (pSysMenu != NULL)
  68.         {
  69.                 BOOL bNameValid;
  70.                 CString strAboutMenu;
  71.                 bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
  72.                 ASSERT(bNameValid);
  73.                 if (!strAboutMenu.IsEmpty())
  74.                 {
  75.                         pSysMenu->AppendMenu(MF_SEPARATOR);
  76.                         pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  77.                 }
  78.         }

  79.         // 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
  80.         //  执行此操作
  81.         SetIcon(m_hIcon, TRUE);                        // 设置大图标
  82.         SetIcon(m_hIcon, FALSE);                // 设置小图标

  83.         // TODO:  在此添加额外的初始化代码
  84.          
  85.         //++++++++++++++++++++++++++++++++++++
  86.         //设置LISTCONTROL颜色
  87.         m_lstProc.SetBkColor(RGB(255, 255, 255));
  88.         m_lstProc.SetTextBkColor(RGB(255, 255, 255));
  89.         m_lstProc.SetTextColor(RGB(0, 0, 255));
  90.         //设置风格
  91.         m_lstProc.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
  92.         //定义字段结构
  93.         LV_COLUMN h;
  94.         //定义LV_COLUMN结构对象 h
  95.         h.mask = LVXF_FMT | LVXF_TEXT | LVXF_WIDTH;
  96.         h.fmt = LVXFMT_CENTER;                                                //居中
  97.         h.cx = 60;                                                                        //宽度
  98.         h.pszText = "PID";
  99.         m_lstProc.InsertColumn(0, &h);
  100.         h.cx = 60;
  101.         h.pszText = "线程数";
  102.         m_lstProc.InsertColumn(1, &h);
  103.         h.cx = 100;
  104.         h.pszText = "工作集大小";
  105.         m_lstProc.InsertColumn(2, &h);
  106.         h.cx = 170;
  107.         h.pszText = "进程名";
  108.         m_lstProc.InsertColumn(3, &h);
  109.         //设置第一列居中
  110.         LVCOLUMN lvc;
  111.         lvc.mask = LVXF_FMT;
  112.         m_lstProc.GetColumn(0, &lvc);
  113.         lvc.fmt &= ~LVXFMT_JUSTIFYMASK;
  114.         lvc.fmt |= LVXFMT_CENTER;
  115.         m_lstProc.SetColumn(0, &lvc);
  116.         //++++++++++++++++++++++++++++++++++++
  117.         m_lstProcInfo.SetBkColor(RGB(255, 255, 255));
  118.         m_lstProcInfo.SetTextBkColor(RGB(255, 255, 255));
  119.         m_lstProcInfo.SetTextColor(RGB(0, 0, 255));
  120.         //设置风格
  121.         m_lstProcInfo.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
  122.         //定义LV_COLUMN结构对象 h
  123.         h.mask = LVXF_FMT | LVXF_TEXT | LVXF_WIDTH;
  124.         h.fmt = LVXFMT_CENTER;                                                //居中
  125.         h.cx = 350;                                                                        //宽度
  126.         h.pszText = "名称";
  127.         m_lstProcInfo.InsertColumn(0, &h);
  128.         h.cx = 130;                                                                        //宽度
  129.         h.pszText = "类型";
  130.         m_lstProcInfo.InsertColumn(1, &h);
  131.         h.cx = 80;
  132.         h.pszText = "句柄";
  133.         m_lstProcInfo.InsertColumn(2, &h);
  134.         //设置第一列居中
  135.         lvc.mask = LVXF_FMT;
  136.         m_lstProcInfo.GetColumn(0, &lvc);
  137.         lvc.fmt &= ~LVXFMT_JUSTIFYMASK;
  138.         lvc.fmt |= LVXFMT_CENTER;
  139.         m_lstProcInfo.SetColumn(0, &lvc);
  140.         //++++++++++++++++++++++++++++++++++++++
  141.         if (!ZwQuerySystemInformation)
  142.         {
  143.                 MessageBox("Error:Get<ZwQuerySystemInformation>Add!");
  144.                 ExitProcess(0);
  145.         }
  146.         m_pid = 0;
  147.         EnableDebugPrivilege();
  148.         GetProcList();
  149.         return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
  150. }

  151. void CSeekHandleDlg::OnSysCommand(UINT nID, LPARAM lParam)
  152. {
  153.         if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  154.         {
  155.                 CAboutDlg dlgAbout;
  156.                 dlgAbout.DoModal();
  157.         }
  158.         else
  159.         {
  160.                 CDialogEx::OnSysCommand(nID, lParam);
  161.         }
  162. }

  163. // 如果向对话框添加最小化按钮,则需要下面的代码
  164. //  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
  165. //  这将由框架自动完成。

  166. void CSeekHandleDlg::OnPaint()
  167. {
  168.         if (IsIconic())
  169.         {
  170.                 CPaintDC dc(this); // 用于绘制的设备上下文

  171.                 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

  172.                 // 使图标在工作区矩形中居中
  173.                 int cxIcon = GetSystemMetrics(SM_CXICON);
  174.                 int cyIcon = GetSystemMetrics(SM_CYICON);
  175.                 CRect rect;
  176.                 GetClientRect(&rect);
  177.                 int x = (rect.Width() - cxIcon + 1) / 2;
  178.                 int y = (rect.Height() - cyIcon + 1) / 2;

  179.                 // 绘制图标
  180.                 dc.DrawIcon(x, y, m_hIcon);
  181.         }
  182.         else
  183.         {
  184.                 CDialogEx::OnPaint();
  185.         }
  186. }

  187. //当用户拖动最小化窗口时系统调用此函数取得光标
  188. //显示。
  189. HCURSOR CSeekHandleDlg::OnQueryDragIcon()
  190. {
  191.         return static_cast<HCURSOR>(m_hIcon);
  192. }



  193. void CSeekHandleDlg::OnBnClickedOk()
  194. {
  195.         // TODO:  在此添加控件通知处理程序代码
  196.         //        CDialogEx::OnOK();
  197. }

  198. /************************************************************************/
  199. /* 获取进程列表                                                                     */
  200. /************************************************************************/
  201. VOID CSeekHandleDlg::GetProcList()
  202. {
  203.         ULONG dwNeedSize;
  204.         PBYTE pBuffer = NULL;
  205.         PSYSTEM_PROCESSES psp = NULL;
  206.         CString strInfo;
  207.         char szANSIString[MAX_PATH];
  208.         int nIndex = 0;
  209.         memset(szANSIString, 0, sizeof(szANSIString));
  210.         NTSTATUS status = ZwQuerySystemInformation(SystemProcessesAndThreadsInformation, NULL, 0, &dwNeedSize);
  211.         if (status == STATUS_INFO_LENGTH_MISMATCH)
  212.         {
  213.                 pBuffer = new BYTE[dwNeedSize];
  214.                 status = ZwQuerySystemInformation(SystemProcessesAndThreadsInformation, (PVOID)pBuffer, dwNeedSize, NULL);
  215.                 if (status == STATUS_SUCCESS)
  216.                 {
  217.                         psp = (PSYSTEM_PROCESSES)pBuffer; //强制转换
  218.                         do
  219.                         {
  220.                                 strInfo.Format("%4d", psp->ProcessId);
  221.                                 nIndex = m_lstProc.InsertItem(nIndex, strInfo);
  222.                                 m_lstProc.SetItemData(nIndex, psp->ProcessId);
  223.                                 strInfo.Format("%3d", psp->ThreadCount);
  224.                                 m_lstProc.SetItemText(nIndex, 1, strInfo);
  225.                                 strInfo.Format("%8dKB", psp->VmCounters.WorkingSetSize / 1024);
  226.                                 m_lstProc.SetItemText(nIndex, 2, strInfo);
  227.                                 WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK,
  228.                                         (LPCWSTR)psp->ProcessName.Buffer,
  229.                                         -1,
  230.                                         szANSIString,
  231.                                         sizeof(szANSIString),
  232.                                         NULL,
  233.                                         NULL);
  234.                                 m_lstProc.SetItemText(nIndex, 3, szANSIString);
  235.                                 psp = (PSYSTEM_PROCESSES)((ULONG)psp + psp->NextEntryDelta);
  236.                         } while (psp->NextEntryDelta != 0);
  237.                 }
  238.                 delete[]pBuffer;
  239.                 pBuffer = NULL;
  240.         }
  241. }


  242. void CSeekHandleDlg::OnNMClickLstproc(NMHDR *pNMHDR, LRESULT *pResult)
  243. {
  244.         LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
  245.         // TODO:  在此添加控件通知处理程序代码
  246.         DWORD pid;
  247.         int nIndex = 0;
  248.         POSITION p = m_lstProc.GetFirstSelectedItemPosition();
  249.         if (p == NULL)
  250.         {
  251.                 MessageBox("没有行被选中!", "温馨提示");
  252.                 return;
  253.         }
  254.         //        获取刚选取的位置的下标(从0开始的)
  255.         int index = m_lstProc.GetNextSelectedItem(p);
  256.         pid = m_lstProc.GetItemData(index);
  257.         m_pid = pid;        //        赋值给全局PID
  258.         enumProcInfo(EM_SHOWNORMAL,pid);
  259.         *pResult = 0;
  260. }


  261. bool  CSeekHandleDlg::EnableDebugPrivilege()
  262. {
  263.         HANDLE hToken;
  264.         LUID sedebugnameValue;
  265.         TOKEN_PRIVILEGES tkp;
  266.         if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
  267.         {
  268.                 return   FALSE;
  269.         }
  270.         if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue))
  271.         {
  272.                 CloseHandle(hToken);
  273.                 return false;
  274.         }
  275.         tkp.PrivilegeCount = 1;
  276.         tkp.Privileges[0].Luid = sedebugnameValue;
  277.         tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
  278.         if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL))
  279.         {
  280.                 CloseHandle(hToken);
  281.                 return false;
  282.         }
  283.         return true;
  284. }


  285. void CSeekHandleDlg::OnNMRClickLstprocinfo(NMHDR *pNMHDR, LRESULT *pResult)
  286. {
  287.         LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
  288.         // TODO:  在此添加控件通知处理程序代码
  289.         NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
  290.         if (pNMListView->iItem != -1)
  291.         {
  292.                 DWORD dwPos = GetMessagePos();
  293.                 CPoint point(LOWORD(dwPos), HIWORD(dwPos));

  294.                 CMenu menu;
  295.                 VERIFY(menu.LoadMenu(IDR_MENU));      //IDR_MENU_POPUP是新建菜单ID
  296.                 CMenu* popup = menu.GetSubMenu(0);
  297.                 ASSERT(popup != NULL);
  298.                 popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
  299.         }
  300.         *pResult = 0;
  301. }


  302. /************************************************************************/
  303. /* 处理进程信息                                                                     */
  304. /************************************************************************/
  305. VOID CSeekHandleDlg::enumProcInfo(ENUMTYPE enType,int pid,ULONG uHandle)
  306. {
  307.         NTSTATUS status;
  308.         int nIndex = 0;
  309.         ULONG dwNeedSize, Count, dwFlags;
  310.         PBYTE pBuffer = NULL;
  311.         PSYSTEM_HANDLE_INFORMATION pHandleInfo;
  312.         char szName[512];
  313.         char szType[128];
  314.         POBJECT_NAME_INFORMATION pNameInfo;
  315.         POBJECT_NAME_INFORMATION pNameType;
  316.         CString strInfo;
  317.         char szANSIName[MAX_PATH];
  318.         char szANSIType[MAX_PATH];

  319.         m_lstProcInfo.DeleteAllItems();
  320.         dwNeedSize = 16 * 1024;
  321.         status = STATUS_INFO_LENGTH_MISMATCH;
  322.         while (STATUS_INFO_LENGTH_MISMATCH == status)
  323.         {
  324.                 dwNeedSize *= 2;
  325.                 if (pBuffer)
  326.                         free(pBuffer);
  327.                 pBuffer = (BYTE *)malloc(dwNeedSize);
  328.                 status = ZwQuerySystemInformation(SystemHandleInformation, pBuffer, dwNeedSize, &dwNeedSize);
  329.                 if (dwNeedSize > 20 * 1024 * 1024 || (status != STATUS_INFO_LENGTH_MISMATCH && status != 0))
  330.                 {
  331.                         free(pBuffer);
  332.                         MessageBox("NtQuerySystemInformation 函数调用失败! ");
  333.                         return;
  334.                 }
  335.         }
  336.         Count = *(DWORD *)pBuffer;
  337.         pHandleInfo = (PSYSTEM_HANDLE_INFORMATION)(pBuffer + sizeof(DWORD));
  338.         for (int i = 0; i < Count; i++)    //复制指定进程的
  339.         {
  340.                 if (pHandleInfo.ProcessId == pid)
  341.                 {
  342.                         memset(szName, 0, sizeof(szName));
  343.                         memset(szType, 0, sizeof(szType));
  344.                         NTSTATUS Status = NtQueryObject((HANDLE)pHandleInfo.Handle, ObjectNameInformation, szName, 512, &dwFlags);
  345.                         Status = NtQueryObject((HANDLE)pHandleInfo.Handle, ObjectTypeInformation, szType, 128, &dwFlags);

  346.                         pNameInfo = (POBJECT_NAME_INFORMATION)szName;
  347.                         pNameType = (POBJECT_NAME_INFORMATION)szType;

  348.                         memset(szANSIName, 0, sizeof(szANSIName));
  349.                         memset(szANSIType, 0, sizeof(szANSIType));

  350.                         WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK,
  351.                                 (LPCWSTR)pNameInfo->Name.Buffer,
  352.                                 -1,
  353.                                 szANSIName,
  354.                                 sizeof(szANSIName),
  355.                                 NULL,
  356.                                 NULL);
  357.                         WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK,
  358.                                 (LPCWSTR)pNameType->Name.Buffer,
  359.                                 -1,
  360.                                 szANSIType,
  361.                                 sizeof(szANSIType),
  362.                                 NULL,
  363.                                 NULL);
  364.                         //        判断名称或者类型是否为空
  365.                         if (enType==EM_SHOWNORMAL)
  366.                         {
  367.                                 if (strcmp(szANSIType, "") == 0)
  368.                                         continue;
  369.                         }
  370.                         else if (enType==EM_SHOWALL)
  371.                         {
  372.                                 ;//        显示所就继续向下执行
  373.                         }
  374.                         else if (enType == EM_KILLHANDLE)
  375.                         {
  376.                                 if (uHandle == pHandleInfo.Handle)
  377.                                 {
  378.                                         HANDLE hProcess;
  379.                                         HMODULE hModel;
  380.                                         PVOID lpCloseHandle;
  381.                                         CString strMsg;
  382.                                         hProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_WRITE | PROCESS_VM_OPERATION, FALSE, pid);
  383.                                         hModel = GetModuleHandle("Kernel32.dll");
  384.                                         lpCloseHandle = GetProcAddress(hModel, "CloseHandle");
  385.                                         CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)lpCloseHandle,(LPVOID)uHandle, 0, NULL);
  386.                                         CloseHandle(hProcess);
  387.                                         continue;
  388.                                 }
  389.                                 if (strcmp(szANSIType, "") == 0)
  390.                                         continue;
  391.                         }
  392.                         else if (enType==EM_KILLMUTEX)
  393.                         {
  394.                                 if (strcmp(szANSIType,"Mutant")==0)
  395.                                 {
  396.                                         HANDLE hProcess;
  397.                                         HMODULE hModel;
  398.                                         PVOID lpCloseHandle;
  399.                                         CString strMsg;
  400.                                         hProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_WRITE | PROCESS_VM_OPERATION, FALSE, pid);
  401.                                         hModel = GetModuleHandle("Kernel32.dll");
  402.                                         lpCloseHandle = GetProcAddress(hModel, "CloseHandle");
  403.                                         CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)lpCloseHandle, (LPVOID)uHandle, 0, NULL);
  404.                                         CloseHandle(hProcess);
  405.                                         continue;
  406.                                 }
  407.                                 if (strcmp(szANSIType, "") == 0)
  408.                                         continue;
  409.                         }
  410.                         nIndex = m_lstProcInfo.InsertItem(nIndex, szANSIName);
  411.                         
  412.                         m_lstProcInfo.SetItemText(nIndex, 1, szANSIType);
  413.                         strInfo.Format("%d", pHandleInfo.Handle);
  414.                         m_lstProcInfo.SetItemText(nIndex, 2, strInfo);
  415.                         m_lstProcInfo.SetItemData(nIndex, pHandleInfo.Handle);
  416.                 }
  417.         }
  418.         free(pBuffer);
  419. }


  420. void CSeekHandleDlg::OnShowall()
  421. {
  422.         // TODO:  在此添加命令处理程序代码
  423.         if (m_pid == 0)
  424.                 MessageBox("请先选择进程!");
  425.         enumProcInfo(EM_SHOWALL, m_pid);
  426. }


  427. void CSeekHandleDlg::OnScreen()
  428. {
  429.         // TODO:  在此添加命令处理程序代码
  430.         if (m_pid == 0)
  431.                 MessageBox("请先选择进程!");
  432.         enumProcInfo(EM_SHOWNORMAL, m_pid);
  433. }

  434. void CSeekHandleDlg::OnClosehand()
  435. {
  436.         // TODO:  在此添加命令处理程序代码
  437.         ULONG uHandle;
  438.         int iItemSel = m_lstProcInfo.GetNextItem(-1, LVIS_SELECTED);
  439.         if (iItemSel != -1)
  440.         {
  441.                 uHandle = m_lstProcInfo.GetItemData(iItemSel);
  442.                 enumProcInfo(EM_KILLHANDLE, m_pid, uHandle);
  443.         }
  444. }


  445. void CSeekHandleDlg::OnCleanmutex()
  446. {
  447.         // TODO:  在此添加命令处理程序代码
  448.         enumProcInfo(EM_KILLMUTEX,m_pid);
  449. }
复制代码



联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:【超清】第13讲 十天学会单片机和C语言编程 郭天翔
下一篇:获取机器唯一标识【硬盘ID,MAC,处理器ID】
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:[email protected]),本站将立即改正。

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】和【海币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
3正式会员
123/300

123

积分

70

主题

1

听众
已帮网友解决0 个问题
好评
-1
贡献
53
海币
318
交易币
0
沙发
发表于 2014-7-26 06:01:21 | 只看该作者
不错,感谢无私和分享精神!
3正式会员
122/300

122

积分

88

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
34
海币
1404
交易币
0
板凳
发表于 2014-8-13 07:10:19 | 只看该作者
来刷分的,hehe
6高级会员
624/1100

624

积分

193

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
431
海币
7388
交易币
0
地板
发表于 2014-8-31 14:27:45 | 只看该作者
感谢楼主,有你们这样人人,社会才会W美

2

积分

1

主题

0

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
912
交易币
0
5#
发表于 2014-9-16 05:01:12 | 只看该作者
无回帖,不论坛,这才是人道。

0

积分

0

主题

0

听众
已帮网友解决0 个问题
好评
0
贡献
0
海币
304
交易币
0
6#
发表于 2014-9-29 06:57:54 | 只看该作者
感恩无私的分享与奉献 :)

60

积分

29

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
31
海币
1987
交易币
0
7#
发表于 2014-10-12 15:07:01 | 只看该作者
我常来...支持 海论坛

35

积分

23

主题

2

听众
已帮网友解决0 个问题
好评
0
贡献
12
海币
594
交易币
0
8#
发表于 2015-3-12 13:40:13 | 只看该作者
为保住菊花,这个一定得回复!

52

积分

29

主题

8

听众
已帮网友解决0 个问题
好评
0
贡献
23
海币
7059
交易币
0
9#
发表于 2015-6-25 07:36:56 | 只看该作者
顶楼主啦..希望楼主多发精品好帖啦....

0

积分

0

主题

0

听众
已帮网友解决0 个问题
好评
0
贡献
0
海币
0
交易币
0
10#
发表于 2015-8-22 17:21:54 | 只看该作者
勤奋真能造就财富吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2024-5-8 09:01 , Processed in 0.535437 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

快速回复 返回顶部 返回列表