mirror of
https://github.com/mirror/processhacker
synced 2026-06-08 16:03:24 +00:00
edb2ce5ddb
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@6086 21ef857c-d57f-4fe0-8362-d861dc6d29cd
405 lines
8.6 KiB
C
405 lines
8.6 KiB
C
#ifndef PH_MINIINFOP_H
|
|
#define PH_MINIINFOP_H
|
|
|
|
// Constants
|
|
|
|
#define MIP_CONTAINER_CLASSNAME L"ProcessHackerMiniInfo"
|
|
|
|
#define MIP_TIMER_PIN_FIRST 1
|
|
#define MIP_TIMER_PIN_LAST (MIP_TIMER_PIN_FIRST + MaxMiniInfoPinType - 1)
|
|
|
|
#define MIP_MSG_FIRST (WM_APP + 150)
|
|
#define MIP_MSG_UPDATE (WM_APP + 150)
|
|
#define MIP_MSG_LAST (WM_APP + 151)
|
|
|
|
#define MIP_UNPIN_CHILD_CONTROL_DELAY 1000
|
|
#define MIP_UNPIN_HOVER_DELAY 250
|
|
|
|
#define MIP_SEPARATOR_HEIGHT 2
|
|
#define MIP_PADDING_SIZE 3
|
|
|
|
#define MIP_REFRESH_AUTOMATICALLY_PINNED 0x1
|
|
#define MIP_REFRESH_AUTOMATICALLY_UNPINNED 0x2
|
|
#define MIP_REFRESH_AUTOMATICALLY_FLAG(Pinned) \
|
|
((Pinned) ? MIP_REFRESH_AUTOMATICALLY_PINNED : MIP_REFRESH_AUTOMATICALLY_UNPINNED)
|
|
|
|
// Misc.
|
|
|
|
#define SET_BUTTON_BITMAP(hwndDlg, Id, Bitmap) \
|
|
SendMessage(GetDlgItem(hwndDlg, (Id)), BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)(Bitmap))
|
|
|
|
// Dialog procedure
|
|
|
|
LRESULT CALLBACK PhMipContainerWndProc(
|
|
_In_ HWND hWnd,
|
|
_In_ UINT uMsg,
|
|
_In_ WPARAM wParam,
|
|
_In_ LPARAM lParam
|
|
);
|
|
|
|
INT_PTR CALLBACK PhMipMiniInfoDialogProc(
|
|
_In_ HWND hwndDlg,
|
|
_In_ UINT uMsg,
|
|
_In_ WPARAM wParam,
|
|
_In_ LPARAM lParam
|
|
);
|
|
|
|
// Container event handlers
|
|
|
|
VOID PhMipContainerOnShowWindow(
|
|
_In_ BOOLEAN Showing,
|
|
_In_ ULONG State
|
|
);
|
|
|
|
VOID PhMipContainerOnActivate(
|
|
_In_ ULONG Type,
|
|
_In_ BOOLEAN Minimized
|
|
);
|
|
|
|
VOID PhMipContainerOnSize(
|
|
VOID
|
|
);
|
|
|
|
VOID PhMipContainerOnSizing(
|
|
_In_ ULONG Edge,
|
|
_In_ PRECT DragRectangle
|
|
);
|
|
|
|
VOID PhMipContainerOnExitSizeMove(
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN PhMipContainerOnEraseBkgnd(
|
|
_In_ HDC hdc
|
|
);
|
|
|
|
VOID PhMipContainerOnTimer(
|
|
_In_ ULONG Id
|
|
);
|
|
|
|
// Child dialog event handlers
|
|
|
|
VOID PhMipOnInitDialog(
|
|
VOID
|
|
);
|
|
|
|
VOID PhMipOnShowWindow(
|
|
_In_ BOOLEAN Showing,
|
|
_In_ ULONG State
|
|
);
|
|
|
|
VOID PhMipOnCommand(
|
|
_In_ ULONG Id,
|
|
_In_ ULONG Code
|
|
);
|
|
|
|
BOOLEAN PhMipOnNotify(
|
|
_In_ NMHDR *Header,
|
|
_Out_ LRESULT *Result
|
|
);
|
|
|
|
BOOLEAN PhMipOnCtlColorXxx(
|
|
_In_ ULONG Message,
|
|
_In_ HWND hwnd,
|
|
_In_ HDC hdc,
|
|
_Out_ HBRUSH *Brush
|
|
);
|
|
|
|
BOOLEAN PhMipOnDrawItem(
|
|
_In_ ULONG_PTR Id,
|
|
_In_ DRAWITEMSTRUCT *DrawItemStruct
|
|
);
|
|
|
|
VOID PhMipOnUserMessage(
|
|
_In_ ULONG Message,
|
|
_In_ ULONG_PTR WParam,
|
|
_In_ ULONG_PTR LParam
|
|
);
|
|
|
|
// Framework
|
|
|
|
typedef enum _PH_MIP_ADJUST_PIN_RESULT
|
|
{
|
|
NoAdjustPinResult,
|
|
ShowAdjustPinResult,
|
|
HideAdjustPinResult
|
|
} PH_MIP_ADJUST_PIN_RESULT;
|
|
|
|
BOOLEAN NTAPI PhMipMessageLoopFilter(
|
|
_In_ PMSG Message,
|
|
_In_ PVOID Context
|
|
);
|
|
|
|
VOID NTAPI PhMipUpdateHandler(
|
|
_In_opt_ PVOID Parameter,
|
|
_In_opt_ PVOID Context
|
|
);
|
|
|
|
PH_MIP_ADJUST_PIN_RESULT PhMipAdjustPin(
|
|
_In_ PH_MINIINFO_PIN_TYPE PinType,
|
|
_In_ LONG PinCount
|
|
);
|
|
|
|
VOID PhMipCalculateWindowRectangle(
|
|
_In_ PPOINT SourcePoint,
|
|
_Out_ PPH_RECTANGLE WindowRectangle
|
|
);
|
|
|
|
VOID PhMipInitializeParameters(
|
|
VOID
|
|
);
|
|
|
|
PPH_MINIINFO_SECTION PhMipCreateSection(
|
|
_In_ PPH_MINIINFO_SECTION Template
|
|
);
|
|
|
|
VOID PhMipDestroySection(
|
|
_In_ PPH_MINIINFO_SECTION Section
|
|
);
|
|
|
|
PPH_MINIINFO_SECTION PhMipFindSection(
|
|
_In_ PPH_STRINGREF Name
|
|
);
|
|
|
|
PPH_MINIINFO_SECTION PhMipCreateInternalSection(
|
|
_In_ PWSTR Name,
|
|
_In_ ULONG Flags,
|
|
_In_ PPH_MINIINFO_SECTION_CALLBACK Callback
|
|
);
|
|
|
|
VOID PhMipCreateSectionDialog(
|
|
_In_ PPH_MINIINFO_SECTION Section
|
|
);
|
|
|
|
VOID PhMipChangeSection(
|
|
_In_ PPH_MINIINFO_SECTION NewSection
|
|
);
|
|
|
|
VOID PhMipSetSectionText(
|
|
_In_ struct _PH_MINIINFO_SECTION *Section,
|
|
_In_opt_ PPH_STRING Text
|
|
);
|
|
|
|
VOID PhMipUpdateSectionText(
|
|
_In_ PPH_MINIINFO_SECTION Section
|
|
);
|
|
|
|
VOID PhMipLayout(
|
|
VOID
|
|
);
|
|
|
|
VOID PhMipBeginChildControlPin(
|
|
VOID
|
|
);
|
|
|
|
VOID PhMipEndChildControlPin(
|
|
VOID
|
|
);
|
|
|
|
VOID PhMipRefresh(
|
|
VOID
|
|
);
|
|
|
|
VOID PhMipToggleRefreshAutomatically(
|
|
VOID
|
|
);
|
|
|
|
VOID PhMipSetPinned(
|
|
_In_ BOOLEAN Pinned
|
|
);
|
|
|
|
VOID PhMipShowSectionMenu(
|
|
VOID
|
|
);
|
|
|
|
VOID PhMipShowOptionsMenu(
|
|
VOID
|
|
);
|
|
|
|
LRESULT CALLBACK PhMipSectionControlHookWndProc(
|
|
_In_ HWND hwnd,
|
|
_In_ UINT uMsg,
|
|
_In_ WPARAM wParam,
|
|
_In_ LPARAM lParam
|
|
);
|
|
|
|
// List-based section
|
|
|
|
#define MIP_MAX_PROCESS_GROUPS 15
|
|
#define MIP_SINGLE_COLUMN_ID 0
|
|
|
|
#define MIP_CELL_PADDING 5
|
|
#define MIP_ICON_PADDING 3
|
|
#define MIP_INNER_PADDING 3
|
|
|
|
typedef struct _PH_MIP_GROUP_NODE
|
|
{
|
|
union
|
|
{
|
|
PH_TREENEW_NODE Node;
|
|
PH_MINIINFO_LIST_SECTION_SORT_DATA SortData;
|
|
};
|
|
PPH_PROCESS_GROUP ProcessGroup;
|
|
HANDLE RepresentativeProcessId;
|
|
LARGE_INTEGER RepresentativeCreateTime;
|
|
|
|
PPH_STRING TooltipText;
|
|
} PH_MIP_GROUP_NODE, *PPH_MIP_GROUP_NODE;
|
|
|
|
PPH_MINIINFO_LIST_SECTION PhMipCreateListSection(
|
|
_In_ PWSTR Name,
|
|
_In_ ULONG Flags,
|
|
_In_ PPH_MINIINFO_LIST_SECTION Template
|
|
);
|
|
|
|
PPH_MINIINFO_LIST_SECTION PhMipCreateInternalListSection(
|
|
_In_ PWSTR Name,
|
|
_In_ ULONG Flags,
|
|
_In_ PPH_MINIINFO_LIST_SECTION_CALLBACK Callback
|
|
);
|
|
|
|
BOOLEAN PhMipListSectionCallback(
|
|
_In_ PPH_MINIINFO_SECTION Section,
|
|
_In_ PH_MINIINFO_SECTION_MESSAGE Message,
|
|
_In_opt_ PVOID Parameter1,
|
|
_In_opt_ PVOID Parameter2
|
|
);
|
|
|
|
INT_PTR CALLBACK PhMipListSectionDialogProc(
|
|
_In_ HWND hwndDlg,
|
|
_In_ UINT uMsg,
|
|
_In_ WPARAM wParam,
|
|
_In_ LPARAM lParam
|
|
);
|
|
|
|
VOID PhMipListSectionSortFunction(
|
|
_In_ PPH_LIST List,
|
|
_In_opt_ PVOID Context
|
|
);
|
|
|
|
VOID PhMipTickListSection(
|
|
_In_ PPH_MINIINFO_LIST_SECTION ListSection
|
|
);
|
|
|
|
VOID PhMipClearListSection(
|
|
_In_ PPH_MINIINFO_LIST_SECTION ListSection
|
|
);
|
|
|
|
LONG PhMipCalculateRowHeight(
|
|
VOID
|
|
);
|
|
|
|
PPH_MIP_GROUP_NODE PhMipAddGroupNode(
|
|
_In_ PPH_MINIINFO_LIST_SECTION ListSection,
|
|
_In_ PPH_PROCESS_GROUP ProcessGroup
|
|
);
|
|
|
|
VOID PhMipDestroyGroupNode(
|
|
_In_ PPH_MIP_GROUP_NODE Node
|
|
);
|
|
|
|
BOOLEAN PhMipListSectionTreeNewCallback(
|
|
_In_ HWND hwnd,
|
|
_In_ PH_TREENEW_MESSAGE Message,
|
|
_In_opt_ PVOID Parameter1,
|
|
_In_opt_ PVOID Parameter2,
|
|
_In_opt_ PVOID Context
|
|
);
|
|
|
|
PPH_STRING PhMipGetGroupNodeTooltip(
|
|
_In_ PPH_MINIINFO_LIST_SECTION ListSection,
|
|
_In_ PPH_MIP_GROUP_NODE Node
|
|
);
|
|
|
|
PPH_MIP_GROUP_NODE PhMipGetSelectedGroupNode(
|
|
_In_ PPH_MINIINFO_LIST_SECTION ListSection
|
|
);
|
|
|
|
VOID PhMipShowListSectionContextMenu(
|
|
_In_ PPH_MINIINFO_LIST_SECTION ListSection,
|
|
_In_ PPH_TREENEW_CONTEXT_MENU ContextMenu
|
|
);
|
|
|
|
VOID PhMipHandleListSectionCommand(
|
|
_In_ PPH_MINIINFO_LIST_SECTION ListSection,
|
|
_In_ PPH_PROCESS_GROUP ProcessGroup,
|
|
_In_ ULONG Id
|
|
);
|
|
|
|
// CPU section
|
|
|
|
BOOLEAN PhMipCpuListSectionCallback(
|
|
_In_ struct _PH_MINIINFO_LIST_SECTION *ListSection,
|
|
_In_ PH_MINIINFO_LIST_SECTION_MESSAGE Message,
|
|
_In_opt_ PVOID Parameter1,
|
|
_In_opt_ PVOID Parameter2
|
|
);
|
|
|
|
int __cdecl PhMipCpuListSectionProcessCompareFunction(
|
|
_In_ const void *elem1,
|
|
_In_ const void *elem2
|
|
);
|
|
|
|
int __cdecl PhMipCpuListSectionNodeCompareFunction(
|
|
_In_ const void *elem1,
|
|
_In_ const void *elem2
|
|
);
|
|
|
|
// Commit Charge section
|
|
|
|
BOOLEAN PhMipCommitListSectionCallback(
|
|
_In_ struct _PH_MINIINFO_LIST_SECTION *ListSection,
|
|
_In_ PH_MINIINFO_LIST_SECTION_MESSAGE Message,
|
|
_In_opt_ PVOID Parameter1,
|
|
_In_opt_ PVOID Parameter2
|
|
);
|
|
|
|
int __cdecl PhMipCommitListSectionProcessCompareFunction(
|
|
_In_ const void *elem1,
|
|
_In_ const void *elem2
|
|
);
|
|
|
|
int __cdecl PhMipCommitListSectionNodeCompareFunction(
|
|
_In_ const void *elem1,
|
|
_In_ const void *elem2
|
|
);
|
|
|
|
// Physical Memory section
|
|
|
|
BOOLEAN PhMipPhysicalListSectionCallback(
|
|
_In_ struct _PH_MINIINFO_LIST_SECTION *ListSection,
|
|
_In_ PH_MINIINFO_LIST_SECTION_MESSAGE Message,
|
|
_In_opt_ PVOID Parameter1,
|
|
_In_opt_ PVOID Parameter2
|
|
);
|
|
|
|
int __cdecl PhMipPhysicalListSectionProcessCompareFunction(
|
|
_In_ const void *elem1,
|
|
_In_ const void *elem2
|
|
);
|
|
|
|
int __cdecl PhMipPhysicalListSectionNodeCompareFunction(
|
|
_In_ const void *elem1,
|
|
_In_ const void *elem2
|
|
);
|
|
|
|
// I/O section
|
|
|
|
BOOLEAN PhMipIoListSectionCallback(
|
|
_In_ struct _PH_MINIINFO_LIST_SECTION *ListSection,
|
|
_In_ PH_MINIINFO_LIST_SECTION_MESSAGE Message,
|
|
_In_opt_ PVOID Parameter1,
|
|
_In_opt_ PVOID Parameter2
|
|
);
|
|
|
|
int __cdecl PhMipIoListSectionProcessCompareFunction(
|
|
_In_ const void *elem1,
|
|
_In_ const void *elem2
|
|
);
|
|
|
|
int __cdecl PhMipIoListSectionNodeCompareFunction(
|
|
_In_ const void *elem1,
|
|
_In_ const void *elem2
|
|
);
|
|
|
|
#endif |