最終更新日
概要
C#のコード内から、外部のアプリケーション電卓を起動します。
コード
[xaml]
<Window x:Class="WpfExtApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="150" Width="200">
<Grid>
<Button Name="btn0" HorizontalAlignment="Center"
VerticalAlignment="Center" Width="100" Height="50" Click="btn0_Click">
電卓起動
</Button>
</Grid>
</Window>
[xaml.cs]
using System.Windows;
namespace WpfExtApp
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btn0_Click(object sender, RoutedEventArgs e)
{
System.Diagnostics.Process.Start("calc.exe");
}
}
}
説明
メインウィンドウの「電卓起動」ボタンを押すと電卓が起動されます。
情報元のサイト
C#で他アプリの文字列を取得
電卓を起動した状態で実行するとコンソールに電卓の出力結果を取得します。
C#で他のアプリケーションのテキストボックスの文字列を取得する際の手順
- ウインドウのタイトルをキーワードに起動しているアプリを探しハンドルを取得する
- 取得したアプリのハンドルから、さらに取得したい文字が列が入ったコントロールを探しハンドルを取得する
- 取得したコントロールのハンドルから文字列を取得
コントロールの検索をするときにクラス名をキーにします。
C#で他アプリケーションを操作するための基礎知識
Windowsでは、UIの要素は、「ウィンドウ」という基底クラスから、派生するオブジェクトが使われています。 それらのオブジェクトには、一意のIDが割り当てられます。これを「ウィンドウハンドル」と呼びます。 これを使って、メッセージをやり取りするので、この「ウィンドウハンドル」を取得すると、他のアプリケーションを操作できるということのようです。
「ウィンドウハンドル」を取得するには、Spyツールを使用するのが一般的なようです。
動作確認環境
Microsoft Visual Studio Express 2013 for Desktop 64bit
Windows 8.1 pro 64bit
Windows 8.1 pro 64bit