/// <summary>
/// The Startup handler.
/// </summary>
/// <param name="e">The event arguments</param>
protected override void OnStartup(StartupEventArgs e)
{
// Start the WindowMove client.
CreateWindow();
try
{
// Obtain an AutomationElement from the target window handle.
_targetWindow = StartTargetApp(_targetApplication);
// Does the automation element exist?
if (_targetWindow == null)
{
Feedback("No target.");
return;
}
Feedback("Found target.");
// find current location of our window
_targetLocation = _targetWindow.Current.BoundingRectangle.Location;
// Obtain required control patterns from our automation element
_windowPattern = GetControlPattern(_targetWindow,
WindowPattern.Pattern) as WindowPattern;
if (_windowPattern == null) return;
// Make sure our window is usable.
// WaitForInputIdle will return before the specified time
// if the window is ready.
if (false == _windowPattern.WaitForInputIdle(10000))
{
Feedback("Object not responding in a timely manner.");
return;
}
Feedback("Window ready for user interaction");
// Register for required events
RegisterForEvents(
_targetWindow, WindowPattern.Pattern, TreeScope.Element);
// Obtain required control patterns from our automation element
_transformPattern =
GetControlPattern(_targetWindow, TransformPattern.Pattern)
as TransformPattern;
if (_transformPattern == null) return;
// Is the TransformPattern object moveable?
if (_transformPattern.Current.CanMove)
{
// Enable our WindowMove fields
_xCoordinate.IsEnabled = true;
_yCoordinate.IsEnabled = true;
_moveTarget.IsEnabled = true;
// Move element
_transformPattern.Move(0, 0);
}
else
{
Feedback("Wndow is not moveable.");
}
}
catch (ElementNotAvailableException)
{
Feedback("Client window no longer available.");
}
catch (InvalidOperationException)
{
Feedback("Client window cannot be moved.");
}
catch (Exception exc)
{
Feedback(exc.ToString());
}
}