Hi again, i'm making a macro building pogram. I have got mouse movement down, but now i have no idea how to do mouse clicks or keyboard input. Please help! I'm also using dev-c++ 4.9.9.2.
Here's my complete code for the program.

POINT MousePoint;
int X = 0;
int Y = 0;
int MaxTime = 0;
int Counter = 0;
int NumOfResults = 0;
int Xmax, Ymax = 0;
int InputNumStr = 0;
char Action = 'a';
int TempInt, InputInt = 0;
char FileName[256] = "AAAAAAAAAAAAAAAAAAA";
char TempStr[256] = "AAAAAAAAAAAAAAAAAAA";
BOOL SetX = TRUE, SetY = FALSE;

#include <windows.h>
#include <iostream>
#include <fstream>
#include <cstring>
#include "Macro.h"

using namespace std;
int main(int argc, char* argv[])
{
cout << "MacroBuilder V. 1.0" << endl;
cout << "\nEnter the name of the macro: ";
cin >> FileName;
strcat(FileName, ".txt");

std::ofstream SaveFile(FileName);
SaveFile.close();
cout << "Type 'r' to record, 'q' to quit, 't' to test, or 'p' to play";
cin >> Action;

while (Action != 'q')
{

switch(Action)
{
case 'r':
MaxTime = 0;
Counter = 0;
NumOfResults = 0;
cout << "Enter the max time of the macro in seconds: ";
cin >> MaxTime;
MaxTime = MaxTime * 10;
cout << "\nPress escape to stop recording\n";
system("pause");
system("cls");
while (MaxTime > Counter)
{
GetCursorPos(&MousePoint);
if (MousePoint.x < 10)
{
std::ofstream SaveFile(FileName, ios::app);
SaveFile << "000" << MousePoint.x;
SaveFile.close();
cout << "\nX: 000" << MousePoint.x;
}
else if (MousePoint.x < 100)
{
std::ofstream SaveFile(FileName, ios::app);
SaveFile << "00" << MousePoint.x;
SaveFile.close();
cout << "\nX: 00" << MousePoint.x;
}
else if (MousePoint.x < 1000)
{
std::ofstream SaveFile(FileName, ios::app);
SaveFile << "0" << MousePoint.x;
SaveFile.close();
cout << "\nX: 0" << MousePoint.x;
}
else if (MousePoint.x > 1000)
{
std::ofstream SaveFile(FileName, ios::app);
SaveFile << "" << MousePoint.x;
SaveFile.close();
cout << "\nX: " << MousePoint.x;
}

if (MousePoint.y < 10)
{
std::ofstream SaveFile(FileName, ios::app);
SaveFile << "000" << MousePoint.y;
SaveFile.close();
cout << "   Y: 000" << MousePoint.y;
}
else if (MousePoint.y < 100)
{
std::ofstream SaveFile(FileName, ios::app);
SaveFile << "00" << MousePoint.y;
SaveFile.close();
cout << "   Y: 00" << MousePoint.y;
}
else if (MousePoint.y < 1000)
{
std::ofstream SaveFile(FileName, ios::app);
SaveFile << "0" << MousePoint.y;
SaveFile.close();
cout << "   Y: 0" << MousePoint.y;
}

NumOfResults++;
Sleep(10);
Counter++;
}
cout << "\n\nDisplayed " << NumOfResults << " in " << (MaxTime / 10) << " seconds, "
<< "which is " << (NumOfResults) / (MaxTime / 10) << " results per second";
break;

case 't':
X = Y = 0;
cout << "Enter the maximum X value: ";
cin >> Xmax;
cout << "\nEnter the maximum Y value: ";
cin >> Ymax;
system("pause");
system("cls");

// Move the mouse
while (X < Xmax || Y < Ymax)
{
if (X < Xmax)
{
X++;
}

if (Y < Ymax)
{
Y++;
}

SetCursorPos(X,Y);

// Get the mouse point
GetCursorPos(&MousePoint);
cout << MousePoint.x << ", ";
cout << MousePoint.y << "  ";
Sleep(10);
}
break;

case 'q':
return 0;
break;

case 'p':
SaveFile.close();
std::ifstream ReadFile(FileName);
TempInt = InputInt = 0;
X = Y = 0;
char ch;
/*
cout << "\nRaw data:\n";
while (!ReadFile.eof())
{
ReadFile.get(ch[2]);
cout << ch[2];
}
ReadFile.close();
ReadFile.open(FileName, ios::in);*/

	while(!ReadFile.eof())
	{   
	    Sleep(10);
        ReadFile.get(ch);
		TempInt++;
		switch (TempInt)
		{
		
		case 1:
		InputInt = atoi(&ch) * 1000;
		break;
		
		case 2:
		InputInt += atoi(&ch) * 100;
		break;
		
		case 3:
		InputInt += atoi(&ch) * 10;
		break;
		
		case 4:
		InputInt += atoi(&ch);
		
		TempInt = 0;
		if (SetX)
		{
		SetX = FALSE;
		SetY = TRUE;
		X = InputInt;
		cout << X << endl;
		}
		else if (SetY)
		{
		Y = InputInt;
		SetX = TRUE;
		SetY = FALSE;
		InputInt = 0;
		cout << Y << endl;
		SetCursorPos(X, Y);
		}
	    }
	    }
	ReadFile.close();
} // End switch

/*for (TempInt = 0; TempInt < 256; TempInt++)
{
FileName[TempInt] = NULL;
}
*/
cout << "\nType 'r' to record, 'q' to quit, 't' to test, or 'p' to play";
cin >> Action;
} // End While
return 0;
}

