ソフトウェアを開発し続けて早六年。 バグを憎んで人を憎まず。。 株式投資で脱サラをめざすITエンジニアのホームページ......
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
自分のアプリのなかでVBScriptやJScriptを呼び出します。
この機能を使うと自分のアプリでExcelやWordのマクロと同じことが実現できます。

ソースのダウンロード(zipファイル)
↓さわりの部分
/// <summary>
/// スクリプトを実行する
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnRun(object sender, System.EventArgs e)
{
try
{
MSScriptControl.IScriptControl scriptCtl = new MSScriptControl.ScriptControlClass();
scriptCtl.SitehWnd = (int) this.Handle;
//スクリプトエンジンを指定する
scriptCtl.Language = comboScriptEngine.Text;
/*
* スクリプトから呼び出すオブジェクトを登録する
* ここで登録するオブジェクトはIDispatchを実装する必要がある
*/

//オブジェクト名を省略して呼び出すオブジェクトを登録する
scriptCtl.AddObject("TestCls", new ScriptClasses.TestCls(), true);
//オブジェクト名"Env"で呼び出すオブジェクトを登録する
scriptCtl.AddObject("Env", new ScriptClasses.Environment(this), false);
try
{
//スクリプトを実行する
scriptCtl.AddCode(textSource.Text);
}
catch(Exception ex)//スクリプト実行時エラー発生
{

MSScriptControl.Error err = scriptCtl.Error;
if(err == null)
{
textResult.Text = ex.ToString();
return;
}
string msg = string.Format("({0}, {1}): error {2}: {3}", err.Line, err.Column, err.Number, err.Description);
textResult.Text = msg;
}
}
catch(Exception ex2)
{
textResult.Text = ex2.ToString();
}
}
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

☆お誘いです☆
突然のコメント失礼します。
この度、新規にブログの検索&ランキングサイト立ち上げました。
ブログを拝見させていただき、内容もよく、大変よくできているブログであると感じました。
このブログを【bitz】の「ネット・コンピュータ」カテゴリに登録して、もっと多くの人に読んでもらいませんか?
上位のブログにはトップページから直接リンクされるので、
多くのアクセスとSEO効果が期待できます。
宜しくお願い致します。

ヵヮィィ☆ブログランキング【bitz】
http://bitz.tv/brank/

参加をお待ちしています☆
【2005/11/20 Sun】 URL // ヵヮィィ☆ブログランキング【bitz】 #- [ 編集 ]
C#からスクリプトエンジンとC++をくっつけようと四苦八苦していて、
当blogを見つけました。
自分で作ったものはAddObjectでエラーになってしまい、
ScriptClassesをどのように書いたらよいか、知りたくてソースを
DLしようとしたのですが、見れません。ぜひ再公開お願いします
【2007/11/16 Fri】 URL // GENZIN #- [ 編集 ]
再公開です
どうぞ。
※昔のブログにアクセスがあるとは意外です。。
※地道に続けるのが苦手なので更新とまってしまいました。

/*********************************************************************************
* C#アプリケーションの内部でVBScript,JScript(WSH)を使用するサンプル
*********************************************************************************/
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Runtime.InteropServices;

//スクリプトから呼び出すクラスを定義する
//プロジェクトのプロパティ-「構成プロパティ」-「ビルド」-「COMの相互運用機能に登録」をTrueにする必要がある
namespace ScriptClasses
{
[ClassInterface(ClassInterfaceType.AutoDispatch)]//IDispatchを実装する
public class TestCls
{

public string Hello()
{
Console.WriteLine("Hello World");
return "内部のクラスメソッドがコールされた";
}
public void Test1()
{
Console.WriteLine("Hello World");
}
}
[ClassInterface(ClassInterfaceType.AutoDispatch)]//IDispatchを実装する
public class Environment
{
public Environment(Form frm)
{
thisFrom = frm;
}
private Form thisFrom;
public void ChangeColor()
{
thisFrom.BackColor = Color.Aqua;
}
public void SetText(string txt)
{
thisFrom.Text = txt;
}
}
}
【2007/11/16 Fri】 URL // 昔このブログを書いてた人 #xvsNc1J2 [ 編集 ]
ありがとうございます。こんなにすぐに返事をいただけるなんて。
COMの相互運用機能に登録と
ClassInterfaceが必要だったんですね。
うまくいきました、ありがとうございます。

目標まであと1山ありますが、もっと勉強して頑張ります。
【2007/11/17 Sat】 URL // GENZIN #- [ 編集 ]
承認待ちコメント
このコメントは管理者の承認待ちです
【2009/01/11 Sun】 // # [ 編集 ]

管理者にだけ表示を許可する
http://qnd.blog36.fc2.com/tb.php/10-658d7fd7
この記事にトラックバックする(FC2ブログユーザー)
// HOME // 
シャトー・フルール・ド・ジャン・ゲイ・レゼルヴ 2001
↑これ、お気に入りのワインです
毎日ペースで飲んでる中からの
厳選(?)チョイスする予定。。
(ちなみに赤が好き)
カテゴリー
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
ブロとも申請フォーム
ブログ内検索

RSSフィード
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。