亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pviewce.cpp

?? PView CE from Microsoft Corporation
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
///////////////////////////////////////////////////////////////////////////////
//  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
//  ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
//  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
//  PARTICULAR PURPOSE.
//
//  This is "Sample Code" and is distributable subject to the terms of the 
//  end user license agreement.
///////////////////////////////////////////////////////////////////////////////
//
// PViewCE.CPP
//
// CE Process Viewer
//

#include <windows.h>
#include <aygshell.h>
#include <tpcshell.h>
#include <tlhelp32.h>

// Note: because this sample uses tlhelp32.h, it must be signed with a 
//       privileged certificate
#include <tlhelp32.h>

#include "newres.h"
#include "resource.h"

/*===========================================================================
 * Macro Definitions
*/

#define ARRAY_LENGTH(x) (sizeof(x)/sizeof((x)[0]))


/*===========================================================================
 * Type Definitions
*/

struct MODSNAP
{
    DWORD   dwOwnerPID;
    HANDLE  hSnapShot;
};


/*===========================================================================
 * Function Prototypes 
*/

BOOL CALLBACK MainDialogProc(
    const HWND hDlg, 
    const UINT uiMessage, 
    const WPARAM wParam, 
    const LPARAM lParam
    );
BOOL CALLBACK ProcessDialogProc(
    const HWND hDlg, 
    const UINT uiMessage, 
    const WPARAM wParam,
    const LPARAM lParam
    );
BOOL CALLBACK ThreadDialogProc(
    const HWND hDlg,
    const UINT uiMessage, 
    const WPARAM wParam,
    const LPARAM lParam
    );
BOOL CALLBACK ModuleDialogProc(
    const HWND hDlg, 
    const UINT uiMessage, 
    const WPARAM wParam,
    const LPARAM lPara
    );
static LPCTSTR StringFromResources(
    UINT uStringID
    );
static BOOL FillProcList(
    HANDLE hProcessSnap
    );
static BOOL FillThreadList(
    HANDLE hProcessSnap, 
    DWORD dwOwnerPID
    );
static BOOL FillModuleList(
    DWORD dwOwnerPID
    );
static BOOL InitModuleSnap(
    HANDLE hProcessSnap);
static int PID2ArrayID(
    DWORD dwOwnerPID
    );


/*===========================================================================
 * Global Variables
*/

HINSTANCE   g_hInst = NULL;

// Variable for snapshot info
MODSNAP* g_pmsModuleSnap = NULL;
HANDLE g_hProcessSnap = NULL;
int g_iTotalProcs = 0;

HWND g_hWndMain;
HWND g_hWndListViews[3];

LPCTSTR pszAppName;
LPCTSTR pszTitle;

// define to index into g_hWndListViews
#define PROCESSLV 0
#define THREADLV 1
#define MODULELV 2

//Utility functions

// Purpose: Determine at runtime if the app is running on a smartphone device
static BOOL IsSmartphone() 
{
    TCHAR tszPlatform[64];

    if (TRUE == SystemParametersInfo(SPI_GETPLATFORMTYPE,
         sizeof(tszPlatform)/sizeof(*tszPlatform),tszPlatform,0))
    {
        if (0 == _tcsicmp(TEXT("Smartphone"), tszPlatform)) 
        {
            return TRUE;
        }
    }
    return FALSE;   
}


int MyMessageBox(HWND hWnd, LPCTSTR lpctszMessage)
{
    return MessageBox(hWnd, lpctszMessage, TEXT("PViewCE"), MB_OK);
}

static LPCTSTR StringFromResources(
    UINT uStringID
    )
{
    // NOTE: Passing NULL for the 3rd parameter of LoadString causes it to
    // return a pointer to the string in the resource file. It requires that
    // the resource file is compiled with the "/n" switch (see SDK docs).
    return (LPCTSTR) LoadString(g_hInst, uStringID, NULL, 0);
}

