⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setyou.cpp

📁 关于win2000核心编程的文章
💻 CPP
字号:
/***************************************************************|
                        Author:   JIURL
						Email:    jiurl@mail.china.com
						Homepage: http://jiurl.yeah.net
/***************************************************************/

#include <windows.h>
#include <stdio.h>
#include "resource.h"

INT_PTR CALLBACK DialogProc(HWND,UINT,WPARAM,LPARAM);
char SetStr[256];

#define cbMatchStr 55//strlen("I'm JIURL,My HomePage is http://jiurl.yeah.net. Salute!")

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	HANDLE hFile;
	char Err[256];
	char MatchStr[cbMatchStr+1]="I'm JIURL,My HomePage is http://jiurl.yeah.net. Salute!";
	//字符串长度55,字符串的结束符1,共56字节

	hFile = CreateFile("SettingInMe.exe",GENERIC_WRITE|GENERIC_READ,0,
		NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
	//SettingInMe.exe 和 本程序要在同一目录下
	if(hFile==INVALID_HANDLE_VALUE)
	{
		sprintf(Err,"CreatFile Error: 0x%08x !",GetLastError());
		MessageBox(NULL,Err,"CoNgRaTuLaTiOn!",NULL);
		return 0;
	}

	char Data;
	DWORD nRead;
	int retval;
	int i=0;

	//这种效率不好,不过比较直观,
	//如果一次读入1024字节,然后在内存中进行比较...
	while(1)
	{
		retval = ReadFile(hFile,&Data,1,&nRead,NULL);
		if(retval==0||nRead==0)
		{
			MessageBox(NULL,"Not Found Place to Set","CoNgRaTuLaTiOn!",NULL);
			break;
		}

		if(Data==MatchStr[i])i++;
		else i=0;

		if(i==cbMatchStr)
		{
			DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, (DLGPROC)DialogProc);

			retval = WriteFile(hFile,SetStr,strlen(SetStr),
				&nRead,NULL);
			if(retval!=0)
				MessageBox(NULL,"Set OK!","Yes!",NULL);
			else
			{
				sprintf(Err,"WriteFile Error: 0x%08x !",GetLastError());
				MessageBox(NULL,Err,"CoNgRaTuLaTiOn!",NULL);
			}
			break;
		}
	}

	MessageBox(NULL,"OVER","OVER",NULL);

	CloseHandle(hFile);
	return 0;
}

INT_PTR CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,
							WPARAM wParam,LPARAM lParam)
{	
	switch(uMsg)
	{
	case WM_COMMAND:
		switch(wParam)
		{
		case IDOK:
			GetDlgItemText(hwndDlg,IDC_IN,SetStr,sizeof(SetStr));
			//SetStr[]的长度不要超过256。
			//在对话框中输入的串要是超过256,
			//GetDlgItemText() 会截取范围内部分。
			EndDialog(hwndDlg,TRUE);
			break;
		case IDCANCEL:
			PostQuitMessage(0);
			break;
		}
		break;
	}
	return 0;
}

⌨️ 快捷键说明

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