给大家赠送一个我最近写的鼠标连点器的源代码!
欢迎大家关注我的微信号
源代码下载地址
https://download.csdn.net/download/blackangelboy/10801071
程序界面如下图:
贴出部分核心源代码大家参照一下,这个小软件我开发了三天 ^_^ 历时15个小时开发完毕 ^_^ 大家喜欢就拿去参考参考,代码不妥之处请别见怪,部分源代码从网上搜集整合。因为是仓促开发,所以采用了暴力编程方式!超暴力编程呵呵^_^
LdianQIDlg.cpp源文件
// LdianQIDlg.cpp : implementation file
//
#include "stdafx.h"
#include "LdianQI.h"
#include "LdianQIDlg.h"
#include "DlgProxy.h"
#include "String.h"
#include <stdio.h>
//调用生成桌面快捷方式需要的头文件函数
#include <windows.h>
#include <shlobj.h>
#pragma comment(lib, "shell32.lib")
//调用WAV声音需要的头文件函数
#include "Mmsystem.h"
#pragma comment(lib,"winmm.lib")
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern char StrKey;
extern char StrKeyStop;
extern CString Tmp;
extern CString TmpStop;
extern CString MouseOK;
extern CString MouseOKCombo;
extern CString MouseOKComboOK;
extern CString TimeGoodOK;
extern CString tempexe;
extern int NumTime;
extern CString URLFile;
extern int L_miao;
extern CString MouseCkool;
/
// CLdianQIDlg dialog
IMPLEMENT_DYNAMIC(CLdianQIDlg, CDialog);
CLdianQIDlg::CLdianQIDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLdianQIDlg::IDD, pParent)
{
//{
{AFX_DATA_INIT(CLdianQIDlg)
m_TXT = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_pAutoProxy = NULL;
}
CLdianQIDlg::~CLdianQIDlg()
{
// If there is an automation proxy for this dialog, set
// its back pointer to this dialog to NULL, so it knows
// the dialog has been deleted.
if (m_pAutoProxy != NULL)
m_pAutoProxy->m_pDialog = NULL;
}
void CLdianQIDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{
{AFX_DATA_MAP(CLdianQIDlg)
DDX_Control(pDX, IDC_EDITTIMENUM, m_Tims);
DDX_Control(pDX, IDC_EDITTIMENUMTXT, m_TimeX);
DDX_Control(pDX, IDOK2, m_menuB);
DDX_Control(pDX, IDOK, m_menuA);
DDX_Control(pDX, IDC_SLIDER1, m_Slider);
DDX_Text(pDX, IDC_STATICX1, m_TXT);
DDX_Control(pDX, IDC_EXPLORER1, m_URLplay);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLdianQIDlg, CDialog)
//{
{AFX_MSG_MAP(CLdianQIDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_CLOSE()
ON_WM_TIMER()
ON_WM_NCHITTEST()
ON_WM_HSCROLL()
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER1, OnCustomdrawSlider1)
ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDOK2, OnOk2)
ON_CBN_EDITUPDATE(IDC_COMBO1, OnEditupdateCombo1)
ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
ON_CBN_EDITUPDATE(IDC_COMBO3, OnEditupdateCombo3)
ON_CBN_SELCHANGE(IDC_COMBO3, OnSelchangeCombo3)
ON_CBN_EDITUPDATE(IDC_COMBO2, OnEditupdateCombo2)
ON_CBN_SELCHANGE(IDC_COMBO2, OnSelchangeCombo2)
ON_CBN_EDITUPDATE(IDC_COMBO4, OnEditupdateCombo4)
ON_CBN_SELCHANGE(IDC_COMBO4, OnSelchangeCombo4)
ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
ON_BN_CLICKED(IDC_RADIO4, OnRadio4)
ON_BN_CLICKED(IDC_RADIO5, OnRadio5)
ON_BN_CLICKED(IDC_RADIO6, OnRadio6)
ON_BN_CLICKED(IDC_BUTTON2, OnButtonQZ)
ON_BN_CLICKED(IDC_BUTTON3, OnButtonQZNO)
ON_BN_CLICKED(IDC_BUTTON4, OnButtonMINI)
ON_BN_CLICKED(IDC_BUTTON5, OnButtonJM)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/
// CLdianQIDlg message handlers
DWORD __stdcall ThreadProcKey(LPVOID lpParameter)
{
CLdianQIDlg* Key = (CLdianQIDlg*)lpParameter;
while(1)
{
Sleep(50);
Key->GetDlgItem(IDC_COMBO1)->GetWindowText(Tmp);
CString TmpX;
Key->GetDlgItem(IDC_COMBO2)->GetWindowText(TmpX);
if(Tmp!="")
{
Key->RegKeyCe();//执行热键0-9 A-Z检测
if(TmpX=="CTRL" || TmpX=="ctrl" )
{
RegisterHotKey(NULL,0x00000003,MOD_CONTROL,StrKey);
//AfxMessageBox("热键为CTRL");
}
if(TmpX=="ALT" || TmpX=="alt" )
{
RegisterHotKey(NULL,0x00000003,MOD_ALT,StrKey);
//AfxMessageBox("热键为ALT");
}
if(TmpX=="SHIFT" || TmpX=="shift")
{
RegisterHotKey(NULL,0x00000003,MOD_SHIFT,StrKey);
//AfxMessageBox("热键为SHIFT");
}
//RegisterHotKey(NULL,0x00090003,MOD_CONTROL,TEXT(StrKey));
//注册热键 MOD_ALT ;MOD_CONTROL ;MOD_SHIFT ;MOD_WIN
//RegisterHotKey(GetSafeHwnd(), HOTKEYID, MOD_CONTROL, TEXT('L'))
MSG msg;
while(GetMessage(&msg,NULL,0,0))//从消息队伍获取消息
{
if(msg.message==WM_HOTKEY)//热键消息
{
//AfxMessageBox("热键"+TmpX+" + "+Tmp+"已设置成功!开启执行");
MouseOK="开始鼠标点击";
MouseCkool="连续点击鼠标左键";
goto lbit;
}
}
lbit:
;
UnregisterHotKey(NULL,0x00000003);//卸载掉注册的热键
}
}
return 0;
}
DWORD __stdcall ThreadProcKeyStop(LPVOID lpParameter)
{
CLdianQIDlg* KeyStop = (CLdianQIDlg*)lpParameter;
while(1)
{
Sleep(50);
KeyStop->GetDlgItem(IDC_COMBO3)->GetWindowText(TmpStop);
CString TmpXStop;
KeyStop->GetDlgItem(IDC_COMBO4)->GetWindowText(TmpXStop);
if(Tmp!="")
{
KeyStop->RegKeyCeStop();//执行热键0-9 A-Z检测
if(TmpXStop=="CTRL" || TmpXStop=="ctrl" )
{
RegisterHotKey(NULL,0x00000003,MOD_CONTROL,StrKeyStop);
//AfxMessageBox("热键为CTRL");
}
if(TmpXStop=="ALT" || TmpXStop=="alt" )
{
RegisterHotKey(NULL,0x00000003,MOD_ALT,StrKeyStop);
//AfxMessageBox("热键为ALT");
}
if(TmpXStop=="SHIFT" || TmpXStop=="shift")
{
RegisterHotKey(NULL,0x00000003,MOD_SHIFT,StrKeyStop);
//AfxMessageBox("热键为SHIFT");
}
//RegisterHotKey(NULL,0x00090003,MOD_CONTROL,TEXT(StrKey));
//注册热键 MOD_ALT ;MOD_CONTROL ;MOD_SHIFT ;MOD_WIN
//RegisterHotKey(GetSafeHwnd(), HOTKEYID, MOD_CONTROL, TEXT('L'))
MSG msg;
while(GetMessage(&msg,NULL,0,0))//从消息队伍获取消息
{
if(msg.message==WM_HOTKEY)//热键消息
{
KeyStop->KeyOkStop();
//AfxMessageBox("热键"+TmpXStop+" + "+TmpStop+"已设置成功!关闭执行");
goto lbitStop;
}
}
lbitStop:
;
UnregisterHotKey(NULL,0x00000004);//卸载掉注册的热键
}
}
return 0;
}
DWORD __stdcall ThreadProcMuseOK(LPVOID lpParameter)
{
CLdianQIDlg* MuseOK = (CLdianQIDlg*)lpParameter;
while(1)
{
if(MouseOK=="开始鼠标点击")
{
MuseOK->KeyOk();
}
if(MouseOKCombo=="启用鼠标快捷键")
{
MuseOK->KeyMouse();
}
else if(MouseOKCombo=="暂停鼠标热键" || MouseOKComboOK=="暂停鼠标热键")
{
Sleep(10);
if(KEY_DOWN(MOUSE_MOVED))
{
//MessageBox("您点击了鼠标左键!触发鼠标自动操作!");
MouseOKComboOK="开启鼠标热键动作";
MouseOKCombo="启用鼠标快捷键";
}
}
}
return 0;
}
DWORD __stdcall ThreadProcTime(LPVOID lpParameter)
{
CLdianQIDlg* TimeDig = (CLdianQIDlg*)lpParameter;
while(1)
{
TimeDig->WindowsNumTime();//执行计时功能函数
}
return 0;
}
//以下代码为生成桌面快捷方式-----------------------------------------------------------------------
BOOL CLdianQIDlg::GetDesktopPath(char *pszDesktopPath)
{
LPITEMIDLIST ppidl = NULL;
if (SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &ppidl) == S_OK)
{
BOOL flag = SHGetPathFromIDList(ppidl, pszDesktopPath);
CoTaskMemFree(ppidl);
return flag;
}
return FALSE;
}
BOOL CLdianQIDlg::GetIEQuickLaunchPath(char *pszIEQueickLaunchPath)
{
LPITEMIDLIST ppidl;
if (SHGetSpecialFolderLocation(NULL, CSIDL_APPDATA, &ppidl) == S_OK)
{
BOOL flag = SHGetPathFromIDList(ppidl, pszIEQueickLaunchPath);
strcat(pszIEQueickLaunchPath, "\\Microsoft\\Internet Explorer\\Quick Launch");
CoTaskMemFree(ppidl);
return flag;
}
return FALSE;
}
BOOL CLdianQIDlg::GetProgramsPath(char *pszProgramsPath)
{
LPITEMIDLIST ppidl;
if (SHGetSpecialFolderLocation(NULL, CSIDL_PROGRAMS, &ppidl) == S_OK)
{
BOOL flag = SHGetPathFromIDList(ppidl, pszProgramsPath);
CoTaskMemFree(ppidl);
return flag;
}
return FALSE;
}
/*
函数功能:对指定文件在指定的目录下创建其快捷方式
函数参数:
lpszFileName 指定文件,为NULL表示当前进程的EXE文件。
lpszLnkFileDir 指定目录,不能为NULL。
lpszLnkFileName 快捷方式名称,为NULL表示EXE文件名。
wHotkey 为0表示不设置快捷键
pszDescription 备注
iShowCmd 运行方式,默认为常规窗口
*/
BOOL CreateFileShortcut(LPCSTR lpszFileName, LPCSTR lpszLnkFileDir, LPCSTR lpszLnkFileName,
LPCSTR lpszWorkDir, WORD wHotkey, LPCTSTR lpszDescription, int iShowCmd = SW_SHOWNORMAL)
{
if (lpszLnkFileDir == NULL)
return FALSE;
HRESULT hr;
IShellLink *pLink; //IShellLink对象指针
IPersistFile *ppf; //IPersisFil对象指针
//创建IShellLink对象
hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink,
(void**)&pLink);
if (FAILED(hr))
return FALSE;
//从IShellLink对象中获取IPersistFile接口
hr = pLink->QueryInterface(IID_IPersistFile, (void**)&ppf);
if (FAILED(hr))
{
pLink->Release();
return FALSE;
}
//目标
if (lpszFileName == NULL)
pLink->SetPath(_pgmptr);
else
pLink->SetPath(lpszFileName);
//工作目录
if (lpszWorkDir != NULL)
pLink->SetPath(lpszWorkDir);
//快捷键
if (wHotkey != 0)
pLink->SetHotkey(wHotkey);
//备注
if (lpszDescription != NULL)
pLink->SetDescription(lpszDescription);
//显示方式
pLink->SetShowCmd(iShowCmd);
//快捷方式的路径 + 名称
char szBuffer[MAX_PATH];
if (lpszLnkFileName != NULL) //指定了快捷方式的名称
sprintf(szBuffer, "%s\\%s", lpszLnkFileDir, lpszLnkFileName);
else
{
//没有指定名称,就从取指定文件的文件名作为快捷方式名称。
char *pstr;
if (lpszFileName != NULL)
pstr = strrchr(lpszFileName, '\\');
else
pstr = strrchr(_pgmptr, '\\');
if (pstr == NULL)
{
ppf->Release();
pLink->Release();
return FALSE;
}
//注意后缀名要从.exe改为.lnk
sprintf(szBuffer, "%s\\%s", lpszLnkFileDir, pstr);
int nLen = strlen(szBuffer);
szBuffer[nLen - 3] = 'l';
szBuffer[nLen - 2] = 'n';
szBuffer[nLen - 1] = 'k';
}
//保存快捷方式到指定目录下
WCHAR wsz[MAX_PATH]; //定义Unicode字符串
MultiByteToWideChar(CP_ACP, 0, szBuffer, -1, wsz, MAX_PATH);
hr = ppf->Save(wsz, TRUE);
ppf->Release();
pLink->Release();
return SUCCEEDED(hr);
}
//以上代码为生成桌面快捷方式-----------------------------------------------------------------------
BOOL CLdianQIDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
// TODO: Add extra initialization here
CenterWindow();//程序启动时窗体处于屏幕的中心位置
{//检测是否开启了打开了相同程序
HWND wnd;
wnd=::FindWindow(NULL,"鼠标连点器——海马软件QQ:9254793");
if(wnd!=NULL)
{
//::ShowWindow(wnd,SW_HIDE);//将窗口隐藏
MessageBox("为了不至于您的计算机鼠标精神错乱!^_^\r\n\r\n所以每次只允许开启一个鼠标连点器!","程序开启出错提示",MB_OK|MB_ICONINFORMATION);
//CDialog::OnClose();
KAI="程序已经开启";
SetTimer(2,10,NULL);
//return TRUE; // return TRUE unless you set the focus to a control
}
else
{
SetWindowText("鼠标连点器——海马软件QQ:9254793"); //设置窗体标题
}
}
对文件地址的"\"替换成"\\"
for(int i=0;i<tempexe.GetLength();i++)
{
int index = tempexe.Find("\\");
if(index == -1)
continue;
else
{
if(i==1)
{
tempexe.Replace("\\","\\\\\\\\"); //前面的参数是要替换的字符串,后面的参数是你指定的新字符串
}
if(i>1)
{
goto lid;
}
//MessageBox(tempexe,"程序地址2",MB_OK|MB_ICONINFORMATION);
GetDlgItem(IDC_STATICFILE)->SetWindowText(tempexe);
}
}
lid:
;
CString StrFileOk;
GetDlgItem(IDC_STATICFILE)->GetWindowText(StrFileOk);
//MessageBox(StrFileOk,"程序地址3",MB_OK|MB_ICONINFORMATION);
char *filepath;
filepath=(LPSTR)(LPCTSTR)StrFileOk;//强制转换
//方法一 获取程序的大小
HANDLE handle = CreateFile(filepath, FILE_READ_EA, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
if (handle != INVALID_HANDLE_VALUE)
{
int size = GetFileSize(handle,NULL);
CString TXNUM;
TXNUM.Format(_T("%d"),size);
//MessageBox("程序大小为:"+TXNUM+"字节","程序大小",MB_OK|MB_ICONINFORMATION);
CloseHandle(handle);
int ExeNum=atoi(TXNUM);
if(ExeNum==2667008 || ExeNum==2670592)
{
//MessageBox("程序原始大小为 2667008 字节\r\n经过软件自身安全检测!\r\n此程序未被其他软件修改!\r\n可以放心使用^_^!","程序安全检测",MB_OK|MB_ICONINFORMATION);
//使用已经添加的快捷方式生成函数添加程序的桌面快捷方式
{
char szPath[MAX_PATH];
CoInitialize(NULL);
GetDesktopPath(szPath);
//if(CreateFileShortcut(NULL, szPath, NULL, NULL, MAKEWORD(VK_F12, HOTKEYF_CONTROL), "海马软件荣誉出品:QQ:9254793"));
if(CreateFileShortcut(NULL, szPath, "海马鼠标连点器.lnk", NULL, MAKEWORD(VK_F12, HOTKEYF_CONTROL), "海马软件荣誉出品:QQ:9254793 \r\n海马软件唯一官方微信: