Files
mirror-processhacker/2.x/trunk/plugins/ProcessActions/main.c
T
wj32 43ec20a4a0 added config dialog
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@3567 21ef857c-d57f-4fe0-8362-d861dc6d29cd
2010-09-06 02:51:49 +00:00

173 lines
4.2 KiB
C

#include <phdk.h>
#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:
{
PH_PLUGIN_INFORMATION info;
info.DisplayName = L"Process Actions";
info.Author = L"wj32";
info.Description = L"Provides configurable actions for processes.";
info.HasOptions = TRUE;
PluginInstance = PhRegisterPlugin(L"ProcessHacker.ProcessActions", Instance, &info);
if (!PluginInstance)
return FALSE;
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;
}