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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 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),

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日日骚欧美日韩| 欧美v亚洲v综合ⅴ国产v| 成人欧美一区二区三区小说| 风间由美性色一区二区三区| 国产精品欧美久久久久一区二区 | 99久久精品国产导航| 91丨porny丨首页| 亚洲成人资源在线| 欧美一区二区三区婷婷月色| 久久99精品国产91久久来源| 欧美韩国日本综合| 色婷婷av久久久久久久| 一区二区三区在线不卡| 欧美日韩黄色一区二区| 看国产成人h片视频| 国产亚洲精品7777| 色综合中文字幕国产 | 日韩理论片在线| 91国偷自产一区二区三区成为亚洲经典| 一区二区三区国产豹纹内裤在线| 欧美色中文字幕| 蜜桃视频在线观看一区二区| 久久久高清一区二区三区| av在线播放一区二区三区| 亚洲国产精品欧美一二99| 日韩三级在线免费观看| av在线播放成人| 免费不卡在线视频| 亚洲欧洲国产专区| 日韩久久精品一区| 91老司机福利 在线| 另类小说图片综合网| 亚洲精品日日夜夜| 精品国产乱码久久久久久久久| 91亚洲国产成人精品一区二区三| 蜜桃视频一区二区| 亚洲精品乱码久久久久久黑人| 欧美电影免费观看高清完整版在线观看 | 日韩成人一级大片| 久久久久国产精品厨房| 欧美日韩在线播放三区| 成人丝袜高跟foot| 日韩av网站免费在线| 中文字幕一区二区三区色视频 | 国产麻豆视频一区二区| 午夜私人影院久久久久| 欧美国产综合色视频| 91精品蜜臀在线一区尤物| 波多野结衣亚洲一区| 激情文学综合丁香| 午夜视频在线观看一区二区 | 亚洲成人资源在线| 日韩一区欧美小说| 国产亚洲成av人在线观看导航 | 国产精品久久久一区麻豆最新章节| 91精品视频网| 欧美日韩三级在线| jlzzjlzz国产精品久久| 国产一区二三区好的| 蜜桃久久久久久| 午夜天堂影视香蕉久久| 亚洲国产综合色| 亚洲欧美经典视频| 日韩伦理免费电影| 综合色天天鬼久久鬼色| 中文字幕va一区二区三区| xfplay精品久久| 精品久久久久久久久久久院品网 | 色哟哟一区二区| 99精品偷自拍| 成人动漫一区二区三区| 成人午夜av电影| 成人国产精品免费观看视频| 国产成人精品免费一区二区| 国产精品18久久久久久久久久久久| 国产在线不卡视频| 黄色精品一二区| 韩国女主播一区| 国产精品1区2区| 成人精品国产一区二区4080| 成人理论电影网| 国产a视频精品免费观看| 成人一道本在线| 成人免费毛片aaaaa**| zzijzzij亚洲日本少妇熟睡| 国产成人午夜电影网| www.欧美色图| 91传媒视频在线播放| 欧日韩精品视频| 欧美一卡二卡在线| 久久先锋影音av| 国产婷婷一区二区| 中文字幕一区二区三区色视频| 亚洲精品第1页| 男男视频亚洲欧美| 国产精品一区二区三区四区| 风间由美一区二区三区在线观看 | 日韩伦理免费电影| 樱花草国产18久久久久| 亚洲一区二区美女| 奇米色777欧美一区二区| 国产传媒日韩欧美成人| 91亚洲午夜精品久久久久久| 欧美日韩高清影院| 久久久五月婷婷| 亚洲精品自拍动漫在线| 三级影片在线观看欧美日韩一区二区| 日本午夜一区二区| 国产一区 二区 三区一级| 91在线无精精品入口| 欧美美女一区二区在线观看| 日韩三级高清在线| 国产精品国产三级国产有无不卡 | 久久99精品国产麻豆不卡| 成人国产亚洲欧美成人综合网| 在线这里只有精品| 精品久久久久久久久久久院品网| 亚洲欧洲三级电影| 男人的天堂久久精品| 91网页版在线| 精品久久久久久综合日本欧美| 最新国产成人在线观看| 久久99精品久久久久久| 91国产免费观看| 国产清纯在线一区二区www| 亚洲va在线va天堂| 国产91清纯白嫩初高中在线观看| 在线播放日韩导航| 中文字幕一区三区| 韩国视频一区二区| 欧美日本一区二区三区| 中文字幕一区av| 韩国精品在线观看| 欧美伦理影视网| 一区二区三区在线观看国产| 国产一区二区三区精品欧美日韩一区二区三区 | 91丨porny丨户外露出| 久久丝袜美腿综合| 日韩成人一级大片| 91久久精品国产91性色tv| 久久伊99综合婷婷久久伊| 日韩和欧美一区二区| 色综合天天综合给合国产| 久久九九久精品国产免费直播| 三级不卡在线观看| 精品视频一区二区三区免费| 成人欧美一区二区三区1314| 久久精品免费看| 欧美精品高清视频| 一区二区三区产品免费精品久久75| 丁香婷婷综合激情五月色| 精品福利av导航| 麻豆国产91在线播放| 欧美一区二区三区不卡| 日韩电影在线观看电影| 欧美日韩日日骚| 亚洲国产婷婷综合在线精品| 色菇凉天天综合网| 亚洲精品国产一区二区三区四区在线| 国产精品一二二区| 久久久久97国产精华液好用吗| 久久国产尿小便嘘嘘尿| 精品福利av导航| 国产精品一区二区久久精品爱涩| 精品久久久久久久人人人人传媒| 久久成人麻豆午夜电影| 精品国产人成亚洲区| 韩国v欧美v亚洲v日本v| 久久先锋影音av鲁色资源| 国产不卡在线播放| 国产片一区二区三区| 成人免费毛片高清视频| 亚洲乱码日产精品bd| 91福利在线导航| 日韩在线a电影| 日韩免费观看高清完整版| 免费美女久久99| 精品国产91洋老外米糕| 国产不卡在线一区| 中文字幕一区二区三| 欧美丝袜丝nylons| 日韩一区精品字幕| 精品国产亚洲一区二区三区在线观看 | 欧美成人猛片aaaaaaa| 国产一区视频在线看| 欧美激情一区二区在线| 91成人看片片| 麻豆国产欧美一区二区三区| 精品国产sm最大网站免费看 | 91蜜桃在线免费视频| 亚洲一区二区三区三| 精品少妇一区二区三区视频免付费 | 亚洲最大成人综合| 欧美精品高清视频| 国产传媒一区在线| 亚洲一二三专区| 欧美精品一区二区三区高清aⅴ| 成人a级免费电影| 五月激情综合婷婷| 亚洲国产精品二十页|