public void RegisterMAMEMessages() { // Retrieve our handle (needed when registering to MAME) HandleOfListener = this.Handle; // Register MAME messages OM_MAME_START = OSUtilities.RegisterWindowMessage(WinMsgUtils.OM_MAME_START); if (OM_MAME_START == 0) { throw new Exception("error"); } OM_MAME_STOP = OSUtilities.RegisterWindowMessage(WinMsgUtils.OM_MAME_STOP); if (OM_MAME_STOP == 0) { throw new Exception("error"); } OM_MAME_UPDATE_START = OSUtilities.RegisterWindowMessage(WinMsgUtils.OM_MAME_UPDATE_STATE); if (OM_MAME_UPDATE_START == 0) { throw new Exception("error"); } OM_MAME_REGISTER_CLIENT = OSUtilities.RegisterWindowMessage(WinMsgUtils.OM_MAME_REGISTER_CLIENT); if (OM_MAME_REGISTER_CLIENT == 0) { throw new Exception("error"); } OM_MAME_UNREGISTER_CLIENT = OSUtilities.RegisterWindowMessage(WinMsgUtils.OM_MAME_UNREGISTER_CLIENT); if (OM_MAME_UNREGISTER_CLIENT == 0) { throw new Exception("error"); } OM_MAME_GET_ID_STRING = OSUtilities.RegisterWindowMessage(WinMsgUtils.OM_MAME_GET_ID_STRING); if (OM_MAME_GET_ID_STRING == 0) { throw new Exception("error"); } // see if MAME or supermodel is already running var otherwnd = OSUtilities.FindWindow(WinMsgUtils.OUTPUT_WINDOW_CLASS, WinMsgUtils.OUTPUT_WINDOW_NAME); // If not found, try to found supermodel by process names if (otherwnd == IntPtr.Zero) { var procs = Process.GetProcessesByName("supermodel"); if (procs.Length > 0) { procs[0].Refresh(); otherwnd = procs[0].MainWindowHandle; //otherwnd = FindWindowEx(otherwnd, IntPtr.Zero, OUTPUT_WINDOW_NAME, IntPtr.Zero); } } if (otherwnd != IntPtr.Zero) { Message msg = new Message(); msg.WParam = otherwnd; msg.LParam = IntPtr.Zero; HandleMAMEStart(msg); } }
private void chkBoxStartWithWindows_Click(object sender, EventArgs e) { vJoyManager.Config.Application.ShortcutStartWithWindowsCreated = !vJoyManager.Config.Application.ShortcutStartWithWindowsCreated; if (vJoyManager.Config.Application.ShortcutStartWithWindowsCreated) { // Create shortcut OSUtilities.CreateStartupShortcut("vJoyIOFeederGUI", "vJoyIOFeederGUI auto-startup"); } else { OSUtilities.DeleteStartupShortcut("vJoyIOFeederGUI"); } }
int HandleMAMEStart(Message msg) { HandleToMAMEWindow = msg.WParam; Reset_id_to_outname_cache(); // register ourselves as a client OSUtilities.PostMessage(HandleToMAMEWindow, OM_MAME_REGISTER_CLIENT, HandleOfListener, (IntPtr)WinMsgUtils.CLIENT_ID); //WinMsgUtils.SendMessage(mame_target, om_mame_register_client, listener_hwnd, (IntPtr)WinMsgUtils.CLIENT_ID); // get the game name Map_id_to_outname(IntPtr.Zero); return(0); }
string Map_id_to_outname(IntPtr id) { // see if we have an entry in our map if (MapIDToName.ContainsKey(id)) { return(MapIDToName[id]); } // no entry yet; we have to ask OSUtilities.SendMessage(HandleToMAMEWindow, OM_MAME_GET_ID_STRING, HandleOfListener, id); // now see if we have the entry in our map if (MapIDToName.ContainsKey(id)) { return(MapIDToName[id]); } // if not, use an empty string return(""); }
/// <summary> /// Point d'entrée principal de l'application. /// </summary> static int Main(string[] args) { SharedData.Initialize(args); Console.Title = "BackForceFeeder v" + typeof(BFFManager).Assembly.GetName().Version.ToString() + " Made for Gamoover by njz3"; Logger.Loggers += ConsoleLog; SharedData.Start(); while (!OSUtilities.IsKeyPressed(ConsoleKey.Escape)) { Thread.Sleep(500); } SharedData.Stop(); return(0); } // Main
/// <summary> /// Start threads and managers /// </summary> public static void Start() { Logger.Start(); Manager.Start(); if (OSUtilities.IsUserAdministrator()) { Logger.Log("[MAIN] Running as administrator, trying realtime priority", LogLevels.IMPORTANT); } else { Logger.Log("[MAIN] Running as standard user, trying realtime priority", LogLevels.IMPORTANT); } try { Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.RealTime; if (Process.GetCurrentProcess().PriorityClass != ProcessPriorityClass.RealTime) { Logger.Log("[MAIN] Setting realtime priority failed, got: " + Process.GetCurrentProcess().PriorityClass, LogLevels.IMPORTANT); } } catch (Exception ex) { Logger.Log("[MAIN] Setting realtime priority failed, falling back to high", LogLevels.IMPORTANT); Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.High; } }
private static void OnAbout(object sender, EventArgs e) { MessageBox.Show(OSUtilities.AboutString(), "About BackForceFeeder by njz3", MessageBoxButtons.OK); }
public static void ProcessKeyStroke(KeyCodes key, KeyEmulationAPI keyAPI, bool newstate, bool oldstate) { // Leave early if no change if (newstate == oldstate) { return; } VirtualKeyCode keycode = 0; OSUtilities.DInputScanCodes scancode1 = 0; OSUtilities.DInputScanCodes scancode2 = 0; // Translation table switch (key) { case Configuration.KeyCodes.AltF4: // Special keycode for combined press if (keyAPI.HasFlag(KeyEmulationAPI.SendInput)) { if (newstate && (!oldstate)) { OSUtilities.SendAltF4(); } } if (keyAPI.HasFlag(KeyEmulationAPI.DInput)) { scancode1 = OSUtilities.DInputScanCodes.DIK_LMENU; scancode2 = OSUtilities.DInputScanCodes.DIK_F4; } break; case Configuration.KeyCodes.ESC: keycode = VirtualKeyCode.ESCAPE; scancode1 = OSUtilities.DInputScanCodes.DIK_ESCAPE; break; case Configuration.KeyCodes.ENTER: keycode = VirtualKeyCode.RETURN; scancode1 = OSUtilities.DInputScanCodes.DIK_RETURN; break; case Configuration.KeyCodes.TAB: keycode = VirtualKeyCode.TAB; scancode1 = OSUtilities.DInputScanCodes.DIK_TAB; break; case Configuration.KeyCodes.LCTRL: keycode = VirtualKeyCode.LCONTROL; scancode1 = OSUtilities.DInputScanCodes.DIK_LCONTROL; break; case Configuration.KeyCodes.RCTRL: keycode = VirtualKeyCode.RCONTROL; scancode1 = OSUtilities.DInputScanCodes.DIK_RCONTROL; break; case Configuration.KeyCodes.LSHIFT: keycode = VirtualKeyCode.LSHIFT; scancode1 = OSUtilities.DInputScanCodes.DIK_LSHIFT; break; case Configuration.KeyCodes.RSHIFT: keycode = VirtualKeyCode.RSHIFT; scancode1 = OSUtilities.DInputScanCodes.DIK_RSHIFT; break; case Configuration.KeyCodes.LALT: keycode = VirtualKeyCode.LMENU; scancode1 = OSUtilities.DInputScanCodes.DIK_LMENU; break; case Configuration.KeyCodes.RALT: keycode = VirtualKeyCode.RMENU; scancode1 = OSUtilities.DInputScanCodes.DIK_RMENU; break; case Configuration.KeyCodes.LEFT: keycode = VirtualKeyCode.LEFT; scancode1 = OSUtilities.DInputScanCodes.DIK_LEFT; break; case Configuration.KeyCodes.RIGHT: keycode = VirtualKeyCode.RIGHT; scancode1 = OSUtilities.DInputScanCodes.DIK_RIGHT; break; case Configuration.KeyCodes.UP: keycode = VirtualKeyCode.UP; scancode1 = OSUtilities.DInputScanCodes.DIK_UP; break; case Configuration.KeyCodes.DOWN: keycode = VirtualKeyCode.DOWN; scancode1 = OSUtilities.DInputScanCodes.DIK_DOWN; break; case Configuration.KeyCodes.F1: case Configuration.KeyCodes.F2: case Configuration.KeyCodes.F3: case Configuration.KeyCodes.F4: case Configuration.KeyCodes.F5: case Configuration.KeyCodes.F6: case Configuration.KeyCodes.F7: case Configuration.KeyCodes.F8: case Configuration.KeyCodes.F9: case Configuration.KeyCodes.F10: keycode = (VirtualKeyCode)(VirtualKeyCode.F1 + (ushort)(key - Configuration.KeyCodes.F1)); scancode1 = (OSUtilities.DInputScanCodes)(OSUtilities.DInputScanCodes.DIK_F1 + (ushort)(key - Configuration.KeyCodes.F1)); break; case Configuration.KeyCodes.F11: keycode = VirtualKeyCode.F11; scancode1 = OSUtilities.DInputScanCodes.DIK_F11; break; case Configuration.KeyCodes.F12: keycode = VirtualKeyCode.F12; scancode1 = OSUtilities.DInputScanCodes.DIK_F12; break; case Configuration.KeyCodes.NUM0: keycode = VirtualKeyCode.VK_0; scancode1 = OSUtilities.DInputScanCodes.DIK_0; break; case Configuration.KeyCodes.NUM1: case Configuration.KeyCodes.NUM2: case Configuration.KeyCodes.NUM3: case Configuration.KeyCodes.NUM4: case Configuration.KeyCodes.NUM5: case Configuration.KeyCodes.NUM6: case Configuration.KeyCodes.NUM7: case Configuration.KeyCodes.NUM8: case Configuration.KeyCodes.NUM9: keycode = (VirtualKeyCode)(VirtualKeyCode.VK_0 + (ushort)(key - Configuration.KeyCodes.F1)); scancode1 = (OSUtilities.DInputScanCodes)(OSUtilities.DInputScanCodes.DIK_F1 + (ushort)(key - Configuration.KeyCodes.F1)); break; case Configuration.KeyCodes.NUMPAD_0: keycode = VirtualKeyCode.NUMPAD0; scancode1 = OSUtilities.DInputScanCodes.DIK_NUMPAD0; break; case Configuration.KeyCodes.NUMPAD_1: keycode = VirtualKeyCode.NUMPAD1; scancode1 = OSUtilities.DInputScanCodes.DIK_NUMPAD1; break; case Configuration.KeyCodes.NUMPAD_2: keycode = VirtualKeyCode.NUMPAD2; scancode1 = OSUtilities.DInputScanCodes.DIK_NUMPAD2; break; case Configuration.KeyCodes.NUMPAD_3: keycode = VirtualKeyCode.NUMPAD3; scancode1 = OSUtilities.DInputScanCodes.DIK_NUMPAD3; break; case Configuration.KeyCodes.NUMPAD_4: keycode = VirtualKeyCode.NUMPAD4; scancode1 = OSUtilities.DInputScanCodes.DIK_NUMPAD4; break; case Configuration.KeyCodes.NUMPAD_5: keycode = VirtualKeyCode.NUMPAD5; scancode1 = OSUtilities.DInputScanCodes.DIK_NUMPAD5; break; case Configuration.KeyCodes.NUMPAD_6: keycode = VirtualKeyCode.NUMPAD6; scancode1 = OSUtilities.DInputScanCodes.DIK_NUMPAD6; break; case Configuration.KeyCodes.NUMPAD_7: keycode = VirtualKeyCode.NUMPAD7; scancode1 = OSUtilities.DInputScanCodes.DIK_NUMPAD7; break; case Configuration.KeyCodes.NUMPAD_8: keycode = VirtualKeyCode.NUMPAD8; scancode1 = OSUtilities.DInputScanCodes.DIK_NUMPAD8; break; case Configuration.KeyCodes.NUMPAD_9: keycode = VirtualKeyCode.NUMPAD9; scancode1 = OSUtilities.DInputScanCodes.DIK_NUMPAD9; break; case Configuration.KeyCodes.NUMPAD_DECIMAL: keycode = VirtualKeyCode.SEPARATOR; scancode1 = OSUtilities.DInputScanCodes.DIK_NUMPADCOMMA; break; case Configuration.KeyCodes.NUMPAD_DIVIDE: keycode = VirtualKeyCode.DIVIDE; scancode1 = OSUtilities.DInputScanCodes.DIK_DIVIDE; break; case Configuration.KeyCodes.NUMPAD_MULTIPLY: keycode = VirtualKeyCode.MULTIPLY; scancode1 = OSUtilities.DInputScanCodes.DIK_MULTIPLY; break; case Configuration.KeyCodes.A: keycode = VirtualKeyCode.VK_A; scancode1 = OSUtilities.DInputScanCodes.DIK_A; break; case Configuration.KeyCodes.B: keycode = VirtualKeyCode.VK_B; scancode1 = OSUtilities.DInputScanCodes.DIK_B; break; case Configuration.KeyCodes.C: keycode = VirtualKeyCode.VK_C; scancode1 = OSUtilities.DInputScanCodes.DIK_C; break; case Configuration.KeyCodes.D: keycode = VirtualKeyCode.VK_D; scancode1 = OSUtilities.DInputScanCodes.DIK_D; break; case Configuration.KeyCodes.E: keycode = VirtualKeyCode.VK_E; scancode1 = OSUtilities.DInputScanCodes.DIK_E; break; case Configuration.KeyCodes.F: keycode = VirtualKeyCode.VK_F; scancode1 = OSUtilities.DInputScanCodes.DIK_F; break; case Configuration.KeyCodes.G: keycode = VirtualKeyCode.VK_G; scancode1 = OSUtilities.DInputScanCodes.DIK_G; break; case Configuration.KeyCodes.H: keycode = VirtualKeyCode.VK_H; scancode1 = OSUtilities.DInputScanCodes.DIK_H; break; case Configuration.KeyCodes.I: keycode = VirtualKeyCode.VK_I; scancode1 = OSUtilities.DInputScanCodes.DIK_I; break; case Configuration.KeyCodes.J: keycode = VirtualKeyCode.VK_J; scancode1 = OSUtilities.DInputScanCodes.DIK_J; break; case Configuration.KeyCodes.K: keycode = VirtualKeyCode.VK_K; scancode1 = OSUtilities.DInputScanCodes.DIK_K; break; case Configuration.KeyCodes.L: keycode = VirtualKeyCode.VK_L; scancode1 = OSUtilities.DInputScanCodes.DIK_L; break; case Configuration.KeyCodes.M: keycode = VirtualKeyCode.VK_M; scancode1 = OSUtilities.DInputScanCodes.DIK_M; break; case Configuration.KeyCodes.N: keycode = VirtualKeyCode.VK_N; scancode1 = OSUtilities.DInputScanCodes.DIK_N; break; case Configuration.KeyCodes.O: keycode = VirtualKeyCode.VK_O; scancode1 = OSUtilities.DInputScanCodes.DIK_O; break; case Configuration.KeyCodes.P: keycode = VirtualKeyCode.VK_P; scancode1 = OSUtilities.DInputScanCodes.DIK_P; break; case Configuration.KeyCodes.Q: keycode = VirtualKeyCode.VK_Q; scancode1 = OSUtilities.DInputScanCodes.DIK_Q; break; case Configuration.KeyCodes.R: keycode = VirtualKeyCode.VK_R; scancode1 = OSUtilities.DInputScanCodes.DIK_R; break; case Configuration.KeyCodes.S: keycode = VirtualKeyCode.VK_S; scancode1 = OSUtilities.DInputScanCodes.DIK_S; break; case Configuration.KeyCodes.T: keycode = VirtualKeyCode.VK_T; scancode1 = OSUtilities.DInputScanCodes.DIK_T; break; case Configuration.KeyCodes.U: keycode = VirtualKeyCode.VK_U; scancode1 = OSUtilities.DInputScanCodes.DIK_U; break; case Configuration.KeyCodes.V: keycode = VirtualKeyCode.VK_V; scancode1 = OSUtilities.DInputScanCodes.DIK_V; break; case Configuration.KeyCodes.W: keycode = VirtualKeyCode.VK_W; scancode1 = OSUtilities.DInputScanCodes.DIK_W; break; case Configuration.KeyCodes.X: keycode = VirtualKeyCode.VK_X; scancode1 = OSUtilities.DInputScanCodes.DIK_X; break; case Configuration.KeyCodes.Y: keycode = VirtualKeyCode.VK_Y; scancode1 = OSUtilities.DInputScanCodes.DIK_Y; break; case Configuration.KeyCodes.Z: keycode = VirtualKeyCode.VK_Z; scancode1 = OSUtilities.DInputScanCodes.DIK_Z; break; case Configuration.KeyCodes.SPACE: keycode = VirtualKeyCode.SPACE; scancode1 = OSUtilities.DInputScanCodes.DIK_SPACE; break; default: break; } // Pressed? if (newstate && !oldstate) { Logger.Log("[KEY] " + key.ToString() + " pressed with " + keyAPI.ToString(), LogLevels.INFORMATIVE); if (keyAPI.HasFlag(KeyEmulationAPI.DInput)) { if (scancode1 != 0) { OSUtilities.SendKeybDInputDown(scancode1); } if (scancode2 != 0) { OSUtilities.SendKeybDInputDown(scancode2); } } if (keyAPI.HasFlag(KeyEmulationAPI.SendInput)) { if (keycode != 0) { OSUtilities.SendKeyDown(keycode); } } } // Released? if (!newstate && oldstate) { Logger.Log("[KEY] " + key.ToString() + " released with " + keyAPI.ToString(), LogLevels.INFORMATIVE); if (keyAPI.HasFlag(KeyEmulationAPI.DInput)) { if (scancode1 != 0) { OSUtilities.SendKeybDInputUp(scancode1); } if (scancode2 != 0) { OSUtilities.SendKeybDInputUp(scancode2); } } if (keyAPI.HasFlag(KeyEmulationAPI.SendInput)) { if (keycode != 0) { OSUtilities.SendKeyUp(keycode); } } } }