106 lines
2.6 KiB
C++
106 lines
2.6 KiB
C++
#include "pch.h"
|
|
#include "windows_injectorpage.h"
|
|
#include "Injector.h"
|
|
#include "debugconsole.h"
|
|
|
|
namespace windows_injectorpage {
|
|
|
|
const wchar_t ws_inject[] = L"inject";
|
|
const wchar_t ws_emptytext[] = L"";
|
|
constexpr unsigned short maxlen_injectpathtofile = (128 - 32);
|
|
|
|
class PathAndInjectButton
|
|
{
|
|
private:
|
|
CWindow_edit_cfg path;
|
|
CWindow_button injectorbutton;
|
|
public:
|
|
PathAndInjectButton() = default;
|
|
~PathAndInjectButton() = default;
|
|
void Build(CWindowsBuilder& builder, int editwidth, int buttonwidth, int height, int gap)
|
|
{
|
|
constexpr DWORD FlatButtonStyleInvisble = (WS_CHILD & ~WS_VISIBLE) | BS_PUSHBUTTON | BS_CENTER | BS_FLAT;
|
|
constexpr DWORD NewEditStyle_Invisible = WS_CHILD & ~WS_VISIBLE | WS_BORDER;
|
|
|
|
builder.ChangeStyle(NewEditStyle_Invisible);
|
|
builder.ChangeHeight(height);
|
|
builder.ChangeWidth(editwidth);
|
|
builder.ChangeTextP(ws_emptytext);
|
|
this->path.Visit(&builder);
|
|
builder.ChangeLeftPos(builder.build_left_pos + builder.build_width + gap);
|
|
builder.ChangeStyle(FlatButtonStyleInvisble);
|
|
builder.ChangeWidth(buttonwidth);
|
|
builder.ChangeTextP(ws_inject);
|
|
this->injectorbutton.Visit(&builder);
|
|
}
|
|
void Show() const
|
|
{
|
|
path.Show();
|
|
injectorbutton.Show();
|
|
}
|
|
void Hide() const
|
|
{
|
|
path.Hide();
|
|
injectorbutton.Hide();
|
|
}
|
|
void ButtonHandler(WPARAM& wparam)
|
|
{
|
|
if (injectorbutton.id == LOWORD(wparam))
|
|
{
|
|
Injector::Inject0r().APC_Inject(CWindowTextReader_GetTextW(&path, maxlen_injectpathtofile));
|
|
}
|
|
}
|
|
void ApplyFonts(CWindowsFontApplier& fontmaster)
|
|
{
|
|
this->injectorbutton.Visit(&fontmaster);
|
|
this->path.Visit(&fontmaster);
|
|
}
|
|
};
|
|
|
|
PathAndInjectButton path1;
|
|
PathAndInjectButton path2;
|
|
|
|
};
|
|
|
|
void windows_injectorpage::Build(CWindowsBuilder& builder, int left, int width, int top, int height, HWND hwnd)
|
|
{
|
|
builder.ChangeParentHWND(hwnd);
|
|
builder.ChangeLeftPos(left);
|
|
builder.ChangeTopPos(top);
|
|
|
|
int gap = 5;
|
|
int bwidth = 50;
|
|
int editwidth = width - (left*2 + gap + bwidth);
|
|
int rheight = 20;
|
|
|
|
path1.Build(builder, editwidth, bwidth, rheight, gap);
|
|
builder.ChangeLeftPos(left);
|
|
builder.ChangeTopPos(builder.build_top_pos + builder.build_height + gap);
|
|
path2.Build(builder, editwidth, bwidth, rheight, gap);
|
|
}
|
|
|
|
void windows_injectorpage::ApplyFonts(CWindowsFontApplier& fontappl)
|
|
{
|
|
path1.ApplyFonts(fontappl);
|
|
path2.ApplyFonts(fontappl);
|
|
}
|
|
|
|
void windows_injectorpage::Show()
|
|
{
|
|
path1.Show();
|
|
path2.Show();
|
|
}
|
|
|
|
void windows_injectorpage::Hide()
|
|
{
|
|
path1.Hide();
|
|
path2.Hide();
|
|
}
|
|
|
|
void windows_injectorpage::ButtonHandler(WPARAM& param)
|
|
{
|
|
path1.ButtonHandler(param);
|
|
path2.ButtonHandler(param);
|
|
}
|
|
|