I am trying to compile my originally visual c++ project on Xcode so I can run it on macOSX and as I can't use windows.h in Xcode/mac I'm looking for alternatives.
Could you give me some ways to replace these subroutines:
UINT SendString(string str)
{
UINT count = 0;
for (size_t i = 0; i < str.size();i++)
{
INPUT input[2];
::ZeroMemory(input, sizeof(input));
input[0].type = input[1].type = INPUT_KEYBOARD;
input[0].ki.wVk = input[1].ki.wVk = VkKeyScan(str[i]);
input[1].ki.dwFlags = KEYEVENTF_KEYUP;
count += SendInput(2, input, sizeof(INPUT));
}
return count;
}
void SendKey(char key){
keybd_event(VkKeyScan(key),0,0,0);
keybd_event(VkKeyScan(key),0,2,0);
}
void MouseMove(int x, int y )
{
double fScreenWidth = ::GetSystemMetrics( SM_CXSCREEN )-1;
double fScreenHeight = ::GetSystemMetrics( SM_CYSCREEN )-1;
double fx = x*(65535.0f/fScreenWidth);
double fy = y*(65535.0f/fScreenHeight);
INPUT Input={0};
Input.type = INPUT_MOUSE;
Input.mi.dwFlags = MOUSEEVENTF_MOVE|MOUSEEVENTF_ABSOLUTE;
Input.mi.dx = fx;
Input.mi.dy = fy;
::SendInput(1,&Input,sizeof(INPUT));
}
void MouseClick(string button, string mode){
INPUT Input={0};
Input.type = INPUT_MOUSE;
if(mode == "down"){
if(button == "left"){Input.mi.dwFlags=MOUSEEVENTF_LEFTDOWN;}else if(button == "right"){Input.mi.dwFlags=MOUSEEVENTF_RIGHTDOWN;}
::SendInput(1,&Input,sizeof(INPUT));
}else if(mode == "up"){
::ZeroMemory(&Input,sizeof(INPUT));
if(button=="left"){Input.mi.dwFlags=MOUSEEVENTF_LEFTUP;}else if(button=="right"){Input.mi.dwFlags=MOUSEEVENTF_RIGHTUP;}
::SendInput(1,&Input,sizeof(INPUT));
}else if(mode == "both"){
if(button == "left"){Input.mi.dwFlags=MOUSEEVENTF_LEFTDOWN;}else if(button == "right"){Input.mi.dwFlags=MOUSEEVENTF_RIGHTDOWN;}
::SendInput(1,&Input,sizeof(INPUT));
::ZeroMemory(&Input,sizeof(INPUT));
if(button=="left"){Input.mi.dwFlags=MOUSEEVENTF_LEFTUP;}else if(button=="right"){Input.mi.dwFlags=MOUSEEVENTF_RIGHTUP;}
::SendInput(1,&Input,sizeof(INPUT));
}
}
ShellExecute(NULL, L"open", L"http://google.com", NULL, NULL, SW_SHOWNORMAL);