SendInput und Hooks
-
hi,
ich habe 2 Programme:- Ein Programm was das Keyboard hookt. Wird eine bestimmte Taste gedrückt, so wird bTaste true und das Programm startet in der Hauptschleife Programm 2 mit:
ShellExecute(NULL,"open","ESSDemoRecRec.exe",NULL,NULL,SW_SHOWNORMAL);- ein so kleines prog dass ich gleich mal den code (ohne inlcudes!!!!) poste
// es gibt normal nur KEYUP, aber zur Vereinfachung schreib ich mal DOWN noch dazu #define KEYEVENTF_KEYDOWN 0 // PpP ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ~~~~~~ // VKKey = Der VK-Key der Taste deren State geändert werden soll // Flags = KEYEVENTF_KEYDOWN Taste heruntergedrückt // KEYEVENTF_KEYUP Taste loslassen void SendKey(WORD VKKey, DWORD Flags) { // enhält Infos über die Taste die gedrückt werden soll KEYBDINPUT KeyInput; // die Taste die simuliert werden soll KeyInput.wVk = VKKey; // die Flags werden 1zu1 übergeben KeyInput.dwFlags = Flags; // das 'Sendepaket' INPUT InputEvent; // wir drücken eine Taste der Tastatur InputEvent.type = INPUT_KEYBOARD; // wir wollen die in KeyInput definierte Taste drücken InputEvent.ki = KeyInput; SendInput(1,&InputEvent,sizeof(INPUT)); } int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) { // Hauptprogramm setzt diesen Eintrag zum Beenden while(GetRegKey(OPCODEREGISTRY,"Record") == 1) { SendKey(VK_SPACE,KEYEVENTF_KEYDOWN); SendKey(VK_SPACE,KEYEVENTF_KEYUP); Sleep(100); } }so jetzt zu meinem Problem:
auf manchen PC's (natürlich gerade nicht auf meinem), kommt es zu einem sehr großen Performance-Unterschied wenn mana) Prog 2) über die Taste von Prog 1) starte
und wenn man
b) Prog 1) runnt, aber Prog 2) manuell startet.
Beides mal wurde das Programm in UT2004 getestet und bei a) waren es ca 0,5 fps und bei b) ca 30 fps und ich glaub 60facher Speed ist schon etwas hart.
Woran könnte das liegen?
thxalia
-
ich persönlich denke das es an dem
ShellExecute(NULL,"open","ESSDemoRecRec.exe",NULL,NULL,SW_SHOWNORMAL);liegt, aber was soll daran falsch sein?
Startet manchmal die Func den neuen Prozess las eine Art untergeordneten Thread?
-
keine Ahnung? wär ziemlich schade

-
ehm bevor ich das hier komplett aufgeb, sagt bitte bitte wenigstens das ihr keine ahnung von der Lösung habt

EDIT:
R.i.P. (Rest in Piece, wie ich in nem aufsatz geschrieben hab ;)) du lieber Thread.... denn dich ignoriert ja jeder
