Files
BeneficialCode-WinArk/WinArk/ProcessModuleTable.h
T

75 lines
3.3 KiB
C++

#pragma once
#include "Table.h"
#include "resource.h"
#include "ProcessModuleTracker.h"
class CProcessModuleTable :
public CTable<std::shared_ptr<WinSys::ModuleInfo>>,
public CWindowImpl<CProcessModuleTable> {
public:
DECLARE_WND_CLASS_EX(NULL, CS_DBLCLKS | CS_VREDRAW | CS_HREDRAW, COLOR_WINDOW);
BEGIN_MSG_MAP(CProcessModuleTable)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_HSCROLL, OnHScroll)
MESSAGE_HANDLER(WM_VSCROLL, OnVScroll)
MESSAGE_HANDLER(WM_USER_VABS, OnUserVabs)
MESSAGE_HANDLER(WM_USER_VREL, OnUserVrel)
MESSAGE_HANDLER(WM_USER_CHGS, OnUserChgs)
MESSAGE_HANDLER(WM_MOUSEWHEEL, OnMouseWheel)
MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove)
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLBtnDown)
MESSAGE_HANDLER(WM_LBUTTONUP, OnLBtnUp)
MESSAGE_HANDLER(WM_USER_STS, OnUserSts)
MESSAGE_HANDLER(WM_WINDOWPOSCHANGED, OnWindowPosChanged)
MESSAGE_HANDLER(WM_KEYDOWN, OnKeyDown)
MESSAGE_HANDLER(WM_SYSKEYDOWN, OnSysKeyDown)
MESSAGE_HANDLER(WM_GETDLGCODE, OnGetDlgCode)
END_MSG_MAP()
CProcessModuleTable(BarInfo& bars, TableInfo& table,DWORD pid,HWND hwnd);
CProcessModuleTable(BarInfo& bars, TableInfo& table, HANDLE hProcess);
int ParseTableEntry(CString& s, char& mask, int& select, std::shared_ptr<WinSys::ModuleInfo>& info, int column);
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lparam, BOOL& /*bHandled*/);
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnHScroll(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnVScroll(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnUserVabs(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnUserVrel(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnUserChgs(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnMouseWheel(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnLBtnDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnLBtnUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnRBtnDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnUserSts(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnWindowPosChanged(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnKeyDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnSysKeyDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);
LRESULT OnGetDlgCode(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);
struct ModuleInfoEx {
DWORD64 TargetTime = 0;
bool IsNew{ false };
bool IsUnloaded{ false };
};
ModuleInfoEx& GetModuleEx(WinSys::ModuleInfo* mi);
CString CharacteristicsToString(WinSys::DllCharacteristics ch);
void Refresh();
std::wstring GetFileDescription(std::wstring path);
enum class ModuleColumn {
ModuleName,Type,Bit,FileDescription, ModuleSize,Base, ImageBase, Characteristics,Path
};
private:
std::unordered_map<WinSys::ModuleInfo*, ModuleInfoEx> m_ModulesEx;
WinSys::ProcessModuleTracker m_Tracker;
HWND _hDlg;
};