Oh, and if you want to play a macro back, you have to do it right after you record it. I'm going to fix that.

Recommended Answers

All 3 Replies

Its nice that you used code tags but you really should have formatted that code better before posting it. No one but a big masochist is going to read through all that stuff.

Voila:

POINT MousePoint;
int X = 0;
int Y = 0;
int MaxTime = 0;
int Counter = 0;
int NumOfResults = 0;
int Xmax, Ymax = 0;
int InputNumStr = 0;
char Action = 'a';
int TempInt, InputInt = 0;
char FileName[256] = "AAAAAAAAAAAAAAAAAAA";
char TempStr[256] = "AAAAAAAAAAAAAAAAAAA";
BOOL SetX = TRUE, SetY = FALSE;

#include <windows.h>
#include <iostream>
#include <fstream>
#include <cstring>
#include "Macro.h"

using namespace std;
int main(int argc, char* argv[])
{
   cout << "MacroBuilder V. 1.0" << endl;
   cout << "\nEnter the name of the macro: ";
   cin >> FileName;
   strcat(FileName, ".txt");

   std::ofstream SaveFile(FileName);
   SaveFile.close();
   cout << "Type 'r' to record, 'q' to quit, 't' to test, or 'p' to play";
   cin >> Action;

   while ( Action != 'q' )
   {

      switch ( Action )
      {
      case 'r':
         MaxTime = 0;
         Counter = 0;
         NumOfResults = 0;
         cout << "Enter the max time of the macro in seconds: ";
         cin >> MaxTime;
         MaxTime = MaxTime * 10;
         cout << "\nPress escape to stop recording\n";
         system("pause");
         system("cls");
         while ( MaxTime > Counter )
         {
            GetCursorPos(&MousePoint);
            if ( MousePoint.x < 10 )
            {
               std::ofstream SaveFile(FileName, ios::app);
               SaveFile << "000" << MousePoint.x;
               SaveFile.close();
               cout << "\nX: 000" << MousePoint.x;
            }
            else if ( MousePoint.x < 100 )
            {
               std::ofstream SaveFile(FileName, ios::app);
               SaveFile << "00" << MousePoint.x;
               SaveFile.close();
               cout << "\nX: 00" << MousePoint.x;
            }
            else if ( MousePoint.x < 1000 )
            {
               std::ofstream SaveFile(FileName, ios::app);
               SaveFile << "0" << MousePoint.x;
               SaveFile.close();
               cout << "\nX: 0" << MousePoint.x;
            }
            else if ( MousePoint.x > 1000 )
            {
               std::ofstream SaveFile(FileName, ios::app);
               SaveFile << "" << MousePoint.x;
               SaveFile.close();
               cout << "\nX: " << MousePoint.x;
            }

            if ( MousePoint.y < 10 )
            {
               std::ofstream SaveFile(FileName, ios::app);
               SaveFile << "000" << MousePoint.y;
               SaveFile.close();
               cout << " Y: 000" << MousePoint.y;
            }
            else if ( MousePoint.y < 100 )
            {
               std::ofstream SaveFile(FileName, ios::app);
               SaveFile << "00" << MousePoint.y;
               SaveFile.close();
               cout << " Y: 00" << MousePoint.y;
            }
            else if ( MousePoint.y < 1000 )
            {
               std::ofstream SaveFile(FileName, ios::app);
               SaveFile << "0" << MousePoint.y;
               SaveFile.close();
               cout << " Y: 0" << MousePoint.y;
            }

            NumOfResults++;
            Sleep(10);
            Counter++;
         }
         cout << "\n\nDisplayed " << NumOfResults << " in " << (MaxTime / 10) << " seconds, "
         << "which is " << (NumOfResults) / (MaxTime / 10) << " results per second";
         break;

      case 't':
         X = Y = 0;
         cout << "Enter the maximum X value: ";
         cin >> Xmax;
         cout << "\nEnter the maximum Y value: ";
         cin >> Ymax;
         system("pause");
         system("cls");

// Move the mouse
         while ( X < Xmax || Y < Ymax )
         {
            if ( X < Xmax )
            {
               X++;
            }

            if ( Y < Ymax )
            {
               Y++;
            }

            SetCursorPos(X,Y);

// Get the mouse point
            GetCursorPos(&MousePoint);
            cout << MousePoint.x << ", ";
            cout << MousePoint.y << " ";
            Sleep(10);
         }
         break;

      case 'q':
         return 0;
         break;

      case 'p':
         SaveFile.close();
         std::ifstream ReadFile(FileName);
         TempInt = InputInt = 0;
         X = Y = 0;
         char ch;
/*
cout << "\nRaw data:\n";
while (!ReadFile.eof())
{
ReadFile.get(ch[2]);
cout << ch[2];
}
ReadFile.close();
ReadFile.open(FileName, ios::in);*/

         while ( !ReadFile.eof() )
         {
            Sleep(10);
            ReadFile.get(ch);
            TempInt++;
            switch ( TempInt )
            {
            
            case 1:
               InputInt = atoi(&ch) * 1000;
               break;

            case 2:
               InputInt += atoi(&ch) * 100;
               break;

            case 3:
               InputInt += atoi(&ch) * 10;
               break;

            case 4:
               InputInt += atoi(&ch);

               TempInt = 0;
               if ( SetX )
               {
                  SetX = FALSE;
                  SetY = TRUE;
                  X = InputInt;
                  cout << X << endl;
               }
               else if ( SetY )
               {
                  Y = InputInt;
                  SetX = TRUE;
                  SetY = FALSE;
                  InputInt = 0;
                  cout << Y << endl;
                  SetCursorPos(X, Y);
               }
            }
         }
         ReadFile.close();
      } // End switch

/*for (TempInt = 0; TempInt < 256; TempInt++)
{
FileName[TempInt] = NULL;
}
*/
      cout << "\nType 'r' to record, 'q' to quit, 't' to test, or 'p' to play";
      cin >> Action;
   } // End While
   return 0;
}

Behold the power of copy, paste, a decent code editor, copy, paste, and post.

commented: Ancient Dragon is too slow to understand what 'Astyle' is :) +13
Member Avatar for iamthwee

>but now i have no idea how to do mouse clicks or keyboard input.
Go the msdn website, it should be well documented.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.