DWORD GetListViewProc()
{
    DWORD dwReturn = NULL;
    LVITEM lvi;
    ZeroMemory(&lvi, sizeof(lvi));
    lvi.iItem = ListView_GetSelectionMark(g_hWndListViews[PROCESSLV]);
    if (-1 != lvi.iItem)
    {
        lvi.mask = LVIF_PARAM;
        ListView_GetItem(g_hWndListViews[PROCESSLV], &lvi);
        dwReturn = lvi.lParam;
    }
    return dwReturn;
}

DWORD GetListViewThread()
{
    DWORD dwReturn = NULL;
    LVITEM lvi;
    ZeroMemory(&lvi, sizeof(lvi));
    lvi.iItem = ListView_GetSelectionMark(g_hWndListViews[THREADLV]);
    if (-1 != lvi.iItem)
    {
        lvi.mask = LVIF_PARAM;
        ListView_GetItem(g_hWndListViews[THREADLV], &lvi);
        dwReturn = lvi.lParam;
    }
    return dwReturn;
}

DWORD GetListViewModule()
{
    DWORD dwReturn = NULL;
    LVITEM lvi;
    ZeroMemory(&lvi, sizeof(lvi));
    lvi.iItem = ListView_GetSelectionMark(g_hWndListViews[MODULELV]);
    if (-1 != lvi.iItem)
    {
        lvi.mask = LVIF_PARAM;
        ListView_GetItem(g_hWndListViews[MODULELV], &lvi);
        dwReturn = lvi.lParam;
    }
    return dwReturn;
}

//Listbox management functions
BOOL InitListViews(
    HWND hWndParent
    )
{
	LVCOLUMN lvc;
	RECT rc;

    // Create each ListView and configure it
	GetClientRect(hWndParent, &rc);
	
    for (int x = 0; x < ARRAY_LENGTH(g_hWndListViews); x++) 
    {
        g_hWndListViews[x] = CreateWindow(WC_LISTVIEW, TEXT("ListItem"), 
	        WS_CHILD | LVS_REPORT | LVS_SORTASCENDING | WS_VISIBLE | WS_HSCROLL | LVS_SINGLESEL, 
	        0, 0, rc.right, rc.bottom, hWndParent, NULL, g_hInst, NULL); 
        if (NULL == g_hWndListViews[x])
        {
            return FALSE;
        }
        ListView_SetExtendedListViewStyle(g_hWndListViews[x], LVS_EX_FULLROWSELECT);
    }	
	

    // Now setup the ListView headers

    //Find out how big to make the right column (TID/PID/MID)
    int iIdWidth = 90;
    //int iIdWidth = SendMessage(g_hWndListViews[PROCESSLV], LVM_GETSTRINGWIDTH, 0, (LPARAM)TEXT("0x00000000"));

    // Configure PROCESSLV first
    ZeroMemory(&lvc, sizeof(lvc));
	lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
	lvc.cx = (rc.right - rc.left) - iIdWidth;
	
	// Add column for Process
	lvc.pszText = (LPTSTR)StringFromResources(IDS_PROCESS);
	ListView_InsertColumn(g_hWndListViews[PROCESSLV], lvc.iSubItem, &lvc);
	
	// Add column for PID
	lvc.iSubItem++;
	lvc.pszText = (LPTSTR)StringFromResources(IDS_PID);
    lvc.cx = iIdWidth;
	ListView_InsertColumn(g_hWndListViews[PROCESSLV], lvc.iSubItem, &lvc);

    // Configure THREADLV
    ZeroMemory(&lvc, sizeof(lvc));
	lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
	lvc.cx = (rc.right - rc.left) - iIdWidth;
	
	// Add column for Process
	lvc.pszText = (LPTSTR)StringFromResources(IDS_TID);
	ListView_InsertColumn(g_hWndListViews[THREADLV], lvc.iSubItem, &lvc);
	
	// Add column for PID
	lvc.iSubItem++;
	lvc.pszText = (LPTSTR)StringFromResources(IDS_BASEPRI);
    lvc.cx = iIdWidth;
	ListView_InsertColumn(g_hWndListViews[THREADLV], lvc.iSubItem, &lvc);

    // Configure MODULELV
    ZeroMemory(&lvc, sizeof(lvc));
	lvc.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
	lvc.cx = (rc.right - rc.left) - iIdWidth;
	
	// Add column for Process
	lvc.pszText = (LPTSTR)StringFromResources(IDS_MODULE);
	ListView_InsertColumn(g_hWndListViews[MODULELV], lvc.iSubItem, &lvc);
	
	// Add column for PID
	lvc.iSubItem++;
	lvc.pszText = (LPTSTR)StringFromResources(IDS_MID);
    lvc.cx = iIdWidth;
	ListView_InsertColumn(g_hWndListViews[MODULELV], lvc.iSubItem, &lvc);

    return TRUE;
}

BOOL GetSnapshots()
{
    // Check for old snapshot
    if (NULL != g_hProcessSnap)
    {
        VERIFY(CloseToolhelp32Snapshot(g_hProcessSnap));
    }
    
    if (NULL != g_pmsModuleSnap) 
    {
        free(g_pmsModuleSnap);
    }

    // Create a new snapshot
    g_hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
    if (INVALID_HANDLE_VALUE  == g_hProcessSnap) 
    {
        MyMessageBox(NULL, StringFromResources(IDS_CREATESNAPSHOT_FAILED));
        return FALSE;
    }

    // Take all the module snapshots - if any of them fails, exit...
    // This will make the snapshot operation as a whole seem atomic
    if (FALSE == InitModuleSnap(g_hProcessSnap)) 
    {
        return FALSE;
    }

    return TRUE;
}

void CleanupListViewes()
{
    for (int x = 0; x < ARRAY_LENGTH(g_hWndListViews); x++)
    {
        if (TRUE == IsWindow(g_hWndListViews[x]))
        {
            DestroyWindow(g_hWndListViews[x]);
        }
    }
}

BOOL InitWindow(
    HWND hWnd
    )
{
	SHMENUBARINFO mbi;
	
	// fill in the menubar info struct
	ZeroMemory(&mbi, sizeof(mbi));
	mbi.cbSize = sizeof(mbi);
	mbi.hwndParent = hWnd;
	mbi.nToolBarId = IDR_MENU_BAR;
	mbi.hInstRes = g_hInst;

	return SHCreateMenuBar(&mbi);
}

