Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "AutoClicker.h"
- HWND hwndTarget = NULL;
- DWORD PMX = ( DWORD )GetProcAddress( LoadLibrary( _T("user32.dll") ), "PostMessageW" ) + 5;
- bool bUsingPMX = true;
- UINT nMessageDown = WM_LBUTTONDOWN;
- UINT nMessageUp = WM_LBUTTONUP;
- int nCurrent = 0;
- int nStop = 0;
- _declspec( naked ) BOOL WINAPI PostMessageX(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) {
- __asm {
- push ebp
- mov ebp,esp
- jmp [PMX]
- }
- }
- // used instead of BM_CLICK to allow background activation
- void ToggleCheck( HWND hwndDlg, int nIDDlgItem ) {
- HWND hwndButton = GetDlgItem( hwndDlg, nIDDlgItem );
- if( IsWindowEnabled( hwndButton ) ) {
- Button_SetCheck( hwndButton,
- Button_GetState( hwndButton ) == BST_CHECKED ? BST_UNCHECKED : BST_CHECKED );
- SendMessage( hwndDlg, WM_COMMAND, MAKEWPARAM( nIDDlgItem, NULL ), ( LPARAM )hwndButton );
- }
- }
- void RestoreDefaults( HWND hwndDlg ) {
- SetDlgItemInt( hwndDlg, IDC_INTERVAL, MINIMUM_INTERVAL, false );
- SetDlgItemInt( hwndDlg, IDC_STOPAFTER, DEFAULT_STOPAFTER, false );
- }
- void NewTarget( HWND hwndDlg ) {
- TCHAR lpToggleText[32] = {0};
- GetDlgItemText( hwndDlg, IDC_TOGGLE, lpToggleText, _countof( lpToggleText ) );
- // stop if AC is running
- if( _tcscmp( lpToggleText, _T("Stop (F12)") ) == 0 ) {
- ToggleCheck( hwndDlg, IDC_TOGGLE );
- }
- EnableWindow( GetDlgItem( hwndDlg, IDC_INTERVAL ), false );
- EnableWindow( GetDlgItem( hwndDlg, IDC_STOPAFTER ), false );
- EnableWindow( GetDlgItem( hwndDlg, IDC_TOGGLE ), false );
- EnableWindow( GetDlgItem( hwndDlg, IDC_LEFT ), false );
- EnableWindow( GetDlgItem( hwndDlg, IDC_RIGHT ), false );
- EnableWindow( GetDlgItem( hwndDlg, IDC_POSTMESSAGE ), false );
- EnableWindow( GetDlgItem( hwndDlg, IDC_MOUSEEVENT ), false );
- EnableWindow( GetDlgItem( hwndDlg, IDC_WINDOWNAME ), true );
- EnableWindow( GetDlgItem( hwndDlg, IDC_CLASSNAME ), true );
- EnableWindow( GetDlgItem( hwndDlg, IDC_ENUMERATE ), true );
- SetDlgItemText( hwndDlg, IDC_WINDOWNAME, _T("") );
- SetDlgItemText( hwndDlg, IDC_CLASSNAME, _T("") );
- SetDlgItemText( hwndDlg, IDC_SELECT, _T("Select") );
- hwndTarget = NULL;
- }
- INT_PTR CALLBACK DialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) {
- switch( uMsg ) {
- case WM_INITDIALOG: {
- int parts[] = {50, 0, -1};
- RECT rect = {0};
- SetWindowLong( hwndDlg, GWL_EXSTYLE, GetWindowLong( hwndDlg, GWL_EXSTYLE ) | WS_EX_LAYERED );
- SetLayeredWindowAttributes( hwndDlg, NULL, 230, LWA_ALPHA );
- SendDlgItemMessage( hwndDlg, IDC_STATUSBAR, SB_GETRECT, 0, ( LPARAM )&rect );
- parts[1] = ( rect.right - parts[0] ) / 2 + parts[0];
- SendDlgItemMessage( hwndDlg, IDC_STATUSBAR, SB_SETPARTS, 3, ( LPARAM )parts );
- SendDlgItemMessage( hwndDlg, IDC_STATUSBAR, SB_SETTEXT,
- MAKEWPARAM( 0, 0 ), ( LPARAM )_T("Idle") );
- RestoreDefaults( hwndDlg );
- SetTimer( hwndDlg, TOGGLE_HOTKEY_TIMER, 100, NULL );
- SetTimer( hwndDlg, SHOW_MOUSE_COORDS, 50, NULL );
- SetTimer( hwndDlg, GET_TARGET_TIMER, 100, NULL );
- ToggleCheck( hwndDlg, IDC_FOREGROUND );
- break;
- }
- case WM_TIMER: {
- switch( wParam ) {
- case TOGGLE_HOTKEY_TIMER:
- if( GetAsyncKeyState( VK_F12 ) != 0 ) {
- ToggleCheck( hwndDlg, IDC_TOGGLE );
- }
- break;
- case SHOW_MOUSE_COORDS: {
- POINT pt = {0};
- GetCursorPos( &pt );
- SetDlgItemInt( hwndDlg, IDC_XCOORD, pt.x, false );
- SetDlgItemInt( hwndDlg, IDC_YCOORD, pt.y, false );
- break;
- }
- case CLICKING_TIMER: {
- SetDlgItemInt( hwndDlg, IDC_CURRENT, nCurrent, false );
- if( nCurrent == -1 ) {
- break;
- } else if( nCurrent == nStop && nStop != 0 ) {
- nCurrent = -1;
- ToggleCheck( hwndDlg, IDC_TOGGLE );
- } else {
- POINT pt = {0};
- GetCursorPos( &pt );
- if( bUsingPMX ) {
- ScreenToClient( hwndTarget, &pt );
- PostMessageX( hwndTarget, nMessageDown, NULL, MAKELPARAM( pt.x, pt.y ) );
- PostMessageX( hwndTarget, nMessageUp, NULL, MAKELPARAM( pt.x, pt.y ) );
- } else {
- mouse_event( MOUSEEVENTF_ABSOLUTE |
- ( nMessageDown == WM_LBUTTONDOWN ? ( MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP ) : ( MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP ) ),
- pt.x, pt.y, NULL, NULL );
- }
- nCurrent++;
- }
- break;
- }
- case GET_TARGET_TIMER: {
- TCHAR lpSelect[32] = {0};
- GetDlgItemText( hwndDlg, IDC_SELECT, lpSelect, _countof( lpSelect ) );
- if( _tcscmp( lpSelect, _T("Select") ) != 0 ) {
- // AC is locked onto a window already
- // if locked window no longer exists
- if( !IsWindow( hwndTarget ) ) {
- NewTarget( hwndDlg );
- }
- } else {
- TCHAR lpClassName[64] = {0};
- TCHAR lpWindowName[64] = {0};
- BOOL bClassName, bWindowName;
- bClassName = GetDlgItemText( hwndDlg, IDC_CLASSNAME,
- lpClassName, _countof( lpClassName ) ) != 0;
- bWindowName = GetDlgItemText( hwndDlg, IDC_WINDOWNAME,
- lpWindowName, _countof( lpClassName ) ) != 0;
- if( !bWindowName && !bClassName ) {
- hwndTarget = NULL;
- } else {
- hwndTarget = FindWindow( bClassName ? lpClassName : NULL,
- bWindowName ? lpWindowName : NULL );
- }
- }
- if( hwndTarget == NULL ) {
- SetDlgItemText( hwndDlg, IDC_WINDOWHANDLE, _T("No Matching Window") );
- EnableWindow( GetDlgItem( hwndDlg, IDC_SELECT ), false );
- } else {
- TCHAR lpCurrentHandle[64] = {0};
- _stprintf_s( lpCurrentHandle, _countof( lpCurrentHandle ), _T("0x%08X"), hwndTarget );
- SetDlgItemText( hwndDlg, IDC_WINDOWHANDLE, lpCurrentHandle );
- EnableWindow( GetDlgItem( hwndDlg, IDC_SELECT ), true );
- }
- break;
- }
- default:
- return false;
- }
- break;
- }
- case WM_COMMAND: {
- switch( LOWORD( wParam ) ) {
- case IDC_TOGGLE: {
- bool bChecked = IsDlgButtonChecked( hwndDlg, IDC_TOGGLE ) == BST_CHECKED;
- Button_SetText( GetDlgItem( hwndDlg, IDC_TOGGLE ),
- !bChecked ? _T("Start (F12)") : _T("Stop (F12)") );
- SendDlgItemMessage( hwndDlg, IDC_STATUSBAR, SB_SETTEXT,
- 0, (LPARAM)( bChecked ? _T("Active") : _T("Idle") ) );
- EnableWindow( GetDlgItem( hwndDlg, IDC_INTERVAL ), !bChecked );
- EnableWindow( GetDlgItem( hwndDlg, IDC_STOPAFTER ), !bChecked );
- EnableWindow( GetDlgItem( hwndDlg, IDC_LEFT ), !bChecked );
- EnableWindow( GetDlgItem( hwndDlg, IDC_RIGHT ), !bChecked );
- EnableWindow( GetDlgItem( hwndDlg, IDC_POSTMESSAGE ), !bChecked );
- EnableWindow( GetDlgItem( hwndDlg, IDC_MOUSEEVENT ), !bChecked );
- if( bChecked ) {
- nCurrent = 0;
- nStop = GetDlgItemInt( hwndDlg, IDC_STOPAFTER, NULL, false );
- SetTimer( hwndDlg, CLICKING_TIMER,
- GetDlgItemInt( hwndDlg, IDC_INTERVAL, NULL, false ), NULL );
- } else {
- KillTimer( hwndDlg, CLICKING_TIMER );
- }
- break;
- }
- case IDC_FOREGROUND: {
- UINT iChecked = IsDlgButtonChecked( hwndDlg, IDC_FOREGROUND );
- SetWindowPos( hwndDlg, iChecked == BST_CHECKED ? HWND_TOPMOST : HWND_NOTOPMOST,
- 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW );
- break;
- }
- case IDC_INTERVAL: {
- switch( HIWORD( wParam ) ) {
- case EN_UPDATE: {
- BOOL bTranslated;
- BOOL bValidStop = SendDlgItemMessage( hwndDlg, IDC_STATUSBAR, SB_GETTEXTLENGTH, 2, 0 ) == 0;
- UINT nInterval = GetDlgItemInt( hwndDlg, IDC_INTERVAL, &bTranslated, false );
- HWND hwndToggle = GetDlgItem( hwndDlg, IDC_TOGGLE );
- if( !bTranslated || nInterval < MINIMUM_INTERVAL ) {
- SendDlgItemMessage( hwndDlg, IDC_STATUSBAR, SB_SETTEXT,
- 1, ( LPARAM )_T("Interval must be >= 10ms") );
- EnableWindow( hwndToggle, false );
- } else {
- SendDlgItemMessage( hwndDlg, IDC_STATUSBAR, SB_SETTEXT,
- 1, ( LPARAM )_T("") );
- if( IsWindowEnabled( ( HWND )lParam ) ) {
- EnableWindow( hwndToggle, true && bValidStop );
- }
- }
- break;
- }
- default:
- return false;
- }
- break;
- }
- case IDC_STOPAFTER: {
- switch( HIWORD( wParam ) ) {
- case EN_UPDATE: {
- BOOL bTranslated;
- BOOL bValidInterval = SendDlgItemMessage( hwndDlg, IDC_STATUSBAR, SB_GETTEXTLENGTH, 1, 0 ) == 0;
- UINT nStopAfter = GetDlgItemInt( hwndDlg, IDC_STOPAFTER, &bTranslated, false );
- HWND hwndToggle = GetDlgItem( hwndDlg, IDC_TOGGLE );
- if( !bTranslated ) {
- SendDlgItemMessage( hwndDlg, IDC_STATUSBAR, SB_SETTEXT,
- 2, ( LPARAM )_T("Stop after can not be blank") );
- EnableWindow( hwndToggle, false );
- } else {
- SendDlgItemMessage( hwndDlg, IDC_STATUSBAR, SB_SETTEXT,
- 2, ( LPARAM )_T("") );
- if( IsWindowEnabled( ( HWND )lParam ) ) {
- EnableWindow( hwndToggle, true && bValidInterval );
- }
- }
- break;
- }
- default:
- return false;
- }
- break;
- }
- case IDC_LEFT:
- nMessageDown = WM_LBUTTONDOWN;
- nMessageUp = WM_LBUTTONUP;
- break;
- case IDC_RIGHT:
- nMessageDown = WM_RBUTTONDOWN;
- nMessageUp = WM_RBUTTONUP;
- break;
- case IDC_SELECT: {
- TCHAR lpSelect[16] = {0};
- GetDlgItemText( hwndDlg, IDC_SELECT, lpSelect, _countof( lpSelect ) );
- if( _tcscmp( lpSelect, _T("Select") ) == 0 ) {
- SetDlgItemText( hwndDlg, IDC_SELECT, _T("New Target") );
- RestoreDefaults( hwndDlg );
- EnableWindow( GetDlgItem( hwndDlg, IDC_INTERVAL ), true );
- EnableWindow( GetDlgItem( hwndDlg, IDC_STOPAFTER ), true );
- EnableWindow( GetDlgItem( hwndDlg, IDC_TOGGLE ), true );
- EnableWindow( GetDlgItem( hwndDlg, IDC_LEFT ), true );
- EnableWindow( GetDlgItem( hwndDlg, IDC_RIGHT ), true );
- EnableWindow( GetDlgItem( hwndDlg, IDC_POSTMESSAGE ), true );
- EnableWindow( GetDlgItem( hwndDlg, IDC_MOUSEEVENT ), true );
- EnableWindow( GetDlgItem( hwndDlg, IDC_WINDOWNAME ), false );
- EnableWindow( GetDlgItem( hwndDlg, IDC_CLASSNAME ), false );
- EnableWindow( GetDlgItem( hwndDlg, IDC_ENUMERATE ), false );
- ToggleCheck( hwndDlg, IDC_LEFT );
- ToggleCheck( hwndDlg, IDC_POSTMESSAGE );
- } else {
- NewTarget( hwndDlg );
- }
- break;
- }
- case IDC_POSTMESSAGE:
- bUsingPMX = true;
- break;
- case IDC_MOUSEEVENT:
- bUsingPMX = false;
- break;
- case IDC_ENUMERATE: {
- hwndTarget = ( HWND )DialogBox( GetModuleHandle( NULL ),
- MAKEINTRESOURCE( IDD_ENUMERATION ), hwndDlg, WindowEnumProc );
- if( hwndTarget != NULL ) {
- EnableWindow( GetDlgItem( hwndDlg, IDC_SELECT ), true );
- ToggleCheck( hwndDlg, IDC_SELECT );
- EnableWindow( GetDlgItem( hwndDlg, IDC_ENUMERATE ), false );
- }
- break;
- }
- default:
- return false;
- }
- break;
- }
- case WM_CLOSE:
- KillTimer( hwndDlg, SHOW_MOUSE_COORDS );
- KillTimer( hwndDlg, TOGGLE_HOTKEY_TIMER );
- KillTimer( hwndDlg, GET_TARGET_TIMER );
- EndDialog( hwndDlg, 0 );
- break;
- default:
- return false;
- }
- return true;
- }
- int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow ) {
- INITCOMMONCONTROLSEX iccex = {0};
- iccex.dwSize = sizeof iccex;
- iccex.dwICC = ICC_WIN95_CLASSES | ICC_STANDARD_CLASSES | ICC_BAR_CLASSES;
- if( !InitCommonControlsEx( &iccex ) ) {
- MessageBox( NULL, _T("Error registering classes from comctl32.lib"), NULL, MB_OK );
- return -1;
- }
- hwndTarget = FindWindow( _T("Minesweeper"), _T("Minesweeper") );
- if( DialogBox( hInstance, MAKEINTRESOURCE( IDD_DIALOG ), NULL, DialogProc ) == -1 ) {
- MessageBox( NULL, _T("Problem initialising window"), NULL, MB_OK );
- return -1;
- }
- return ERROR_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement