📄 menulib.cpp
字号:
/*-------------------------------------------------
MenuLib.dll -- 《加密与解密》
(c)www.pediy.com (段钢) 2002/11
-------------------------------------------------*/
#include <windows.h>
#include "MenuLib.h"
#include "commdlg.h"
int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
{
return TRUE ;
}
EXPORT BOOL CALLBACK MenuOpen(HWND hWnd) // 打开文件功能
{
HANDLE hFile;
DWORD szTemp;
long FileSize;
static OPENFILENAME ofn ;
TCHAR *pBuffer = new TCHAR [0x10000]; // 申请64K内存
TCHAR szFileName[MAX_PATH ], szTitleName[MAX_PATH ] ;
static TCHAR szFilter[] =TEXT ("TXT Files (*.TXT)\0*.txt\0") \
TEXT ("All Files (*.*)\0*.*\0\0") ;
szFileName[0] = '\0';
ZeroMemory(&ofn, sizeof(ofn)); // 初始化OPENFILENAME结构
ofn.lStructSize = sizeof (OPENFILENAME) ;
ofn.hwndOwner = hWnd ;
ofn.lpstrFilter = szFilter ;
ofn.lpstrFile = szFileName ;
ofn.nMaxFile = MAX_PATH ;
ofn.lpstrFileTitle = szTitleName ;
ofn.nMaxFileTitle = MAX_PATH ;
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT ;
if(GetOpenFileName (&ofn))
{
HWND hwndEdit = GetDlgItem(hWnd, 1);
if (hwndEdit )
{
hFile = CreateFile( szFileName,
GENERIC_READ ,
NULL,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL ,
NULL);
if( hFile != INVALID_HANDLE_VALUE )
{
FileSize=GetFileSize(hFile,&szTemp); // 获取文件大小
if(FileSize<0x10000) // 如文件小于64K则读取
{
if(ReadFile(hFile, pBuffer, FileSize, &szTemp, NULL)!=NULL) // 读取数据
{
SetWindowText( hWnd,szFileName); // 在窗口标题栏显示打开的文件名
SetWindowText(hwndEdit,pBuffer); // 将内存中的数据显示在文本编辑框中
CloseHandle(hFile);
delete pBuffer; // 释放内存
return TRUE; // 退出函数
}
}
CloseHandle(hFile);
}
}
_asm NOP // 嵌入汇编语句,NOP指令,预留点空间以补丁该处代码
_asm NOP
_asm NOP
_asm NOP
_asm NOP
_asm NOP
MessageBoxA (NULL, NULL, NULL, NULL) ;
}
delete pBuffer;
return FALSE;
}
EXPORT BOOL CALLBACK MenuSave(HWND hWnd) // 保存功能
{
TCHAR szFileName[MAX_PATH ], szTitleName[MAX_PATH ] ;
HANDLE hFile;
TCHAR *pBuffer = new TCHAR [0x10000]; // 申请64内存
DWORD dwLen;
DWORD NumberOfBytesRW;
static OPENFILENAME ofn ;
static TCHAR szFilter[] =TEXT ("TXT Files (*.TXT)\0*.txt\0") \
TEXT ("All Files (*.*)\0*.*\0\0") ;
szFileName[0] = '\0';
ZeroMemory(&ofn, sizeof(ofn)); // 初始化OPENFILENAME结构
ofn.lStructSize = sizeof (OPENFILENAME) ;
ofn.hwndOwner = hWnd ;
ofn.lpstrFilter = szFilter ;
ofn.lpstrFile = szFileName ;
ofn.nMaxFile = MAX_PATH ;
ofn.lpstrFileTitle = szTitleName ;
ofn.nMaxFileTitle = MAX_PATH ;
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT ;
ofn.lpstrDefExt = TEXT("txt"); // 保存的默认扩展名
if(GetSaveFileName (&ofn))
{
HWND hwndEdit = GetDlgItem(hWnd, 1);
if (hwndEdit)
{
dwLen = GetWindowText(hwndEdit, pBuffer, 0xFFFF); // 注意这里是0xFFFF=0x10000-0x1
if (dwLen<0x10000 && dwLen>0 )
{
hFile = CreateFile( szFileName,
GENERIC_WRITE,
NULL,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,
NULL);
if( hFile != INVALID_HANDLE_VALUE )
{
if(WriteFile (hFile,pBuffer,dwLen,&NumberOfBytesRW, NULL))
{
SetWindowText( hWnd,szFileName);
CloseHandle(hFile);
delete pBuffer;
return TRUE;
}
CloseHandle(hFile);
}
}
}
MessageBoxA (NULL, TEXT ("可能是文件太大或文件无内容!"), TEXT ("保存文件失败!"), 0) ;
}
delete pBuffer;
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -