configdialog.cpp

来自「文件加密解密源代码」· C++ 代码 · 共 112 行

CPP
112
字号
#include "stdafx.h"
#include "ConfigDialog.h"
#include <stdio.h>
#include "registry.h"

ConfigDialog::ConfigDialog()
{
}

ConfigDialog::~ConfigDialog()
{
}

LRESULT ConfigDialog::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
	return 1;
}

LRESULT ConfigDialog::OnCloseDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
	EndDialog(0);
	return 0;
}

LRESULT ConfigDialog::OnBnClickedRegisterButton(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
	char fullKey[100];
	_snprintf(fullKey, 100, "%s\\shell\\open\\command\0", _masterKey);

	Registry reg(HKEY_CLASSES_ROOT, fullKey);
	
	if (reg.checkValidity())
	{
        char *cmdLine = getCmdLine();        
		
		reg.setValue("", REG_SZ, cmdLine, (DWORD)strlen(cmdLine));

		delete cmdLine;
	}

	reg.changeKey(HKEY_CLASSES_ROOT, ".enc");
	
	if (reg.checkValidity())
	{
		// backing up old key (last parameter).
		reg.setValue("", REG_SZ, _masterKey, (DWORD)strlen(_masterKey), true);
	}

	MessageBox("Registry Settings added Successfully", "Finished", MB_ICONQUESTION);

	return 0;
}

LRESULT ConfigDialog::OnBnClickedUnregisterButton(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
	SHDeleteKey(HKEY_CLASSES_ROOT, _masterKey);

	Registry reg(HKEY_CLASSES_ROOT, ".enc");

	if (!reg.restore(_masterKey))
	{
		reg.deleteKey(true);
	}

	MessageBox("Registry Settings removed Successfully", "Finished", MB_ICONQUESTION);
	
	return 0;
}

LRESULT ConfigDialog::OnBnClickedClosesettings(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
	EndDialog(0);
	return 0;
}

LRESULT ConfigDialog::OnBnClickedSetcontestButton(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
    const char *encryptText = "Encrypt File";
	Registry reg(HKEY_CLASSES_ROOT, "*\\shell\\Dreamer.File.Encrypt");
	reg.setValue("", REG_SZ, encryptText, (DWORD)strlen(encryptText ), false);

	reg.changeKey(HKEY_CLASSES_ROOT, "*\\shell\\Dreamer.File.Encrypt\\command");
	char *cmdLine = getCmdLine();
	reg.setValue("", REG_SZ, cmdLine, (DWORD)strlen(cmdLine), false);

	MessageBox("Content Menu updated Successfully", "Finished", MB_ICONQUESTION);

	return 0;
}

LRESULT ConfigDialog::OnBnClickedRemovecontestButton(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
	SHDeleteKey(HKEY_CLASSES_ROOT, "*\\shell\\Dreamer.File.Encrypt");

	MessageBox("File Encryption Content Menu Removed Successfully", "Finished", MB_ICONQUESTION);

	return 0;
}

char *ConfigDialog::getCmdLine()
{
	char filename[MAX_PATH];
	
	// get current executable filename.
	GetModuleFileName(0, filename, MAX_PATH);

	char *writeStr = new char[MAX_PATH];
	
	_snprintf(writeStr, MAX_PATH, "\"%s\" \"%%1\"\0", filename);

	return writeStr;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?