//
//////////////////////////////////////////////////////////////
//函数名:DoPropertySheet
//功能:创建属性表
//入口参数:
// hwndOwner:属性表的拥有者窗口。NULL表示桌面
//出口参数:无
/////////////////////////////////////////////////////////////
//
void DoPropertySheet(HWND hwndOwner)
{
PROPSHEETPAGE psp[2];
PROPSHEETHEADER psh;
psp[0].dwSize = sizeof(PROPSHEETPAGE);
psp[0].dwFlags = PSP_USEICONID | PSP_USETITLE;//|PSP_USECALLBACK;
psp[0].hInstance = g_hinst;
psp[0].pszTemplate = MAKEINTRESOURCE(IDD_TABSHEET1);
psp[0].pszIcon = 0;//MAKEINTRESOURCE(IDI_FONT);
psp[0].pfnDlgProc =(DLGPROC)ProcessPageDlgProc;//进程页的对话框过程
psp[0].pszTitle = "进程";
psp[0].lParam = 0;
psp[0].pfnCallback = NULL;
psp[1].dwSize = sizeof(PROPSHEETPAGE);
psp[1].dwFlags = PSP_USEICONID | PSP_USETITLE;//|PSP_USECALLBACK;
psp[1].hInstance = g_hinst;
psp[1].pszTemplate = MAKEINTRESOURCE(IDD_TABSHEET2);
psp[1].pszIcon =0;// MAKEINTRESOURCE(IDI_BORDER);
psp[1].pfnDlgProc = (DLGPROC)WindowPageDlgProc;//窗口页的对话框过程
psp[1].pszTitle ="窗口";
psp[1].lParam = 0;
psp[1].pfnCallback = NULL;
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_USEICONID | PSH_PROPSHEETPAGE|PSH_USECALLBACK;
psh.hwndParent = hwndOwner;
psh.hInstance = g_hinst;
psh.pszIcon =0;// MAKEINTRESOURCE(IDI_CELL_PROPERTIES);
psh.pszCaption = (LPSTR) "进程管理器";
psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
psh.nStartPage = 0;
psh.ppsp = (LPCPROPSHEETPAGE) &psp;
psh.pfnCallback =(PFNPROPSHEETCALLBACK)SheetProc;//属性表的回调函数
PropertySheet((LPCPROPSHEETHEADER)&psh);
return;
}
//
//////////////////////////////////////////////////////////////////////////
//函数:My_RunFileScan
//功能:将进程名显示在列表框上
//入口参数:
// hwndListbox 列表框句柄
//出口参数:无
//////////////////////////////////////////////////////////////////////////
//
void My_RunFileScan(HWND hwndListbox)
{
ProcessInfo p;
HANDLE ProcessListHandle;
PROCESSENTRY32 ProcessStruct;
BOOL ok;
//清列表框
ListBox_ResetContent(hwndListbox);
//创建进程快照
ProcessListHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
ProcessStruct.dwSize = sizeof(PROCESSENTRY32);
ok = Process32First(ProcessListHandle,&ProcessStruct);
for(int i=0; ok!=0; i++)
{
p= (ProcessInfo)malloc(sizeof(TProcessInfo));
p->ExeFile = ProcessStruct.szExeFile;
p->ProcessID = ProcessStruct.th32ProcessID;
int n=ListBox_AddString(hwndListbox,ProcessStruct.szExeFile);
//listbox的sort属性已改为false
//MessageBox(0,"请观察是如何加入列表框的","~00~",0);
//将p附加到列表框第n项(从0开始)
ListBox_SetItemData(hwndListbox,n,p);
//下面这段代码是调试时用来验证指针确实附加在列表项上
//ProcessInfo p2 = (ProcessInfo)ListBox_GetItemData
(hwndListbox,n);
//char buffer[100];
//wsprinf(buffer,"%p",p2);
//MessageBox(0,buffer,"~00~",0);
ok = Process32Next(ProcessListHandle,&ProcessStruct);
}
CloseHandle(ProcessListHandle);
}
//
// Process WM_INITDIALOG message for window/dialog: ProcessPageDlg
//
BOOL ProcessPageDlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
// TODO: Add your message processing code here...
SendMessage(GetDlgItem(hwnd, IDC_LIST1), LB_SETHORIZONTALEXTENT, 500,
0);
return TRUE;
}