LRESULT CALLBACK MainWndProc( 
    HWND hWnd,
    UINT Msg,
    WPARAM wParam,
    LPARAM lParam
    )
{

    switch (Msg)
    {
    case WM_CREATE:
        if (FALSE == InitWindow(hWnd))
        {
            MyMessageBox(NULL, TEXT("Failed to init window"));
            //Failed to init window, lets quit
            PostQuitMessage(0);
        }
	
        if (FALSE == InitListViews(hWnd))
        {
            MyMessageBox(NULL, TEXT("Failed to init window"));
            //Failed init, lets quit
            PostQuitMessage(0);
        }

        PostMessage(hWnd, WM_COMMAND, IDM_MENU_REFRESH, NULL);
        break;
    case WM_COMMAND:
        switch (wParam)
        {
        case IDM_MENU_PROCESS:
            BringWindowToTop(g_hWndListViews[PROCESSLV]);
            SetFocus(g_hWndListViews[PROCESSLV]);
            break;

        case IDM_MENU_THREAD:
            FillThreadList(g_hProcessSnap, GetListViewProc());
            BringWindowToTop(g_hWndListViews[THREADLV]);
            SetFocus(g_hWndListViews[THREADLV]);
            break;

        case IDM_MENU_MODULE:
            FillModuleList(GetListViewProc());
            BringWindowToTop(g_hWndListViews[MODULELV]);
            SetFocus(g_hWndListViews[MODULELV]);
            break;

        case IDM_MENU_REFRESH:
            GetSnapshots();
            FillProcList(g_hProcessSnap);
            BringWindowToTop(g_hWndListViews[PROCESSLV]);
            SetFocus(g_hWndListViews[PROCESSLV]);
            break;

        case IDM_MENU_QUIT:
            PostMessage(hWnd, WM_DESTROY, NULL, NULL);
            break;
        case IDM_MENU_SOFT1:
            {
                HWND hWndFocus = GetFocus();
                if (hWndFocus == g_hWndListViews[PROCESSLV])
                {
                    DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DLGPROCESS),
                        0, (DLGPROC)ProcessDialogProc); 
                    SetFocus(g_hWndListViews[PROCESSLV]);
                }
                else if (hWndFocus == g_hWndListViews[THREADLV])
                {
                    DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DLGTHREAD),
                        0, (DLGPROC)ThreadDialogProc);
                    SetFocus(g_hWndListViews[THREADLV]);
                }
                else if (hWndFocus == g_hWndListViews[MODULELV])
                {
                    DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DLGMODULE),

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
a在线播放不卡| 欧美一卡2卡三卡4卡5免费| 99re视频精品| 欧美日韩国产欧美日美国产精品| 欧美日韩大陆一区二区| 日韩欧美资源站| 国产精品伦一区二区三级视频| 亚洲精品日日夜夜| 香蕉av福利精品导航| 狠狠色丁香九九婷婷综合五月| 国产自产高清不卡| 欧美综合视频在线观看| 日韩精品在线网站| 亚洲男同性视频| 久久99久久精品| 欧美亚洲国产一区二区三区| 精品国产成人在线影院| 一区二区三区精品在线| 精品一区二区在线看| 在线一区二区三区| 欧美激情中文字幕一区二区| 日本一区中文字幕| 国产一区二区0| 欧美乱妇一区二区三区不卡视频| 国产丝袜美腿一区二区三区| 奇米色777欧美一区二区| 欧洲一区二区av| 国产精品国产a| 国产精品一区二区三区四区| 51精品国自产在线| 亚洲电影第三页| 欧洲av一区二区嗯嗯嗯啊| 国产精品国产三级国产专播品爱网| 六月婷婷色综合| 欧美一区二区视频在线观看2022| 一区二区三区视频在线看| av网站一区二区三区| 国产欧美日韩三区| 国产成人在线免费观看| 欧美精品一区二区不卡 | 亚洲欧美日韩国产综合| 成人精品小蝌蚪| 中文字幕制服丝袜一区二区三区 | 亚洲bdsm女犯bdsm网站| 欧美亚洲尤物久久| 亚洲国产aⅴ成人精品无吗| 91国产视频在线观看| 亚洲一线二线三线久久久| 欧美特级限制片免费在线观看| 亚洲欧美国产高清| 欧美日韩国产免费一区二区 | 国产欧美日韩不卡| 波多野结衣欧美| 亚洲一区二区五区| 欧美一卡2卡3卡4卡| 国产一区二区在线视频| 中文字幕欧美国产| 欧美在线综合视频| 欧美羞羞免费网站| 久久66热re国产| 国产精品美女久久久久久久久久久 | 日韩视频免费观看高清完整版在线观看| 欧美a一区二区| 中文字幕亚洲一区二区va在线| 欧美精品一卡二卡| 夫妻av一区二区| 日本视频一区二区三区| 国产精品视频看| 91精品欧美一区二区三区综合在| 国产999精品久久| 奇米精品一区二区三区在线观看| 中文字幕乱码久久午夜不卡| 欧美群妇大交群的观看方式| 国产999精品久久久久久绿帽| 亚洲成a人片在线观看中文| 国产女主播一区| 亚洲国产精品久久一线不卡| 中文字幕第一区综合| 精品福利一二区| 欧美日韩国产天堂| 99精品视频一区| 国产毛片一区二区| 欧洲亚洲精品在线| 色呦呦日韩精品| 91日韩精品一区| 9i在线看片成人免费| 国产精品99久久久久久久女警 | 在线成人小视频| 91黄色激情网站| 91久久香蕉国产日韩欧美9色| 成人爱爱电影网址| 成人免费看视频| 不卡av免费在线观看| 成人av在线播放网址| 成人精品视频一区二区三区| 狠狠色综合播放一区二区| 精品午夜一区二区三区在线观看| 久久er99精品| 成a人片亚洲日本久久| www.视频一区| 欧美在线免费播放| 欧美日韩一区三区四区| 欧美卡1卡2卡| 欧美成人aa大片| 国产人妖乱国产精品人妖| 国产精品麻豆欧美日韩ww| 亚洲欧美激情视频在线观看一区二区三区 | 成人av免费观看| 91麻豆蜜桃一区二区三区| 色婷婷亚洲综合| 欧美一区2区视频在线观看| 久久男人中文字幕资源站| 18成人在线视频| 丝袜美腿亚洲综合| 国产麻豆视频精品| 欧美在线免费观看视频| 欧美电影免费观看高清完整版在线| 久久综合中文字幕| 亚洲精品视频一区| 国产麻豆精品视频| 色天天综合久久久久综合片| 国产欧美一区二区在线| 亚洲国产高清在线| 亚洲成人黄色影院| 国产91清纯白嫩初高中在线观看| 欧洲在线/亚洲| 国产蜜臀97一区二区三区 | 久久99精品久久久久婷婷| 一本到不卡免费一区二区| 亚洲第一精品在线| 成人黄色软件下载| 欧美va亚洲va国产综合| 亚洲va国产天堂va久久en| av毛片久久久久**hd| 91麻豆精品国产| 亚洲视频图片小说| 国产成人夜色高潮福利影视| 欧美一级免费观看| 亚洲成人免费在线观看| www.亚洲在线| 国产欧美日本一区视频| 国产伦理精品不卡| 日韩一级完整毛片| 日韩精品视频网站| 在线播放一区二区三区| 亚洲高清免费在线| 91啪亚洲精品| 亚洲精品乱码久久久久久| voyeur盗摄精品| 国产精品久99| 99精品久久99久久久久| 中文字幕在线观看一区二区| 成人福利视频网站| 亚洲欧美综合网| 91伊人久久大香线蕉| 亚洲精品免费电影| 欧美精品日韩一区| 蜜臀av一区二区三区| 久久看人人爽人人| 成人一道本在线| 亚洲男女一区二区三区| 色94色欧美sute亚洲13| 亚洲综合在线观看视频| 9191国产精品| 国产在线观看一区二区| 国产精品欧美久久久久无广告 | 精品国产一区二区三区忘忧草| 狠狠色狠狠色综合系列| 中文一区一区三区高中清不卡| 91日韩一区二区三区| 水蜜桃久久夜色精品一区的特点| 日韩精品资源二区在线| 成人97人人超碰人人99| 日韩专区欧美专区| 国产性天天综合网| 欧美亚州韩日在线看免费版国语版| 秋霞午夜鲁丝一区二区老狼| 国产精品网曝门| 日韩一区二区在线观看视频播放| 国产精品中文字幕欧美| 亚洲欧洲综合另类| 久久伊人蜜桃av一区二区| 欧美在线视频你懂得| 国产成人精品一区二| 五月激情综合婷婷| 综合久久国产九一剧情麻豆| 精品99一区二区| 欧美视频在线一区| 99久久婷婷国产| 激情小说欧美图片| 蜜桃久久av一区| 亚洲v日本v欧美v久久精品| 国产精品久久久久久久久久免费看| 欧美日本国产视频| 91黄视频在线| 欧美午夜精品免费| 91极品美女在线| 色呦呦一区二区三区| 99久久国产综合色|国产精品| 成人性生交大合|