#include #include "procdb.h" #include "actions.h" #include "resource.h" VOID NTAPI LoadCallback( __in_opt PVOID Parameter, __in_opt PVOID Context ); VOID NTAPI ShowOptionsCallback( __in_opt PVOID Parameter, __in_opt PVOID Context ); VOID NTAPI MenuItemCallback( __in_opt PVOID Parameter, __in_opt PVOID Context ); VOID NTAPI MainWindowShowingCallback( __in_opt PVOID Parameter, __in_opt PVOID Context ); INT_PTR CALLBACK OptionsDlgProc( __in HWND hwndDlg, __in UINT uMsg, __in WPARAM wParam, __in LPARAM lParam ); PPH_PLUGIN PluginInstance; PH_CALLBACK_REGISTRATION PluginLoadCallbackRegistration; PH_CALLBACK_REGISTRATION PluginShowOptionsCallbackRegistration; PH_CALLBACK_REGISTRATION PluginMenuItemCallbackRegistration; PH_CALLBACK_REGISTRATION MainWindowShowingCallbackRegistration; LOGICAL DllMain( __in HINSTANCE Instance, __in ULONG Reason, __reserved PVOID Reserved ) { switch (Reason) { case DLL_PROCESS_ATTACH: { PPH_PLUGIN_INFORMATION info; PluginInstance = PhRegisterPlugin(L"ProcessHacker.ProcessActions", Instance, &info); if (!PluginInstance) return FALSE; info->DisplayName = L"Process Actions"; info->Author = L"wj32"; info->Description = L"Provides configurable actions for processes."; info->HasOptions = TRUE; PhRegisterCallback( PhGetPluginCallback(PluginInstance, PluginCallbackLoad), LoadCallback, NULL, &PluginLoadCallbackRegistration ); PhRegisterCallback( PhGetPluginCallback(PluginInstance, PluginCallbackShowOptions), ShowOptionsCallback, NULL, &PluginShowOptionsCallbackRegistration ); PhRegisterCallback( PhGetPluginCallback(PluginInstance, PluginCallbackMenuItem), MenuItemCallback, NULL, &PluginMenuItemCallbackRegistration ); PhRegisterCallback( PhGetGeneralCallback(GeneralCallbackMainWindowShowing), MainWindowShowingCallback, NULL, &MainWindowShowingCallbackRegistration ); //{ // static PH_SETTING_CREATE settings[] = // { // { StringSettingType, L"ProcessHacker.ProcessActions.SbieDllPath", L"C:\\Program Files\\Sandboxie\\SbieDll.dll" } // }; // PhAddSettings(settings, sizeof(settings) / sizeof(PH_SETTING_CREATE)); //} } break; } return TRUE; } VOID NTAPI LoadCallback( __in_opt PVOID Parameter, __in_opt PVOID Context ) { PaProcDbInitialization(); PaActionsInitialization(); } VOID NTAPI ShowOptionsCallback( __in_opt PVOID Parameter, __in_opt PVOID Context ) { PhShowInformation(PhMainWndHandle, L"Use Tools > Configure Actions... to configure this plugin."); } VOID NTAPI MenuItemCallback( __in_opt PVOID Parameter, __in_opt PVOID Context ) { PPH_PLUGIN_MENU_ITEM menuItem = Parameter; switch (menuItem->Id) { // TODO } } VOID NTAPI MainWindowShowingCallback( __in_opt PVOID Parameter, __in_opt PVOID Context ) { // TODO } INT_PTR CALLBACK OptionsDlgProc( __in HWND hwndDlg, __in UINT uMsg, __in WPARAM wParam, __in LPARAM lParam ) { switch (uMsg) { case WM_INITDIALOG: { // TODO } break; case WM_COMMAND: { switch (LOWORD(wParam)) { case IDCANCEL: EndDialog(hwndDlg, IDCANCEL); break; case IDOK: { EndDialog(hwndDlg, IDOK); } break; } } break; } return FALSE; }