/*
* Process Hacker ToolStatus -
* toolstatus header
*
* Copyright (C) 2011-2016 dmex
* Copyright (C) 2010-2013 wj32
*
* This file is part of Process Hacker.
*
* Process Hacker is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Process Hacker is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Process Hacker. If not, see .
*/
#ifndef _TOOLSTATUS_H
#define _TOOLSTATUS_H
#define CINTERFACE
#define COBJMACROS
#define INITGUID
#include
#include
#include
#include
#include
#include "resource.h"
#define PLUGIN_NAME TOOLSTATUS_PLUGIN_NAME
#define SETTING_NAME_TOOLSTATUS_CONFIG (PLUGIN_NAME L".Config")
#define SETTING_NAME_REBAR_CONFIG (PLUGIN_NAME L".RebarConfig")
#define SETTING_NAME_TOOLBAR_CONFIG (PLUGIN_NAME L".ToolbarConfig")
#define SETTING_NAME_STATUSBAR_CONFIG (PLUGIN_NAME L".StatusbarConfig")
#define SETTING_NAME_TOOLBAR_THEME (PLUGIN_NAME L".ToolbarTheme")
#define SETTING_NAME_TOOLBARDISPLAYSTYLE (PLUGIN_NAME L".ToolbarDisplayStyle")
#define SETTING_NAME_SEARCHBOXDISPLAYMODE (PLUGIN_NAME L".SearchBoxDisplayMode")
#define MAX_DEFAULT_TOOLBAR_ITEMS 9
#define MAX_DEFAULT_STATUSBAR_ITEMS 3
#define MAX_TOOLBAR_ITEMS 12
#define MAX_STATUSBAR_ITEMS 14
#define ID_SEARCH_CLEAR (WM_APP + 1)
#define TIDC_FINDWINDOW (WM_APP + 2)
#define TIDC_FINDWINDOWTHREAD (WM_APP + 3)
#define TIDC_FINDWINDOWKILL (WM_APP + 4)
#define TIDC_POWERMENUDROPDOWN (WM_APP + 5)
typedef enum _TOOLBAR_DISPLAY_STYLE
{
TOOLBAR_DISPLAY_STYLE_IMAGEONLY,
TOOLBAR_DISPLAY_STYLE_SELECTIVETEXT,
TOOLBAR_DISPLAY_STYLE_ALLTEXT
} TOOLBAR_DISPLAY_STYLE;
typedef enum _TOOLBAR_COMMAND_ID
{
COMMAND_ID_ENABLE_MENU = 1,
COMMAND_ID_ENABLE_SEARCHBOX,
COMMAND_ID_ENABLE_CPU_GRAPH,
COMMAND_ID_ENABLE_MEMORY_GRAPH,
COMMAND_ID_ENABLE_COMMIT_GRAPH,
COMMAND_ID_ENABLE_IO_GRAPH,
COMMAND_ID_TOOLBAR_LOCKUNLOCK,
COMMAND_ID_TOOLBAR_CUSTOMIZE,
} TOOLBAR_COMMAND_ID;
typedef enum _TOOLBAR_THEME
{
TOOLBAR_THEME_NONE,
TOOLBAR_THEME_BLACK,
TOOLBAR_THEME_BLUE
} TOOLBAR_THEME;
typedef enum _SEARCHBOX_DISPLAY_MODE
{
SEARCHBOX_DISPLAY_MODE_ALWAYSSHOW,
SEARCHBOX_DISPLAY_MODE_HIDEINACTIVE,
//SEARCHBOX_DISPLAY_MODE_AUTOHIDE
} SEARCHBOX_DISPLAY_MODE;
typedef enum _REBAR_BAND_ID
{
REBAR_BAND_ID_TOOLBAR,
REBAR_BAND_ID_SEARCHBOX,
REBAR_BAND_ID_CPUGRAPH,
REBAR_BAND_ID_MEMGRAPH,
REBAR_BAND_ID_COMMITGRAPH,
REBAR_BAND_ID_IOGRAPH
} REBAR_BAND;
typedef enum _REBAR_DISPLAY_LOCATION
{
REBAR_DISPLAY_LOCATION_TOP,
REBAR_DISPLAY_LOCATION_LEFT,
REBAR_DISPLAY_LOCATION_BOTTOM,
REBAR_DISPLAY_LOCATION_RIGHT,
} REBAR_DISPLAY_LOCATION;
typedef union _TOOLSTATUS_CONFIG
{
ULONG Flags;
struct
{
ULONG ToolBarEnabled : 1;
ULONG SearchBoxEnabled : 1;
ULONG StatusBarEnabled : 1;
ULONG ToolBarLocked : 1;
ULONG ResolveGhostWindows : 1;
ULONG ModernIcons : 1;
ULONG AutoHideMenu : 1;
ULONG CpuGraphEnabled : 1;
ULONG MemGraphEnabled : 1;
ULONG CommitGraphEnabled : 1;
ULONG IoGraphEnabled : 1;
ULONG Spare : 21;
};
} TOOLSTATUS_CONFIG;
extern TOOLSTATUS_CONFIG ToolStatusConfig;
extern HWND ProcessTreeNewHandle;
extern HWND ServiceTreeNewHandle;
extern HWND NetworkTreeNewHandle;
extern INT SelectedTabIndex;
extern BOOLEAN UpdateAutomatically;
extern BOOLEAN UpdateGraphs;
extern TOOLBAR_THEME ToolBarTheme;
extern TOOLBAR_DISPLAY_STYLE DisplayStyle;
extern SEARCHBOX_DISPLAY_MODE SearchBoxDisplayMode;
extern REBAR_DISPLAY_LOCATION RebarDisplayLocation;
extern HWND RebarHandle;
extern HWND ToolBarHandle;
extern HWND SearchboxHandle;
extern HMENU MainMenu;
extern HACCEL AcceleratorTable;
extern PPH_STRING SearchboxText;
extern PH_PLUGIN_SYSTEM_STATISTICS SystemStatistics;
extern HIMAGELIST ToolBarImageList;
extern TBBUTTON ToolbarButtons[MAX_TOOLBAR_ITEMS];
extern PPH_PLUGIN PluginInstance;
extern PPH_TN_FILTER_ENTRY ProcessTreeFilterEntry;
extern PPH_TN_FILTER_ENTRY ServiceTreeFilterEntry;
extern PPH_TN_FILTER_ENTRY NetworkTreeFilterEntry;
PTOOLSTATUS_TAB_INFO FindTabInfo(
_In_ INT TabIndex
);
// toolbar.c
typedef HRESULT (WINAPI *_LoadIconMetric)(
_In_ HINSTANCE hinst,
_In_ PCWSTR pszName,
_In_ int lims,
_Out_ HICON *phico
);
VOID RebarBandInsert(
_In_ UINT BandID,
_In_ HWND HwndChild,
_In_ UINT cyMinChild,
_In_ UINT cxMinChild
);
VOID RebarBandRemove(
_In_ UINT BandID
);
BOOLEAN RebarBandExists(
_In_ UINT BandID
);
VOID ToolbarLoadSettings(
VOID
);
VOID ToolbarResetSettings(
VOID
);
PWSTR ToolbarGetText(
_In_ INT CommandID
);
HBITMAP ToolbarGetImage(
_In_ INT CommandID
);
VOID ToolbarLoadButtonSettings(
VOID
);
VOID ToolbarSaveButtonSettings(
VOID
);
VOID ReBarLoadLayoutSettings(
VOID
);
VOID ReBarSaveLayoutSettings(
VOID
);
// main.c
HWND GetCurrentTreeNewHandle(
VOID
);
VOID ShowCustomizeMenu(
VOID
);
// options.c
VOID ShowOptionsDialog(
_In_opt_ HWND Parent
);
// filter.c
BOOLEAN WordMatchStringRef(
_In_ PPH_STRINGREF Text
);
BOOLEAN ProcessTreeFilterCallback(
_In_ PPH_TREENEW_NODE Node,
_In_opt_ PVOID Context
);
BOOLEAN ServiceTreeFilterCallback(
_In_ PPH_TREENEW_NODE Node,
_In_opt_ PVOID Context
);
BOOLEAN NetworkTreeFilterCallback(
_In_ PPH_TREENEW_NODE Node,
_In_opt_ PVOID Context
);
// searchbox.c
HWND CreateSearchControl(
_In_ UINT CmdId
);
typedef struct _EDIT_CONTEXT
{
UINT CommandID;
LONG CXWidth;
INT CXBorder;
INT ImageWidth;
INT ImageHeight;
HWND WindowHandle;
HFONT WindowFont;
HIMAGELIST ImageList;
HBRUSH BrushNormal;
HBRUSH BrushPushed;
HBRUSH BrushHot;
//COLORREF BackgroundColorRef;
union
{
ULONG Flags;
struct
{
ULONG Hot : 1;
ULONG Pushed : 1;
ULONG Spare : 30;
};
};
} EDIT_CONTEXT, *PEDIT_CONTEXT;
HBITMAP LoadImageFromResources(
_In_ UINT Width,
_In_ UINT Height,
_In_ PCWSTR Name
);
// graph.c
extern HWND CpuGraphHandle;
extern HWND MemGraphHandle;
extern HWND CommitGraphHandle;
extern HWND IoGraphHandle;
VOID ToolbarCreateGraphs(VOID);
VOID ToolbarUpdateGraphs(VOID);
VOID ToolbarUpdateGraphsInfo(LPNMHDR Header);
// statusbar.c
typedef struct _STATUSBAR_ITEM
{
ULONG Id;
} STATUSBAR_ITEM, *PSTATUSBAR_ITEM;
extern ULONG ProcessesUpdatedCount;
extern HWND StatusBarHandle;
extern PPH_LIST StatusBarItemList;
extern ULONG StatusBarItems[MAX_STATUSBAR_ITEMS];
VOID StatusBarLoadSettings(
VOID
);
VOID StatusBarSaveSettings(
VOID
);
VOID StatusBarResetSettings(
VOID
);
PWSTR StatusBarGetText(
_In_ ULONG CommandID
);
VOID StatusBarUpdate(
_In_ BOOLEAN ResetMaxWidths
);
VOID StatusBarShowMenu(
VOID
);
// customizetb.c
VOID ToolBarShowCustomizeDialog(
VOID
);
// customizesb.c
typedef enum _ID_STATUS
{
ID_STATUS_NONE,
ID_STATUS_CPUUSAGE,
ID_STATUS_COMMITCHARGE,
ID_STATUS_PHYSICALMEMORY,
ID_STATUS_NUMBEROFPROCESSES,
ID_STATUS_NUMBEROFTHREADS,
ID_STATUS_NUMBEROFHANDLES,
ID_STATUS_IO_RO,
ID_STATUS_IO_W,
ID_STATUS_MAX_CPU_PROCESS,
ID_STATUS_MAX_IO_PROCESS,
ID_STATUS_NUMBEROFVISIBLEITEMS,
ID_STATUS_NUMBEROFSELECTEDITEMS,
ID_STATUS_INTERVALSTATUS,
ID_STATUS_FREEMEMORY
} ID_STATUS;
VOID StatusBarShowCustomizeDialog(
VOID
);
// Shared by customizetb.c and customizesb.c
typedef struct _BUTTON_CONTEXT
{
INT IdCommand;
INT IdBitmap;
union
{
ULONG Flags;
struct
{
ULONG IsVirtual : 1;
ULONG IsRemovable : 1;
ULONG IsSeparator : 1;
ULONG Spare : 29;
};
};
} BUTTON_CONTEXT, *PBUTTON_CONTEXT;
typedef struct _CUSTOMIZE_CONTEXT
{
HWND DialogHandle;
HWND AvailableListHandle;
HWND CurrentListHandle;
HWND MoveUpButtonHandle;
HWND MoveDownButtonHandle;
HWND AddButtonHandle;
HWND RemoveButtonHandle;
INT BitmapWidth;
HFONT FontHandle;
HIMAGELIST ImageListHandle;
} CUSTOMIZE_CONTEXT, *PCUSTOMIZE_CONTEXT;
#endif