Best FlaUI code snippet using FlaUI.Core.WindowsAPI.User32.SetFocus
AutomationElement.cs
Source:AutomationElement.cs
...205 FocusNative();206 }207 }208 /// <summary>209 /// Sets the focus by using the Win32 SetFocus() method.210 /// </summary>211 public void FocusNative()212 {213 if (Properties.NativeWindowHandle.IsSupported)214 {215 var windowHandle = Properties.NativeWindowHandle.ValueOrDefault;216 if (windowHandle != Win32Constants.FALSE)217 {218 uint windowThreadId = User32.GetWindowThreadProcessId(windowHandle, out _);219 uint currentThreadId = Kernel32.GetCurrentThreadId();220 // attach window to the calling thread's message queue221 User32.AttachThreadInput(currentThreadId, windowThreadId, true);222 User32.SetFocus(windowHandle);223 // detach the window from the calling thread's message queue224 User32.AttachThreadInput(currentThreadId, windowThreadId, false);225 Wait.UntilResponsive(this);226 return;227 }228 }229 // Fallback to the UIA Version230 SetFocus();231 }232 /// <summary>233 /// Brings a window to the foreground.234 /// </summary>235 public void SetForeground()236 {237 if (Properties.NativeWindowHandle.IsSupported)238 {239 var windowHandle = Properties.NativeWindowHandle.ValueOrDefault;240 if (windowHandle != Win32Constants.FALSE)241 {242 User32.SetForegroundWindow(windowHandle);243 Wait.UntilResponsive(this);244 return;245 }246 }247 // Fallback to the UIA Version248 SetFocus();249 }250 /// <summary>251 /// Captures the object as screenshot in <see cref="Bitmap"/> format.252 /// </summary>253 public Bitmap Capture()254 {255 return Capturing.Capture.Element(this).Bitmap;256 }257#if NETFRAMEWORK258 /// <summary>259 /// Captures the object as screenshot in a WPF friendly <see cref="System.Windows.Media.Imaging.BitmapImage"/> format.260 /// </summary>261 System.Windows.Media.Imaging.BitmapImage CaptureWpf()262 {263 return Capturing.Capture.Element(this).BitmapImage;264 }265#endif266 /// <summary>267 /// Captures the object as screenshot directly into the given file.268 /// </summary>269 /// <param name="filePath">The filepath where the screenshot should be saved.</param>270 public void CaptureToFile(string filePath)271 {272 Capturing.Capture.Element(this).ToFile(filePath);273 }274 /// <summary>275 /// Gets a clickable point of the element.276 /// </summary>277 /// <exception cref="Exceptions.NoClickablePointException">Thrown when no clickable point was found</exception>278 public Point GetClickablePoint()279 {280 return FrameworkAutomationElement.GetClickablePoint();281 }282 /// <summary>283 /// Tries to get a clickable point of the element.284 /// </summary>285 /// <param name="point">The clickable point or null, if no point was found</param>286 /// <returns>True if a point was found, false otherwise</returns>287 public bool TryGetClickablePoint(out Point point)288 {289 return FrameworkAutomationElement.TryGetClickablePoint(out point);290 }291 /// <inheritdoc />292 public ActiveTextPositionChangedEventHandlerBase RegisterActiveTextPositionChangedEvent(TreeScope treeScope, Action<AutomationElement, ITextRange> action)293 {294 return FrameworkAutomationElement.RegisterActiveTextPositionChangedEvent(treeScope, action);295 }296 /// <inheritdoc />297 public AutomationEventHandlerBase RegisterAutomationEvent(EventId @event, TreeScope treeScope, Action<AutomationElement, EventId> action)298 {299 if (Equals(@event, EventId.NotSupportedByFramework))300 {301 throw new NotSupportedByFrameworkException();302 }303 return FrameworkAutomationElement.RegisterAutomationEvent(@event, treeScope, action);304 }305 /// <inheritdoc />306 public PropertyChangedEventHandlerBase RegisterPropertyChangedEvent(TreeScope treeScope, Action<AutomationElement, PropertyId, object> action, params PropertyId[] properties)307 {308 return FrameworkAutomationElement.RegisterPropertyChangedEvent(treeScope, action, properties);309 }310 /// <inheritdoc />311 public StructureChangedEventHandlerBase RegisterStructureChangedEvent(TreeScope treeScope, Action<AutomationElement, StructureChangeType, int[]> action)312 {313 return FrameworkAutomationElement.RegisterStructureChangedEvent(treeScope, action);314 }315 /// <inheritdoc />316 public NotificationEventHandlerBase RegisterNotificationEvent(TreeScope treeScope, Action<AutomationElement, NotificationKind, NotificationProcessing, string, string> action)317 {318 return FrameworkAutomationElement.RegisterNotificationEvent(treeScope, action);319 }320 /// <inheritdoc />321 public TextEditTextChangedEventHandlerBase RegisterTextEditTextChangedEventHandler(TreeScope treeScope, TextEditChangeType textEditChangeType, Action<AutomationElement, TextEditChangeType, string[]> action)322 {323 return FrameworkAutomationElement.RegisterTextEditTextChangedEventHandler(treeScope, textEditChangeType, action);324 }325 /// <summary>326 /// Gets the available patterns for an element via properties.327 /// </summary>328 public PatternId[] GetSupportedPatterns()329 {330 return Automation.PatternLibrary.AllForCurrentFramework.Where(IsPatternSupported).ToArray();331 }332 /// <summary>333 /// Checks if the given pattern is available for the element via properties.334 /// </summary>335 public bool IsPatternSupported(PatternId pattern)336 {337 if (Equals(pattern, PatternId.NotSupportedByFramework))338 {339 return false;340 }341 if (pattern.AvailabilityProperty == null)342 {343 throw new ArgumentException("Pattern doesn't have an AvailabilityProperty");344 }345 var success = FrameworkAutomationElement.TryGetPropertyValue(pattern.AvailabilityProperty, out bool isPatternAvailable);346 return success && isPatternAvailable;347 }348 /// <summary>349 /// Gets the available patterns for an element via UIA method.350 /// Does not work with cached elements and might be unreliable.351 /// </summary>352 public PatternId[] GetSupportedPatternsDirect()353 {354 return FrameworkAutomationElement.GetSupportedPatterns();355 }356 /// <summary>357 /// Checks if the given pattern is available for the element via UIA method.358 /// Does not work with cached elements and might be unreliable.359 /// </summary>360 public bool IsPatternSupportedDirect(PatternId pattern)361 {362 return GetSupportedPatternsDirect().Contains(pattern);363 }364 /// <summary>365 /// Gets the available properties for an element via UIA method.366 /// Does not work with cached elements and might be unreliable.367 /// </summary>368 public PropertyId[] GetSupportedPropertiesDirect()369 {370 return FrameworkAutomationElement.GetSupportedProperties();371 }372 /// <summary>373 /// Method to check if the element supports the given property via UIA method.374 /// Does not work with cached elements and might be unreliable.375 /// </summary>376 public bool IsPropertySupportedDirect(PropertyId property)377 {378 return GetSupportedPropertiesDirect().Contains(property);379 }380 /// <summary>381 /// Gets metadata from the UI Automation element that indicates how the information should be interpreted.382 /// </summary>383 /// <param name="targetId">The property to retrieve.</param>384 /// <param name="metadataId">Specifies the type of metadata to retrieve.</param>385 /// <returns>The metadata.</returns>386 public object GetCurrentMetadataValue(PropertyId targetId, int metadataId)387 {388 return FrameworkAutomationElement.GetCurrentMetadataValue(targetId, metadataId);389 }390 /// <summary>391 /// Compares two elements.392 /// </summary>393 public bool Equals(AutomationElement other)394 {395 return other != null && Automation.Compare(this, other);396 }397 /// <inheritdoc />398 public override bool Equals(object obj)399 {400 return Equals(obj as AutomationElement);401 }402 /// <inheritdoc />403 public override int GetHashCode()404 {405 return FrameworkAutomationElement?.GetHashCode() ?? 0;406 }407 /// <summary>408 /// Overrides the string representation of the element with something useful.409 /// </summary>410 public override string ToString()411 {412 return String.Format("AutomationId:{0}, Name:{1}, ControlType:{2}, FrameworkId:{3}",413 Properties.AutomationId.ValueOrDefault, Properties.Name.ValueOrDefault,414 Properties.LocalizedControlType.ValueOrDefault, Properties.FrameworkId.ValueOrDefault);415 }416 /// <summary>417 /// Executes the given action on the given pattern.418 /// </summary>419 /// <typeparam name="TPattern">The type of the pattern.</typeparam>420 /// <param name="pattern">The pattern.</param>421 /// <param name="throwIfNotSupported">Flag to indicate if an exception should be thrown if the pattern is not supported.</param>422 /// <param name="action">The action to execute on the pattern</param>423 protected internal void ExecuteInPattern<TPattern>(TPattern pattern, bool throwIfNotSupported, Action<TPattern> action)424 {425 if (pattern != null)426 {427 action(pattern);428 }429 else if (throwIfNotSupported)430 {431 throw new System.NotSupportedException();432 }433 }434 /// <summary>435 /// Executes the given func on the given pattern returning the received value.436 /// </summary>437 /// <typeparam name="TPattern">The type of the pattern.</typeparam>438 /// <typeparam name="TRet">The type of the return value.</typeparam>439 /// <param name="pattern">Zhe pattern.</param>440 /// <param name="throwIfNotSupported">Flag to indicate if an exception should be thrown if the pattern is not supported.</param>441 /// <param name="func">The function to execute on the pattern.</param>442 /// <returns>The value received from the pattern or the default if the pattern is not supported.</returns>443 protected internal TRet ExecuteInPattern<TPattern, TRet>(TPattern pattern, bool throwIfNotSupported, Func<TPattern, TRet> func)444 {445 if (pattern != null)446 {447 return func(pattern);448 }449 if (throwIfNotSupported)450 {451 throw new System.NotSupportedException();452 }453 return default;454 }455 /// <summary>456 /// Sets focus onto control using UIA native element457 /// </summary>458 protected virtual void SetFocus()459 {460 FrameworkAutomationElement.SetFocus();461 }462 }463}...
User32.cs
Source:User32.cs
...19 [DllImport("user32.dll", SetLastError = true)]20 public static extern bool SetForegroundWindow(IntPtr windowHandle);2122 [DllImport("user32.dll", SetLastError = true)]23 public static extern IntPtr SetFocus(IntPtr hWnd);2425 [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, SetLastError = true)]26 internal static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);2728 [DllImport("user32.dll", SetLastError = true)]29 public static extern bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey, byte bAlpha, uint dwFlags);3031 [DllImport("user32.dll", SetLastError = true)]32 public static extern bool GetCursorPos(out POINT lpPoint);3334 [DllImport("user32.dll", SetLastError = true)]35 public static extern bool SetCursorPos(int x, int y);3637 [DllImport("user32.dll", SetLastError = true)]
...
SetFocus
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using System.Windows.Automation;7using FlaUI.Core.WindowsAPI;8{9 {10 static void Main(string[] args)11 {12 var app = FlaUI.Core.Application.Launch("notepad.exe");13 var window = app.GetMainWindow(FlaUI.Core.Conditions.ConditionFactory.ByAutomationId("15"));14 window.SetFocus();15 System.Threading.Thread.Sleep(2000);16 window.SendKeys("Hello World");17 System.Threading.Thread.Sleep(2000);18 window.Close();19 }20 }21}
SetFocus
Using AI Code Generation
1using System;2using System.Windows.Forms;3using FlaUI.Core.WindowsAPI;4{5 {6 public Form1()7 {8 InitializeComponent();9 }10 private void button1_Click(object sender, EventArgs e)11 {12 User32.SetFocus(Handle);13 }14 }15}16using System;17using System.Windows.Forms;18using FlaUI.Core.WindowsAPI;19{20 {21 public Form1()22 {23 InitializeComponent();24 }25 private void button1_Click(object sender, EventArgs e)26 {27 User32.SetForegroundWindow(Handle);28 }29 }30}31using System;32using System.Windows.Forms;33using FlaUI.Core.WindowsAPI;34{35 {36 public Form1()37 {38 InitializeComponent();39 }40 private void button1_Click(object sender, EventArgs e)41 {42 User32.SetWindowPos(Handle, IntPtr.Zero, 0, 0, 0, 0, 0x0002 | 0x0001);43 }44 }45}46using System;47using System.Windows.Forms;48using FlaUI.Core.WindowsAPI;49{50 {51 public Form1()52 {53 InitializeComponent();54 }55 private void button1_Click(object sender, EventArgs e)56 {57 User32.ShowWindow(Handle, 1);58 }59 }60}61using System;62using System.Windows.Forms;63using FlaUI.Core.WindowsAPI;64{65 {66 public Form1()67 {68 InitializeComponent();69 }70 private void button1_Click(object sender, EventArgs e)71 {72 User32.ShowWindowAsync(Handle, 1);73 }74 }75}
SetFocus
Using AI Code Generation
1using FlaUI.Core.WindowsAPI;2using System;3using System.Runtime.InteropServices;4using System.Windows.Forms;5{6 {7 [DllImport("user32.dll")]8 static extern IntPtr GetForegroundWindow();9 public Form1()10 {11 InitializeComponent();12 }13 private void button1_Click(object sender, EventArgs e)14 {15 IntPtr hwnd = GetForegroundWindow();16 User32.SetFocus(hwnd);17 }18 }19}
SetFocus
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using FlaUI.Core.WindowsAPI;7{8 {9 public static void SetFocusMethod(IntPtr hWnd)10 {11 User32.SetFocus(hWnd);12 }13 }14}15using System;16using System.Collections.Generic;17using System.Linq;18using System.Text;19using System.Threading.Tasks;20using FlaUI.Core.WindowsAPI;21{22 {23 public static IntPtr GetForegroundWindowMethod()24 {25 return User32.GetForegroundWindow();26 }27 }28}29using System;30using System.Collections.Generic;31using System.Linq;32using System.Drawing;33using System.Text;34using System.Threading.Tasks;35using FlaUI.Core.WindowsAPI;36{37 {38 public static Rectangle GetWindowRectMethod(IntPtr hWnd)39 {40 return User32.GetWindowRect(hWnd);41 }42 }43}44using System;45using System.Collections.Generic;46using System.Linq;47using System.Text;48using System.Threading.Tasks;49using FlaUI.Core.WindowsAPI;50{51 {52 public static void SetWindowPosMethod(IntPtr hWnd, int X, int Y, int cx, int cy, int uFlags)53 {54 User32.SetWindowPos(hWnd, X, Y, cx, cy, uFlags);55 }56 }57}58using System;59using System.Collections.Generic;60using System.Linq;61using System.Text;62using System.Threading.Tasks;63using FlaUI.Core.WindowsAPI;64{65 {66 public static int GetWindowLongMethod(IntPtr hWnd, int nIndex)67 {68 return User32.GetWindowLong(hWnd, nIndex);69 }70 }71}
SetFocus
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using FlaUI.Core.WindowsAPI;7using System.Diagnostics;8using System.Runtime.InteropServices;9{10 {11 static void Main(string[] args)12 {13 Process p = Process.GetProcessesByName("notepad").FirstOrDefault();14 IntPtr hwnd = p.MainWindowHandle;15 User32.SetFocus(hwnd);16 }17 }18}
SetFocus
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using System.Windows.Automation;7using FlaUI.Core.WindowsAPI;8using System.Threading;9{10 {11 static void Main(string[] args)12 {13 AutomationElement window = AutomationElement.RootElement.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.NameProperty, "Untitled - Notepad"));14 IntPtr handle = (IntPtr)window.Current.NativeWindowHandle;15 User32.SetFocus(handle);16 SendKeys.SendWait("Hello World");17 Thread.Sleep(2000);18 window.SetFocus();19 SendKeys.SendWait("Hello World");20 Console.ReadLine();21 }22 }23}
SetFocus
Using AI Code Generation
1using System;2using System.Diagnostics;3using System.Threading;4using FlaUI.Core;5using FlaUI.Core.WindowsAPI;6using FlaUI.UIA3;7using UIA = interop.UIAutomationCore;8{9 {10 static void Main(string[] args)11 {12 var process = Process.Start("notepad.exe");13 using (var automation = new UIA3Automation())14 {15 var notepadWindow = Retry.WhileNull(() => automation.GetDesktop().FindFirstChild(cf => cf.ByProcessId(process.Id)), TimeSpan.FromSeconds(1));16 var notepadWindowHandle = notepadWindow.Properties.NativeWindowHandle;17 var notepadWindowHandle = notepadWindow.Properties.NativeWindowHandle;18 var notepadWindowHandle = notepadWindow.Properties.NativeWindowHandle;19 var notepadWindowHandle = notepadWindow.Properties.NativeWindowHandle;20 var notepadWindowHandle = notepadWindow.Properties.NativeWindowHandle;21 var notepadWindowHandle = notepadWindow.Properties.NativeWindowHandle;22 var notepadWindowHandle = notepadWindow.Properties.NativeWindowHandle;23 var notepadWindowHandle = notepadWindow.Properties.NativeWindowHandle;24 var notepadWindowHandle = notepadWindow.Properties.NativeWindowHandle;25 var notepadWindowHandle = notepadWindow.Properties.NativeWindowHandle;26 var notepadWindowHandle = notepadWindow.Properties.NativeWindowHandle;
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!