// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_FRAME_TEST_SIMULATE_INPUT_H_ #define CHROME_FRAME_TEST_SIMULATE_INPUT_H_ #include #include #include "base/basictypes.h" #include "base/process_util.h" namespace simulate_input { enum Modifier { NONE, SHIFT = 1, CONTROL = 2, ALT = 4 }; // Bring a window into foreground to receive user input. // Note that this may not work on bool ForceSetForegroundWindow(HWND window); // Looks for a top level window owned by the given process id and // calls ForceSetForegroundWindow on it. bool EnsureProcessInForeground(base::ProcessId process_id); // Helper function to set keyboard focus to a window. This is achieved by // sending a mouse move followed by a mouse down/mouse up combination to the // window. void SetKeyboardFocusToWindow(HWND window); // Sends a keystroke to the currently active application with optional // modifiers set. void SendMnemonic(WORD mnemonic_char, Modifier modifiers, bool extended, bool unicode); // Sends a mouse click to the desktop. enum MouseButton { LEFT, RIGHT, MIDDLE, X }; void SendMouseClick(int x, int y, MouseButton button); // Sends a mouse click to the window passed in, after ensuring that the window // is in the foreground. void SendMouseClick(HWND window, int x, int y, MouseButton button); // Translates a single char to a virtual key. void SendScanCode(short scan_code, Modifier modifiers); void SendCharA(char c, Modifier modifiers); void SendCharW(wchar_t c, Modifier modifiers); // Sends extended keystroke to the currently active application with optional // modifiers set. void SendExtendedKey(WORD key, Modifier modifiers); // Iterates through all the characters in the string and simulates // keyboard input. The input goes to the currently active application. void SendStringW(const std::wstring& s); void SendStringA(const std::string& s); } // end namespace simulate_input #endif // CHROME_FRAME_TEST_SIMULATE_INPUT_H_