// masterX plugin / add on Input Handler #include "inputhandle.h" // deconstructor inputhandler::~inputhandler() { for(int z = 0; z < MAX_MXPROG; z++) { if(prog[z].on == true) { SendMessage(prog[z].myhwnd,WM_CLOSE,0,0); } } } // add a program to the handler void inputhandler::addprog(char* cl, char* title) { int off; off = getoffx(); HWND win; win = FindWindow(cl,title); if(win) { prog[off].myhwnd = win; prog[off].on = true; strcpy(prog[off].mytitle,title); strcpy(prog[off].myclass,cl); ShowWindow(win,SW_HIDE); } } // kill dead programs void inputhandler::killdead() { // do a serach through are programs, and kill dead threads for(int z = 0; z < MAX_MXPROG; z++) { if(prog[z].on == true) { HWND chk; chk = FindWindow(prog[z].myclass,prog[z].mytitle); if(chk){}else { prog[z].on = false; prog[z].myhwnd = 0; } } } } // relay key presses to windows. void inputhandler::keydown(int key) { for(int z = 0; z < MAX_MXPROG; z++) { if(prog[z].on == true) { SendMessage(prog[z].myhwnd,WM_KEYDOWN,key,0); } } } void inputhandler::keyup(int key) { for(int z = 0; z < MAX_MXPROG; z++) { if(prog[z].on == true) { SendMessage(prog[z].myhwnd,WM_KEYUP,key,0); } } } // mouse movement void inputhandler::mousemove(WPARAM wParam,LPARAM lParam) { for(int z = 0; z < MAX_MXPROG; z++) { if(prog[z].on == true) { SendMessage(prog[z].myhwnd,WM_MOUSEMOVE,wParam,lParam); } } } // home, home agian void inputhandler::replaymessage(UINT msg,WPARAM wParam,LPARAM lParam) { for(int z = 0; z < MAX_MXPROG; z++) { if(prog[z].on == true) { SendMessage(prog[z].myhwnd,msg,wParam,lParam); } } } // get a turned off node int inputhandler::getoffx() { for(int z = 0; z < MAX_MXPROG; z++) { if(prog[z].on == false) { return z; } } return -1; }