質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

3回答

2134閲覧

C#アプリをスクリプトで操作させる方法

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2016/09/24 09:56

編集2022/01/12 10:55

c#でWinFormアプリを作っています。
このアプリをスクリプトで操作できるようにしたいと考えています。
例えばjavascriptでコードを入力して実行すると「フォームのボタンbuttonAを押すことができる」などです。

javascript

1pushButton("buttonA");

テキストフォームtextBoxAに文字を入力するには

javascript

1inputText("abc", "textBoxA");

このようなことは可能なのでしょうか?
いろいろな市販アプリケーションがスクリプトで操作できるものがあります。
例えばphotoshopもjavascriptで操作できます。

ライセンス問題もあるかと思いますが、もし可能な場合はそもそもどのようにc#アプリに実装すればよいのでしょうか?
どうぞよろしくお願い致します。

開発環境
Windows10 Home
Visual Studio 2015 C#
.NetFramework4.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

上の回答の引用文にも出てきてますが、自作プログラムに組み込めるスクリプトとしてはLuaなどもありますよね。
Lua - Wikipedia
LuaとC#バインダ

投稿2017/12/20 14:00

okrt

総合スコア366

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

遅レスですが、C# 6より、C#のコンパイラが"Roslyn"という共通のコンパイラエンジンとして公開されました。これを使うと、自分で作る任意のアプリケーション内に、C#のスクリプトを実行可能な機能を追加することが出来ます。

参考にどうぞ: 真・Roslyn for Scripting! あなたのアプリケーションにもC#スクリプトを!!

自分で書いた何らかのアプリケーションに、スクリプティング機能を載せたいと思ったことはありませんか? 例えば、何らかのゲームを作っているとして、このゲームにC#のスクリプティング機能を搭載出来たら、アドベンチャーゲームやロールプレイングゲームのシナリオ進行、シミュレーションゲームの敵AI調整に C# のスクリプトが使えるようになるのです。ゲームの世界ではluaやpython辺りをよく聞きますね。でも、本体をC#で書いているなら、スクリプトもC#で書きたいものです。

別の例として、Officeを挙げます。Officeには「Visual Basic for Application」という、VBチックなスクリプト環境があります。が、VBA、書きたくないです… VBAは徐々にフェードアウトの方向になっていると思いますが、代わりにC#でスクリプトが書けたら、もうちょっとOfficeに前向きになりそうです(Excel向けであれば、商用プラグインが既にあります:FCell)。MicrosoftはOfficeでC#を使えるようにするか? は、まだまだ分かりませんが、Roslynが公開されたことで、その可能性は高くなったと思います。

投稿2016/12/08 02:21

kekyo

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/12/20 02:36

ご返答が遅れましたがRoslynっていうものがあるんですね! これは使えそうです! c#6まではなかったんですね・・・。 いろいろ調べてみようと思います!
guest

0

アプリに外部プロセスとのインターフェイスを組み込めば可能です。Photoshopの場合はJavaScriptによる自動制御を目的としてそのような機能が提供されているのでしょう。

「外部プロセスとのインターフェイス」とは、プロセス間通信で外部から操作可能にする仕組みのことです。Windowsならウィンドウメッセージがお手軽で私もよく使いますが、共有メモリやソケット、メッセージキューなども一般的です。
プロセス間通信によって「Aボタン押せ」というコマンドを受け取ったら、Aボタンを押したのと同じ処理をする、というプログラムを書けば良いわけです。

ただ、JavaScript等ではプロセス間通信を直接扱えないので、C/C++でプロセス間通信の橋渡しをする関数群(API)をDLLモジュールとして作成し、JavaScript等でそのDLLをロードして所定の関数を呼び出す、というやり方になります。

とりあえず、プロセス間通信についての理解を深めれば、自ずとやり方は判ってくると思います。

投稿2016/09/24 12:02

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/09/25 05:21

ありがとうございます。 プロセス間通信についていろいろ調べてみようと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問