プラグイン

Size: px
Start display at page:

Download "プラグイン"

Transcription

1 プラグイン プラグイン詳細 1 Adobe Photoshop や Becky! Internet Mail 等のアプリケーションでは プラグイン ( 又は アドイン エクステンション等 ) と呼ばれるプログラムをインストールする事に依り 機能を追加する事が出来る様に成って居る 此処では 此の様なプラグイン機能を持ったアプリケーションの作り方を考えて観る事にする 其れは インターフェイスを使用すると謂う方法で有る 詰り プラグインと仕て必要と成る機能をプロパティやメソッド ( 更に イベントやインデクサ ) と仕て持つインターフェイスを予め用意して置き 此のインターフェイスを実装したクラスと仕てプラグインを作成するので有る インターフェイスの作成 理屈は扨て置き 実際にプラグインを作成して観る事にする 此処で作成するプラグインは プラグインの名前を返す機能と 渡された文字列を処理して 結果を文字列と仕て返す機能を有する物とし 夫々の機能の為に Name プロパティと Run メソッドを持つインターフェイスを作る Visual Studio では クラスライブラリのプロジェクトを作成し 下記の様なコードを書き ビルドする.NET SDK の場合は /target:library コンパイラオプションに依り コードライブラリを作成する 猶 此処で作成されたアセンブリファイル名は Plugin.dll で有るとする Visual Studio の Visual Basic の場合は プロジェクトのプロパティの ルート名前空間 が空白に成って居る物とする ( デフォルトでは プロジェクト名と成って居るので プロジェクトのプロパティでルート名前空間の欄を消去する ) Imports System Visual Basic Namespace Plugin Public Interface IPlugin ReadOnly Property Name( ) As String Function Run( ByVal Str As String ) As String End Interface End Namespace C# using System; namespace Plugin public interface IPlugin string Name get; string Run( string str ); -1-

2 プラグインの作成 次に 此のインターフェイスを基に プラグインを作る プラグインもクラスライブラリと仕て作成する プラグインは今作成した IPlugin インターフェイスを実装する必要が有るので Plugin.dll を参照に追加する 具体的には Visual Studio の場合は ソリューションエクスプローラの 参照設定 に Plugin.dll を追加する.NET SDK の場合は /reference コンパイラオプションを使用する 此処では 渡された文字列の文字数を返すプラグインを作成する事にする IPlugin インターフェイスを実装した下記の様な CountChars クラスを作成する 此のクラスライブラリは CountChars.dll と謂う名前のアセンブリファイルと仕てビルドする物とする Public Class CountChars Implements Plugin.IPlugin Visual Basic ' プラグインの名前を返すプロパティ Public ReadOnly Property Name( ) As String _ Implements Plugin.IPlugin.Name Return " 文字数取得 " End ' 文字数を文字列で返すメソッド Public Function Run( ByVal Str As String ) As String _ Implements Plugin.IPlugin.Run Return Str.Length.ToString( ) End Function End Class using System; C# namespace CountChars public class CountChars : Plugin.IPlugin public string Name get return " 文字数取得 "; public string Run( string str ) return str.length.tostring( ); -2-

3 プラグインを使うアプリケーションの作成 残るはプラグインを使用するメインアプリケーションの作成で有る メインアプリケーションでは インストールされて居る有効なプラグインを何の様に探すか 然して プラグインクラスのインスタンスを何の様に作成するかと謂う事が問題と成る 先ず インストールされて居るプラグインを探す方法に付いてで有る プラグインは 必ず dll と謂う拡張子を持ち 指定されたフォルダに置かれて居なければ成らないと謂う約束に仕て置く ( 此処では メインアプリケーションがインストールされて居るフォルダに有る plugins フォルダにプラグインを置く物とする ) 此れに依り メインアプリケーションは プラグインフォルダに有る dll の拡張子を持つファイル而巳を調べれば良い事に成る 更に アセンブリに IPlugin インターフェイスを実装したクラスが有るか調べるには リフレクションを使用する 亦 プラグインクラスのインスタンスを作成するには Activator.CreateInstance メソッド等を使用すれば良い ( 下記のサンプルでは Assembly.CreateInstance メソッドを使用して居る ) 其れでは 実際に作成して観る事にする 此処では メインアプリは コンソールアプリケーションと仕て作成する事にする 亦 Plugin.dll を参照に追加する 先ずは プラグインを扱うクラス (PluginInfo) を作成する 此のクラスは プラグインのアセンブリファイルのパスとクラス名を返すプロパティ ( 夫々 Location と ClassName) と 有効なプラグインを探すメソッド (FindPlugins) IPlugin のインスタンスを作成するメソッド (CreateInstance) を有する 此のクラスのコードを以下に示す Public Class PluginInfo Private LocationValue As String Private ClassNameValue As String Visual Basic ' PluginInfo クラスのコンストラクタ Private Sub New( ByVal path As String, ByVal cls As String ) Me.LocationValue = path Me.ClassNameValue = cls End Sub ' アセンブリファイルのパス Public ReadOnly Property Location( ) As String Return LocationValue End ' クラスの名前 Public ReadOnly Property ClassName( ) As String Return ClassNameValue End ' 有効なプラグインの探索するメソッド Public Shared Function FindPlugins( ) As PluginInfo( ) Dim Plugins As New System.Collections.ArrayList -3-

4 ' IPlugin 型の名前 Dim PluginName As String = Type( Plugin.IPlugin ).FullName ' プラグインフォルダ Dim Folder As String = _ System.IO.Path.DirectoryName( _ System.Reflection.Assembly. _ ExecutingAssembly( ).Location ) If Not Folder.EndsWith( " " ) Then Folder &= " " Folder &= "plugins" If Not System.IO.Directory.Exists( Folder ) Then Throw New ApplicationException( _ " プラグインフォルダ " & Folder & " が見付かりませんでした ") End If ' DLL ファイルの探索 Dim dlls As String( ) = System.IO.Directory.Files( Folder, "*.dll" ) Dim Dll As String For Each Dll In dlls Try ' アセンブリと仕て読込 Dim Asm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom( Dll ) Dim T As Type For Each T In Asm.Types( ) ' アセンブリ内の総ての型に付いてプラグインと仕て有効か調査 If T.IsClass AndAlso T.IsPublic AndAlso _ Not T.IsAbstract AndAlso _ Not ( T.Interface( PluginName ) Is Nothing ) Then ' PluginInfo をコレクションに追加 Plugins.Add( New PluginInfo( Dll, T.FullName )) End If Next Catch End Try Next ' コレクションを配列に仕て復帰 Return CType( Plugins.ToArray( Type( PluginInfo )), PluginInfo( )) End Function ' プラグインクラスのインスタンスを作成するメソッド Public Function CreateInstance( ) As Plugin.IPlugin Try ' アセンブリの読込 Dim Asm As System.Reflection.Assembly = _ System.Reflection.Assembly.LoadFrom( Me.Location ) ' クラス名からインスタンスを作成 Return CType( Asm.CreateInstance( Me.ClassName ), Plugin.IPlugin ) Catch End Try Return Nothing End Function End Class -4-

5 using System; C# namespace Plugin // プラグインに関する情報 public class PluginInfo private string _location; private string _classname; // PluginInfo クラスのコンストラクタ // 引数は path: アセンブリファイルのパス cls: クラスの名前 private PluginInfo( string path, string cls ) this.location = path; this.classname = cls; // アセンブリファイルのパス public string Location get return _location; // クラスの名前 public string ClassName get return _classname; // 有効なプラグインを探す ( 戻り値は 有効なプラグインの PluginInfo 配列 ) public static PluginInfo[ ] FindPlugins( ) System.Collections.ArrayList plugins = new System.Collections.ArrayList( ); // IPlugin 型の名前 string ipluginname = typeof( Plugin.IPlugin ).FullName; // プラグインフォルダ string folder = System.IO.Path.DirectoryName( System.Reflection.Assembly.ExecutingAssembly( ).Location ); folder += " plugins"; if (!System.IO.Directory.Exists( folder )) throw new ApplicationException( folder + " が見付かりませんでした "); //.dll ファイルを探す string[ ] dlls = System.IO.Directory.Files( folder, "*.dll" ); foreach ( string dll in dlls ) try // アセンブリと仕て読み込む -5-

6 System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom( dll ); foreach (Type t in asm.types( )) // アセンブリ内の総ての型に付いて プラグインと仕て有効か調べる if ( t.isclass && t.ispublic &&!t.isabstract && t.interface( ipluginname )!= null ) // PluginInfo をコレクションに追加する plugins.add( new PluginInfo( dll, t.fullname )); catch // コレクションを配列にして返す return ( PluginInfo[ ]) plugins.toarray( typeof( PluginInfo )); // プラグインクラスのインスタンスを作成する ( 戻り値は プラグインクラスのインスタンス ) public Plugin.IPlugin CreateInstance( ) try // アセンブリを読み込む System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom( this.location ); // クラス名からインスタンスを作成する return ( Plugin.IPlugin ) asm.createinstance( this.classname ); catch return null; FindPlugins メソッドが多少複雑なので 簡単に説明して置く FindPlugins メソッドでは Assembly.LoadFrom メソッドでアセンブリを読み込んだ後 アセンブリ内の総ての型に付いて 其の型がクラスで有り パブリックで有り 抽象クラスで無い事を確認し 更に Type.Interface メソッドに依り IPlugin インターフェイスを実装して居る事を確認する 此等総ての条件に当て嵌る場合に有効なプラグインと判断する ( 拠って 此の例では 1 つのアセンブリファイルに複数のプラグインクラスを定義する事が出来る ) 此処迄来れば 後は簡単で有る PluginInfo クラスを使ったメインのクラス ( エントリポイント ) のサンプルは 下記の様に成る 猶 下記は コンソールアプリケーションと仕て作成し 実行ファイルの在るフォルダ ( 編集時には bin/debug フォルダ ) 直下に plugins と謂う名前のフォルダが在り 其の中にプラグインファイル ( 前述の CountChars.dll 等 ) が在る物とする 亦 前述の Plugin.dll と PluginInfo.dll の参照が追加されて居る物とする -6-

7 Imports System Visual Basic Module PluginHost < STAThread( )> _ Public Sub Main( ) Dim Pis( ) As PluginInfo.PluginInfo = PluginInfo.PluginInfo.FindPlugins( ) ' 総てのプラグインクラスのインスタンスを作成する Dim Plugins( Pis.Length - 1 ) As Plugin.IPlugin For I As Integer = 0 To ( Plugins.Length - 1 ) Plugins( I ) = Pis( I ).CreateInstance( ) Next ' 有効なプラグインを表示し 使用するプラグインを選ばせる Dim Number As Integer = -1 Do For I As Integer = 0 To ( Plugins.Length - 1 ) Console.WriteLine( "0:1", I, Plugins( I ).Name ) Next Console.WriteLine( " 使用するプラグインの番号を入力して下さい :" ) Try Number = Integer.Parse( Console.ReadLine( )) Catch End Try Loop While Number < 0 OrElse Number >= Pis.Length Console.WriteLine( Plugins( Number ).Name + " を使用する " ) ' プラグインに渡す文字列の入力を促す Console.WriteLine( " 文字列を入力して下さい :" ) Dim S As String = Console.ReadLine( ) ' プラグインの Run メソッドを呼び出して結果を取得する Dim R As String = Plugins( Number ).Run( S ) ' 結果の表示 Console.WriteLine( " 結果 :" ) Console.WriteLine( R ) Console.ReadLine( ) End Sub End Module using System; C# namespace MainApplication public class PluginHost [ STAThread ] static void Main( string[ ] args ) -7-

8 // インストールされて居るプラグインを調べる PluginInfo[ ] pis = Plugin.PluginInfo.FindPlugins( ); // 総てのプラグインクラスのインスタンスを作成する Plugin.IPlugin[ ] plugins = new Plugin.IPlugin[ pis.length ]; for ( int i = 0; i < plugins.length; i++ ) plugins[ i ] = pis[ i ].CreateInstance( ); // 有効なプラグインを表示し 使用するプラグインを選ばせる int number = -1; do for ( int i = 0; i < plugins.length; i++ ) Console.WriteLine( "0:1", i, plugins[ i ].Name ); Console.WriteLine( " 使用するプラグインの番号を入力して下さい :" ); try number = int.parse( Console.ReadLine( )); catch Console.WriteLine( " 数字を入力して下さい " ); while ( number < 0 number >= pis.length ); Console.WriteLine( plugins[ number ].Name + " を使用する " ); // プラグインに渡す文字列の入力を促す Console.WriteLine( " 文字列を入力して下さい :" ); string str = Console.ReadLine( ); // プラグインの Run メソッドを呼び出して結果を取得する string result = plugins[ number ].Run( str ); // 結果の表示 Console.WriteLine( " 結果 :" ); Console.WriteLine( result ); Console.ReadLine( ); 前述の通り メインアプリ実行前に実行ファイルの有るフォルダに plugins と謂うフォルダを作り 其処に先程作成した CountChars.dll をコピーして置く 此れで CountChars.dll をプラグインと仕て認識出来る 色々なプラグインを作成し plugins フォルダに格納して プラグインを選択する事が出来る様に仕て 動作確認して欲しい 基本的なプラグイン機能の実現方法は以上で有る 併し より高度なプラグイン機能が必要な場合には 此れ丈では不十分かも知れない 例えば プラグインからメインアプリにフィードバックし度い等 プラグインからメインアプリケーションの機能 ( メソッド ) を呼び出し度いケースも有る 其の様な場合には プラグインを使う側で実装するインターフェイスを定義すると謂う方法が有る 続いては Windows アプリケーションのサンプルと仕て 此の方法を紹介する -8-

9 Windows アプリケーションでプラグイン機能を実現する 此処からは更に実用的な例と仕て Windows アプリケーションでプラグイン機能を実現する方法を紹介する 此処では 具体的に プラグインの使用出来る簡単なエディタを作成する事にする 飽く迄 プラグイン機能を説明する事が目的なので エディタは思い切り単純にし フォームに RichTextBox と MainMenu 而巳を配置する事にする プラグインからエディタの RichTextBox コントロールにアクセスする事に依り プラグインの機能が果たせる様にする インターフェイスを定義する 前回と同じ様に 先ずプラグインのクラスが実装す可きインターフェイスを定義する 今回はプラグインのインターフェイスに加えて プラグインを使用するホストの側が実装す可きインターフェイスも定義する事にする ホストの為のインターフェイスでは プラグインのホストと仕て必要な機能をメンバと仕て定義し プラグインから此のメンバを通してホストにアクセス出来る様にする 具体的には プラグインから指定されたメッセージをホストで表示する為のメソッドと ホストの RichTextBox コントロールを取得する為のプロパティ 更にホストのメインフォームを取得する為のプロパティを定義する事にする 其れでは 実際に此等のインターフェイスを作成する事にする 前回と同様 クラスライブラリと仕て作成する為 Visual Studio ではクラスライブラリのプロジェクトを作成し (Plugin と謂う名前で作成して居る ).NET SDK では /target:library コンパイラオプションを使用する 亦 アセンブリファイル名は Plugin.dll とする 更に今回は Windows アプリケーションを扱う為 System.Windows.Forms.dll を参照に追加する ( 参照に追加するには Visual Studio.NET の場合は ソリューションエクスプローラの 参照設定 を.NET SDK の場合は /reference コンパイラオプションを使用する ) コードは 下記の様に成る IPlugin インターフェイスがプラグインの為のインターフェイスで IPluginHost インターフェイスがプラグインのホストの為のインターフェイスで有る Imports System Imports System.Windows.Forms Visual Basic Namespace Plugin ' プラグインで実装するインターフェイス Public Interface IPlugin ' プラグインの名前 ReadOnly Property Name( ) As String ' プラグインのバージョン ReadOnly Property Version( ) As String ' プラグインの説明 ReadOnly Property Description( ) As String ' プラグインのホスト Property Host( ) As IPluginHost ' プラグインを実行する Sub Run( ) End Interface -9-

10 ' プラグインのホストで実装するインターフェイス Public Interface IPluginHost ' ホストのメインフォーム ReadOnly Property MainForm( ) As Form ' ホストの RichTextBox コントロール ReadOnly Property RichTextBox( ) As RichTextBox ' ホストでメッセージを表示する ' 引数は Plugin: メソッドを呼び出すプラグイン Msg: 表示するメッセージ Sub ShowMessage( ByVal Plugin As IPlugin, ByVal Msg As String ) End Interface End Namespace C# using System; using System.Windows.Forms; namespace Plugin // プラグインで実装するインターフェイス public interface IPlugin // プラグインの名前 string Name get; // プラグインのバージョン string Version get; // プラグインの説明 string Description get; // プラグインのホスト IPluginHost Host get; set; // プラグインを実行する void Run( ); // プラグインのホストで実装するインターフェイス public interface IPluginHost // ホストのメインフォーム Form MainForm get; // ホストの RichTextBox コントロール RichTextBox RichTextBox get; // ホストでメッセージを表示する // 引数は plugin: メソッドを呼び出すプラグイン msg: 表示するメッセージ void ShowMessage( IPlugin plugin, string msg ); -10-

11 IPlugin は 前回と比べ プラグインのバージョンと説明を取得する為のプロパティが新たに追加され 更に Run メソッドもパラメータ 戻り値が無く成った 亦 IPluginHost を設定 取得する為のプロパティも加えられて居る プラグインを作成する 次に IPlugin インターフェイスを実装したプラグインのクラスを作成する 此処では RichTextBox 内の文字数を表示するプラグイン (CountChars クラス ) を作成して観る事にする プラグインも前回と同様に クラスライブラリと仕て作成し Plugin.dll を参照に追加する 亦 System.Windows.Forms.dll も参照に追加する 出力するアセンブリファイル名は CountChars.dll とする (Visual Studio.NET の Visual Basic の場合は プロジェクトのプロパティの ルート名前空間 が空白に成って居る物とする デフォルトではプロジェクト名と成って居るので 変更する必要が有る ) CountChars クラスのコードは下記の様に成る Imports System Visual Basic Public Class CountChars Implements Plugin.IPlugin Private _host As Plugin.IPluginHost ' IPlugin のプロパティメンバ ( プラグインの名前 ) Public ReadOnly Property Name( ) As String Implements Plugin.IPlugin.Name Return " 文字数取得 " End ' IPlugin のプロパティメンバ ( プラグインのバージョン ) Public ReadOnly Property Version( ) As String Implements Plugin.IPlugin.Version ' 自分自身の Assembly を取得し バージョンを返す Dim Asm As System.Reflection.Assembly = _ System.Reflection.Assembly.ExecutingAssembly( ) Dim Ver As System.Version = Asm.Name( ).Version Return Ver.ToString( ) End ' IPlugin のプロパティメンバ ( プラグインの説明 ) Public ReadOnly Property Description( ) As String Implements Plugin.IPlugin.Description Return " エディタで編集中の文章の文字数を表示する " End ' IPlugin のプロパティメンバ ( プラグインのホスト ) Public Property Host( ) As Plugin.IPluginHost Implements Plugin.IPlugin.Host -11-

12 Return Me._host End Set( ByVal value As Plugin.IPluginHost ) Me._host = value End Set ' IPlugin のメソッドメンバ (RichTextBox の文字数を表示する ) Public Sub Run( ) Implements Plugin.IPlugin.Run Dim Msg As String = String.Format( " 文字数 : 0 文字 ", _ Me._host.RichTextBox.Text.Length ) Me._host.ShowMessage( Me, Msg ) End Sub End Class C# using System; namespace CountChars // 文字数を表示する為のプラグイン public class CountChars : Plugin.IPlugin private Plugin.IPluginHost _host; // IPlugin のプロパティメンバ ( プラグインの名前 ) public string Name get return " 文字数取得 "; // IPlugin のプロパティメンバ ( プラグインのバージョン ) public string Version get // 自分自身の Assembly を取得し バージョンを返す System.Reflection.Assembly asm = System.Reflection.Assembly.ExecutingAssembly( ); System.Version ver = asm.name( ).Version; return ver.tostring( ); // IPlugin のプロパティメンバ ( プラグインの説明 ) public string Description get return " エディタで編集中の文章の文字数を表示する "; // IPlugin のプロパティメンバ ( プラグインのホスト ) public Plugin.IPluginHost Host -12-

13 get return this._host; set this._host = value; // IPlugin のメソッドメンバ (RichTextBox の文字数を表示する ) public void Run( ) string msg = string.format( " 文字数 : 0 文字 ", this._host.richtextbox.text.length ); this._host.showmessage( this, msg ); 特に説明を要さないと思う Run メソッドでは IPluginHost オブジェクトから RichTextBox にアクセスし 文字数を取得し IPluginHost の ShowMessage メソッドで結果をホストで表示して居る ウィンドウを表示するプラグインの作成 次に Windows アプリケーションらしく ウィンドウを表示するプラグインを作成して観る事にする 此処では 検索 ウィンドウに依り RichTextBox から指定された文字列を検索するプラグインを作る ( エディタと仕ては プラグインで処理する機能では無いが ) 先ず CountChars クラスと同様 クラスライブラリのプロジェクトを作成し ( 名前は FindString とする ) Plugin.dll と System.Windows.Forms.dll を参照に追加する (System.Windows.Forms.dll は今追加しなくても Windows フォームの追加 でプロジェクトにフォームを追加すれば 自動的に追加される ) 続いて Windows フォームの追加 でプロジェクトにフォーム (FindForm) を追加し 検索 ウィンドウを作成する 此のフォームに配置するコントロール 及び 変更するプロパティ ( 或いは イベント ) の一覧は下記の様に成る コントロールの種類 プロパティ プロパティの設定値 フォーム Name FindForm Text 検索 AcceptButton btnfind CancelButton btnclose FormBorderStyle FixedToolWindow ShowInTaskbar false テキストボックス Name txtfindstring Text 空白 ボタン1 Name btnfind Text 次を検索 DialogResult OK Click イベント btnfind_click -13-

14 ボタン2 Name btnclose Text 閉じる DialogResult Cancel Click イベント btnclose_click チェックボックス1 Name chkwholeword Text 単語単位で検索する チェックボックス2 Name chkmatchcase Text 大文字小文字を区別する チェックボックス3 Name chkreverse Text 上へ検索する 更に FindForm クラスに下記のコードを追加し 指定された RichTextBox を検索出来る様にする Imports System.Windows.Forms Visual Basic Public Class FindForm ' 検索するリッチテキストボックス Friend RTB As RichTextBox ' ボタン ( 次を検索 ) がクリックされた時の処理 Private Sub btnfind_click( ByVal sender As System.Object, ByVal e As System.EventArgs ) _ Handles btnfind.click ' 検索オプションの決定 Dim Finds As RichTextBoxFinds = RichTextBoxFinds.None If chkwholeword.checked Then Finds = Finds Or RichTextBoxFinds.WholeWord End If If chkmatchcase.checked Then Finds = Finds Or RichTextBoxFinds.MatchCase End If If chkreverse.checked Then Finds = Finds Or RichTextBoxFinds.Reverse End If ' 検索範囲の決定 Dim StartPos, EndPos As Integer If Not chkreverse.checked Then StartPos = Me.RTB.SelectionStart + Me.RTB.SelectionLength EndPos = -1 If StartPos >= Me.RTB.TextLength Then MessageBox.Show( " 検索が完了しました ", " 検索 " ) Return End If Else StartPos = 0 EndPos = Me.RTB.SelectionStart If EndPos <= 0 Then MessageBox.Show( " 検索が完了しました ", " 検索 " ) Return End If End If -14-

15 ' 検索 If Me.RTB.Find( txtfindstring.text, StartPos, EndPos, Finds ) < 0 Then MessageBox.Show( " 検索が完了しました ", " 検索 " ) Else Me.RTB.Focus( ) End If End Sub ' ボタン ( 閉じる ) がクリックされた時の処理 Private Sub btnclose_click( ByVal sender As System.Object, ByVal e As System.EventArgs ) _ Handles btnclose.click Me.Close( ) End Sub End Class C# // 下記は Class ブロック而巳を記述 // using System.Windows.Forms; がソースファイルの一番上に書かれて居る物とする // 検索するリッチテキストボックス internal RichTextBox RichTextBox; // ボタン ( 次を検索 ) がクリックされた時の処理 private void btnfind_click( object sender, System.EventArgs e ) // 検索オプションの決定 RichTextBoxFinds finds = RichTextBoxFinds.None; if ( this.wholeword.checked ) finds = RichTextBoxFinds.WholeWord; if ( this.matchcase.checked ) finds = RichTextBoxFinds.MatchCase; if ( this.reverse.checked ) finds = RichTextBoxFinds.Reverse; // 検索範囲の決定 int startpos, endpos; if (!this.reverse.checked ) startpos = this.rtb.selectionstart + this.rtb.selectionlength; endpos = -1; if ( startpos >= this.rtb.textlength ) MessageBox.Show( " 検索が完了しました ", " 検索 " ); return; else startpos = 0; endpos = this.rtb.selectionstart; if ( endpos <= 0 ) MessageBox.Show( " 検索が完了しました ", " 検索 " ); return; // 検索 -15-

16 if ( this.rtb.find( findstring.text, startpos, endpos, finds ) < 0 ) MessageBox.Show( " 検索が完了しました ", " 検索 " ); else this.rtb.focus( ); // ボタン ( 閉じる ) がクリックされた時の処理 private void btnclose_click( object sender, System.EventArgs e ) this.close( ); 次に 此のフォームを表示させるプラグインクラス (FindString) を作成する コードは 下記の様に成る Imports System Imports System.Windows.Forms Visual Basic Public Class FindString Implements Plugin.IPlugin Private Hst As Plugin.IPluginHost Private Frm As FindForm ' IPlugin のプロパティメンバ ( プラグインの名前 ) Public ReadOnly Property Name( ) As String Implements Plugin.IPlugin.Name Return " 文字列の検索 " End ' IPlugin のプロパティメンバ ( プラグインのバージョン ) Public ReadOnly Property Version( ) As String Implements Plugin.IPlugin.Version ' 自分自身の Assembly を取得し バージョンを返す Dim Asm As System.Reflection.Assembly = _ System.Reflection.Assembly.ExecutingAssembly( ) Dim Ver As System.Version = Asm.Name( ).Version Return Ver.ToString( ) End ' IPlugin のプロパティメンバ ( プラグインの説明 ) Public ReadOnly Property Description( ) As String Implements Plugin.IPlugin.Description Return " 編集中の文章から指定された文字列を検索する " End ' IPlugin のプロパティメンバ ( プラグインのホスト ) Public Property Host( ) As Plugin.IPluginHost Implements Plugin.IPlugin.Host Return Hst -16-

17 End Set( ByVal value As Plugin.IPluginHost ) Hst = value End Set ' IPlugin のメソッドメンバ (RichTextBox の文字数を表示する ) Public Sub Run( ) Implements Plugin.IPlugin.Run ' フォームが表示されて居ればアクティブにして終了 If Not ( Me.Frm Is Nothing ) AndAlso _ Not Me.Frm.IsDisposed Then Me.Frm.Activate( ) Return End If ' 検索ウィンドウを作成して表示 Me.Frm = New FindForm Me.Frm.RTB = Me.Hst.RichTextBox Me.Frm.Owner = Me.Hst.MainForm Me.Frm.Show( ) End Sub End Class using System; using System.Windows.Forms; C# namespace FindString public class FindString : Plugin.IPlugin private Plugin.IPluginHost _host; private FindForm _mainform; // IPlugin のプロパティメンバ ( プラグインの名前 ) public string Name get return " 文字列の検索 "; // IPlugin のプロパティメンバ ( プラグインのバージョン ) public string Version get // 自分自身の Assembly を取得し バージョンを返す System.Reflection.Assembly asm = System.Reflection.Assembly.ExecutingAssembly( ); System.Version ver = asm.name( ).Version; return ver.tostring( ); // IPlugin のプロパティメンバ ( プラグインの説明 ) -17-

18 public string Description get return " 編集中の文章から指定された文字列を検索する "; // IPlugin のプロパティメンバ ( プラグインのホスト ) public Plugin.IPluginHost Host get return _host; set _host = value; // IPlugin のメソッドメンバ (RichTextBox の文字数を表示する ) public void Run( ) // フォームが表示されて居ればアクティブにして終了 if ( this._mainform!= null &&!this._mainform.isdisposed ) this._mainform.activate( ); return; // 検索ウィンドウを作成して表示 this._mainform = new FindForm( ); this._mainform.richtextbox = this._host.richtextbox; this._mainform.owner = this._host.mainform; this._mainform.show( ); Run メソッドで FindForm を表示して居る丈で 特に問題は無いと思う ( 表示する前に RichTextBox の設定と オーナーウィンドウの設定を行って居る ) メインアプリケーションの作成 愈々 プラグインを使用するホストのアプリケーションを作成する事にする ホストアプリケーションは Windows アプリケーションプロジェクトと仕て作成し ( 名前は MainApplication とする ) Plugin.dll を参照に追加する フォームには RichTextBox と メニュー 更に メッセージを表示する為の StatusBar コントロールを配置する 変更するフォームのプロパティと フォームに配置するコントロールと其のプロパティ ( 然して イベント ) の一覧を下記に示す 此処から -18-

19 コントロールの種類 プロパティ プロパティの設定値 フォーム Name Form1 Menu mainmenu Load イベント Form1_Load リッチテキストボックス Name mainrichtextbox Dock Fill ステータスバー Name mainstatusbar メインメニュー Name mainmenu メニューアイテム1 Name menuplugins Text プラグイン (&P) Click イベント menuplugin_click メニューアイテム2 Name menuhelp Text ヘルプ (&H) メニューアイテム3 Name menuabout Text バージョン情報 (&A)... Click イベント menuabout_click 次に前回で作成した PluginInfo クラスをプロジェクトに追加する 但し CreateInstance メソッドで IPluginHost オブジェクトを IPluginHost.Host プロパティに設定する様に変更して居る PluginInfo クラスは下記の様なコードで有る Imports System Visual Basic ' プラグインに関する情報 Public Class PluginInfo Private _location As String Private _classname As String ' PluginInfo クラスのコンストラクタ ' 引数は path: アセンブリファイルのパス cls: クラスの名前 Private Sub New(ByVal path As String, ByVal cls As String) Me._location = path Me._className = cls End Sub ' アセンブリファイルのパス Public ReadOnly Property Location() As String Return _location End ' クラスの名前 Public ReadOnly Property ClassName() As String Return _classname End -19-

20 ' 有効なプラグインを探す ( 戻り値は 有効なプラグインの PluginInfo 配列 ) Public Shared Function FindPlugins() As PluginInfo() Dim plugins As New System.Collections.ArrayList 'IPlugin 型の名前 Dim ipluginname As String = _ Type(Plugin.IPlugin).FullName ' プラグインフォルダ Dim folder As String = _ System.IO.Path.DirectoryName( _ System.Reflection.Assembly. _ ExecutingAssembly().Location) folder += " plugins" If Not System.IO.Directory.Exists(folder) Then Throw New ApplicationException( _ " プラグインフォルダ """ + folder + _ """ が見付かりませんでした ") End If '.dll ファイルを探す Dim dlls As String() = _ System.IO.Directory.Files(folder, "*.dll") Dim dll As String For Each dll In dlls Try ' アセンブリと仕て読み込む Dim asm As System.Reflection.Assembly = _ System.Reflection.Assembly.LoadFrom(dll) Dim t As Type For Each t In asm.types() ' アセンブリ内の総ての型に付いて ' プラグインと仕て有効か調べる If t.isclass And t.ispublic And _ Not t.isabstract And _ Not (t.interface(ipluginname) Is Nothing _ ) Then 'PluginInfo をコレクションに追加する plugins.add(new PluginInfo(dll, t.fullname)) End If Next t Catch End Try Next dll ' コレクションを配列にして返す Return CType(plugins.ToArray( _ Type(PluginInfo)), PluginInfo()) End Function 'FindPlugins ' プラグインクラスのインスタンスを作成する ( 戻り値は プラグインクラスのインスタンス ) Public Function CreateInstance( _ ByVal host As Plugin.IPluginHost) As Plugin.IPlugin Try -20-

21 ' アセンブリを読み込む Dim asm As System.Reflection.Assembly = _ System.Reflection.Assembly.LoadFrom(Me.Location) ' クラス名からインスタンスを作成する Dim plugin As Plugin.IPlugin = _ CType(asm.CreateInstance(Me.ClassName), _ Plugin.IPlugin) 'IPluginHost の設定 plugin.host = host Return plugin Catch End Try End Function End Class C# using System; namespace MainApplication // プラグインに関する情報 public class PluginInfo private string _location; private string _classname; // PluginInfo クラスのコンストラクタ // 引数は path: アセンブリファイルのパス cls: クラスの名前 private PluginInfo(string path, string cls) this._location = path; this._classname = cls; // アセンブリファイルのパス public string Location get return _location; // クラスの名前 public string ClassName get return _classname; // 有効なプラグインを探す ( 戻り値は 有効なプラグインの PluginInfo 配列 ) public static PluginInfo[] FindPlugins() System.Collections.ArrayList plugins = new System.Collections.ArrayList(); //IPlugin 型の名前 string ipluginname = typeof(plugin.iplugin).fullname; // プラグインフォルダ -21-

22 string folder = System.IO.Path.DirectoryName( System.Reflection.Assembly.ExecutingAssembly().Location); folder += " plugins"; if (!System.IO.Directory.Exists(folder)) throw new ApplicationException( " プラグインフォルダ "" + folder + " " が見付かりませんでした "); //.dll ファイルを探す string[] dlls = System.IO.Directory.Files(folder, "*.dll"); foreach (string dll in dlls) try // アセンブリと仕て読み込む System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom(dll); foreach (Type t in asm.types()) // アセンブリ内の総ての型に付いて // プラグインと仕て有効か調べる if (t.isclass && t.ispublic &&!t.isabstract && t.interface(ipluginname)!= null) //PluginInfo をコレクションに追加する plugins.add( new PluginInfo(dll, t.fullname)); catch // コレクションを配列にして返す return (PluginInfo[]) plugins.toarray(typeof(plugininfo)); // プラグインクラスのインスタンスを作成する ( 戻り値は プラグインクラスのインスタンス ) public Plugin.IPlugin CreateInstance(Plugin.IPluginHost host) try // アセンブリを読み込む System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom(this.Location); // クラス名からインスタンスを作成する Plugin.IPlugin plugin = (Plugin.IPlugin) asm.createinstance(this.classname); //IPluginHost の設定 -22-

23 plugin.host = host; return plugin; catch return null; IPluginHost インターフェイスは フォームクラスで実装する 亦 プラグインの読込と メニューへの表示はフォームの Load イベントハンドラで行い メニューを選択する事に依り プラグインを実行出来る様にする 下記に変更を加えたフォームクラスの主要部分のコード (Windows フォームデザイナが作成したコードを除く ) を示す Visual Basic Public Class Form1 Inherits System.Windows.Forms.Form Implements Plugin.IPluginHost '( 省略 ) 'IPlugin の配列 Dim plugins() As Plugin.IPlugin 'IPluginHost の実装 Public ReadOnly Property MainForm() As Form _ Implements Plugin.IPluginHost.MainForm Return Me End Public ReadOnly Property RichTextBox() As RichTextBox _ Implements Plugin.IPluginHost.RichTextBox Return mainrichtextbox End Public Sub ShowMessage(ByVal plugin As Plugin.IPlugin, _ ByVal msg As String) _ Implements Plugin.IPluginHost.ShowMessage ' ステータスバーに表示する mainstatusbar.text = msg End Sub ' メインフォームの Load イベントハンドラ Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' インストールされて居るプラグインを探す -23-

24 Dim pis As PluginInfo() = PluginInfo.FindPlugins() ' プラグインのインスタンスを取得する Me.plugins = New Plugin.IPlugin(pis.Length - 1) Dim i As Integer For i = 0 To (Me.plugins.Length) - 1 Me.plugins(i) = pis(i).createinstance(me) Next i ' プラグインを実行するメニューを追加する Dim plugin As Plugin.IPlugin For Each plugin In Me.plugins Dim mi As New MenuItem(plugin.Name, _ AddressOf menuplugin_click) Me.menuPlugins.MenuItems.Add(mi) Next plugin End Sub ' プラグインのメニューがクリックされた時 Private Sub menuplugin_click(byval sender As Object, _ ByVal e As System.EventArgs) Handles menuplugins.click Dim mi As MenuItem = CType(sender, MenuItem) ' クリックされたプラグインを探す '( 同じ名前のプラグインが複数有ると困った事に...) Dim plugin As Plugin.IPlugin For Each plugin In Me.plugins If mi.text = plugin.name Then ' クリックされたプラグインを実行する plugin.run() Return End If Next plugin End Sub ' プラグインのバージョンを表示する Private Sub menuabout_click(byval sender As Object, _ ByVal e As System.EventArgs) Handles menuabout.click Dim msg As String = " インストールされて居るプラグイン " + vblf _ + "( 名前 : 説明 : バージョン )" + vblf + vblf Dim plugin As Plugin.IPlugin For Each plugin In Me.plugins msg += String.Format("0 : 1 : 2" + vblf, _ plugin.name, plugin.description, plugin.version) Next plugin MessageBox.Show(msg) End Sub End Class C# namespace MainApplication public class Form1 : System.Windows.Forms.Form, Plugin.IPluginHost //( 省略 ) -24-

25 //IPlugin の配列 Plugin.IPlugin[] plugins; //IPluginHost の実装 public Form MainForm get return (Form) this; public RichTextBox RichTextBox get return mainrichtextbox; public void ShowMessage(Plugin.IPlugin plugin, string msg) // ステータスバーに表示する mainstatusbar.text = msg; // メインフォームの Load イベントハンドラ private void Form1_Load(object sender, System.EventArgs e) // インストールされて居るプラグインを探す PluginInfo[] pis = PluginInfo.FindPlugins(); // プラグインのインスタンスを取得する this.plugins = new Plugin.IPlugin[pis.Length]; for (int i = 0; i < this.plugins.length; i++) this.plugins[i] = pis[i].createinstance(this); // プラグインを実行するメニューを追加する foreach (Plugin.IPlugin plugin in this.plugins) MenuItem mi = new MenuItem(plugin.Name, new EventHandler(menuPlugin_Click)); this.menuplugins.menuitems.add(mi); // プラグインのメニューがクリックされた時 private void menuplugin_click( object sender, System.EventArgs e) MenuItem mi = (MenuItem) sender; // クリックされたプラグインを探す //( 同じ名前のプラグインが複数有ると困った事に...) foreach (Plugin.IPlugin plugin in this.plugins) if (mi.text == plugin.name) -25-

26 // クリックされたプラグインを実行する plugin.run(); return; // プラグインのバージョンを表示する private void menuabout_click( object sender, System.EventArgs e) string msg = " インストールされて居るプラグイン n" + "( 名前 : 説明 : バージョン ) n n"; foreach (Plugin.IPlugin plugin in this.plugins) msg += string.format("0 : 1 : 2 n", plugin.name, plugin.description, plugin.version); MessageBox.Show(msg); 此のメインアプリケーションを実行させるには 実行ファイルの有るフォルダに plugins と謂うフォルダを作り 其処に前に作成したプラグイン CountChars.dll と FindString.dll をコピーする 旨く行くと プラグイン メニューに 文字数取得 と 文字列の検索 が追加され プラグインの機能を呼び出す事が出来る様に成る 以上でプラグイン機能を実現させる方法に関する解説は終了で有る 此処で紹介した知識を応用する事に依り より複雑なプラグインも作成出来ると思う -26-

プラグイン

プラグイン プラグイン プラグイン詳細 2 ~ プラグイン機能を持つテキストエディタの作成 ~ はじめに Adobe Photoshop や Becky! Internet Mail 等のアプリケーションでは プラグイン ( 又は アドイン エクステンション 等 ) と呼ばれるプログラムをインストールする事に依り 機能を拡張する事が出来る 此の記事では此の様なプラグイン機能を持ったアプリケーションの作り方を プラグイン対応のテキストエディタを作成する事に依り

More information

ICONファイルフォーマット

ICONファイルフォーマット グラフィックス 画像フォーマットエンコーダパラメータ 様々なフォーマットで画像を保存 Bitmap クラスを用いる事でビットマップ JPEG GIF PNG 等様々なフォーマットの画像を読み込み操作する事が出来る 更に Bitmap クラスや Graphics コンテナを用いて描画処理等を施したイメージをファイルに保存する事も出来る 此の時 読み込めるフォーマット同様に保存するフォーマットを選択する事が出来る

More information

グラフィックス

グラフィックス グラフィックス PictureBox の Image プロパティに関する良く有る勘違い PictureBox に画像を表示する方法と仕て PictureBox の Image プロパティを使う方法と Graphics の DrawImage メソッドを使う方法が有るが 此の 2 つの方法を混同し 正しく理解して居ない事が多い様で有る 例えば 下記に列挙する様な状況が 此れに該当する 1.PictureBox

More information

データアダプタ概要

データアダプタ概要 データベース TableAdapter クエリを実行する方法 TableAdapter クエリは アプリケーションがデータベースに対して実行出来る SQL ステートメントやストアドプロシージャで TableAdapter で型指定されたメソッドと仕て公開される TableAdapter クエリは 所有るオブジェクトのメソッドと同様に 関連付けられたメソッドを呼び出す事に依り実行出来る TableAdapter

More information

ファイル操作

ファイル操作 ファイル操作 TextFieldParser オブジェクト ストリームの読込と書込 Microsoft.VisualBasic.FileIO 名前空間の TextFieldParser オブジェクトは 構造化テキストファイルの解析に使用するメソッドとプロパティを備えたオブジェクトで有る テキストファイルを TextFieldParser で解析するのは テキストファイルを反復処理するのと同じで有り

More information

NotifyIconコントロール

NotifyIconコントロール NotifyIcon コントロール システムトレイ ( タスクトレイ ) にアイコンを表示する.NET Framework 2.0 以降の場合は 後述の 2 を観て欲しい Outlook や MSN Messenger 等の様に Windows アプリケーションではシステムトレイ ( タスクトレイ ステータス領域等とも呼ばれる ) にアイコンを表示して アプリケーションの状態を示したり アプリケーションのフォームを表示したりする為のショートカットとして利用する事が出来る.NET

More information

MISAO with WPF

MISAO with WPF System.AddIn を利用した アプリケーション拡張 - アドインの開発 - JZ5( 松江祐輔 )@ わんくま http://katamari.jp http://katamari.wankuma.com 2008/9/13 What s System.AddIn System.AddIn 名前空間 Visual Studio Orcus から利用可能 アプリケーションに拡張機能を提 供 なんかいろいろ特長が?

More information

Userコントロール

Userコントロール User コントロール 初めてのユーザーコントロールの作成 作成したクラスは他のプログラムで再利用出来る為 同じコードを何度も繰り返し作成する必要が無い コントロールも 複数のプロジェクトで再利用出来るクラスで有る 同じユーザーインターフェイスを何度も繰り返してデザインすると謂う経験は 恐らく誰でも有る 例えば 姓と名を入力する為の TextBox コントロールを追加した後で 両方を組み合わせてフルネームを作成するコードを追加する等の作業で有る

More information

VB.NET解説

VB.NET解説 Visual Basic.NET 印刷編 目次 印刷の概要... 2 印刷の流れ... 2 標準の Windows フォーム印刷ジョブの作成... 3 実行時に於ける Windows フォーム印刷オプションの変更... 3 Windows フォームに於ける接続されたプリンタの選択... 4 Windows フォームでのグラフィックスの印刷... 5 Windows フォームでのテキストの印刷...

More information

正規表現応用

正規表現応用 正規表現 正規表現を使って文字列が或る形式と一致するか調べる 指定された正規表現のパターンと一致する対象が入力文字列内で見付かるか何うかを調べるには Regex クラスの IsMatch メソッドを使用する 此処では IsMatch メソッドを使った例を幾つか紹介する 猶 正規表現のパターンと一致する個所を探し 見付かれば 其の箇所を抽出する方法は 正規表現を使って文字列を検索し 抽出する で紹介して居る

More information

プロセス間通信

プロセス間通信 プロセス間通信 プロセス間通信 (SendMessage) プロセス間通信とは 同一コンピューター上で起動して居るアプリケーション間でデータを受け渡し度い事は時々有る Framework には リモート処理 と謂う方法でデータの受け渡しを行なう方法が有る 此処では 此の方法では無く 従来の方法の API を使用したプロセス間通信を紹介する 此の方法は 送信側は API の SendMessage で送り

More information

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るので 此れを利用して音声認識を行うサンプルを紹介する 下記の様な Windows フォームアプリケーションを作成する エディタを起動すると

More information

ファイル操作-インターネットキャッシュ

ファイル操作-インターネットキャッシュ ファイル操作 インターネット一時ファイルの保存場所 インターネットキャッシュ インターネット一時ファイルの保存場所は Internet Explorer の場合 下記の手順で確認する事が出来る 1.[ ツール ] [ インターネットオプション ] でインターネットオプション画面のダイアログを表示させる 2.[ 全般 ] タブで [ インターネット一時ファイル ] グループの [ 設定 ] をクリックすると

More information

ファイル操作-バイナリファイル

ファイル操作-バイナリファイル ファイル操作 バイナリ ファイルを読み書きする バイナリファイル ( 即ちテキストファイル以外のファイル ) を読み書きするには FileStream クラス (System.IO 名前空間 ) を利用する FileStream クラスはファイル用のストリームをサポートするクラスで有り Stream クラス (System.IO 名前空間 ) の派生クラスの 1 つで有る 基本的には コンストラクタで指定したファイルのストリームに対して

More information

ハッシュテーブル

ハッシュテーブル ハッシュテーブル ハッシュテーブル ( 連想配列 ) を使う ハッシュテーブルとは キー (key) と値 (value) のペアを保持して居るコレクションで有る 通常の配列がインデックス番号に依り各値 ( 各要素 ) にアクセス出来るのに比べて ハッシュテーブルでは インデックス番号の代わりにキーを用いて 其の各値にアクセスする事が出来る キーと 其のキーから連想される ( 対応付けられて居る )

More information

ListViewコントロール

ListViewコントロール ListView コントロール ListView コントロールへ項目を追加 本稿では.NET Framework の標準コントロールで有る ListView コントロール (System.Windows.Forms 名前空間 ) を活用する為に ListView コントロールにデータを追加する方法を紹介する ListView コントロールは データ項目をアイコン表示や詳細表示等に依り一覧表示する為の物で

More information

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~ .NET プログラマー早期育成ドリル VB 編 付録文法早見表 本資料は UUM01W:.NET プログラマー早期育成ドリル VB 編コードリーディング もしくは UUM02W:.NET プログラマー早期育成ドリル VB 編コードライティング を ご購入頂いた方にのみ提供される資料です 資料内容の転載はご遠慮下さい VB プログラミング文法早見表 < 基本文法 > 名前空間の定義 Namespace

More information

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値 ( 此処では 10) を代入する丈でなく 2 の配列変数の宣言の様に ブレース { } の中にカンマ区切りで初期値のリストを記述し 配列の各要素に初期値を代入出来る様に成った

More information

Microsoft Excel操作

Microsoft Excel操作 Microsoft Excel 操作 Excel ファイルにアクセス リフレクションを利用したレイトバインディングで Excel ファイルを操作 Visual Basic なら CreatObject 関数を使用して 暗黙の遅延バインディングを利用する事に依り 簡単にに実現出来る Excel の操作も C# で実現するには 少し面倒臭い事に成る 事前バインディングでも実装する事も出来るが 事前バインディングだと

More information

ウィンドウ操作 応用

ウィンドウ操作 応用 Win32API 関数 ウィンドウ操作 ウィンドウ名でトップレベルウィンドウ ( 親を持たないウィンドウ ) のハンドルを取得 メモ帳や電卓等のウィンドウ名でトップレベルウィンドウ ( 親を持たないウィンドウ ) のハンドルを取得する方法を 下記に示す Visual Basic Imports System.Runtime.InteropServices Public Class WindowFromWindowName

More information

ファイル監視

ファイル監視 ファイル操作 ファイルやディレクトリの監視 FileSystemWatcher クラス.NET Framework のクラスライブラリには ファイルやディレクトリの作成 変更 削除を監視する為の FileSystemWatcher クラスが System.IO 名前空間に用意されて居る ( 但し Windows 98/Me では利用出来ない ) 此れを利用すると 特定のディレクトリにファイルが作成された

More information

DAOの利用

DAOの利用 DAO VB2005 で DAO を使用して Excel のデータを取得 Visual Basic 6.0 Dim DB As DAO.Database Dim RS As DAO.Recordset Dim xlfilename As String Dim xlsheetname As String xlfilename = Form1.StatusBar1.Panels(12) & Dir(Form1.StatusBar1.Panels(12)

More information

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略       - LogisticaTRUCKServer-Ⅱ(SQLServer 版 ) 距離計算サーハ API.NET DLL WindowsForm サンフ ルフ ロク ラム - 1 - LogisticaTRUCKServer-Ⅱ 距離計算サーハ.NET DLL WindowsForm VisualBasic での利用方法 LogisticaTRUCKServer-Ⅱ 距離計算.NET DLLのサンプルプログラムの参照サンフ

More information

ルーレットプログラム

ルーレットプログラム ルーレットプログラム VB 2005 4 プログラムの概要 カジノの代表的なゲーム ルーレット を作成する 先ず GO! ボタンをクリックすると ルーレット盤上をボールが回転し 一定時間経過すると ボールが止まり 出目を表示するプログラムを作成する 出目を 1~16 大小 偶数奇数の内から予想して 予め設定した持ち点の範囲内で賭け点を決め 賭け点と出目に依り 1 点賭けの場合は 16 倍 其他は 2

More information

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略       - LogisticaTRUCKServer-Ⅱ(SQLServer 版 ) 距離計算サーハ API.NET DLL WebForms ASP.NET サンフ ルフ ロク ラム - 1 - LogisticaTRUCKServer-Ⅱ 距離計算サーハ.NET DLL WebForm ASP.NET VisualBasic での利用方法 LogisticaTRUCKServer-Ⅱ 距離計算.NET

More information

1.dll の配置場所配布時はプログラムの実行フォルダーへ配置 2. 開発環境での使用 プロジェクトのプロパティーで [USBPIO.dll] を参照追加してください 開発環境 dll ファイルの場所 VB.Net Express Edition 境プロジェクトのフォルダ \bin\release VB.Netebugビルドの場合プロジェクトのフォルダ \bin\debug VB.Net Releaseビルドの場合プロジェクトのフォルダ

More information

データベースプログラミング

データベースプログラミング データセットとデータテーブル データセット (DataSet) とは何かに付いて 簡単に説明する データセットとは 典型的な.NET の Windows データベースアプリケーションでは データセットを通じてアプリケーションからデータベースにアクセスする データセットとは 簡単に謂うと データベースから取得したレコードをメモリ上に持つ為の入れ物で有る 例えば データベースからレコードを取得し 其れをグリッドコントロールに表示する様な

More information

Prog2_12th

Prog2_12th 2018 年 12 月 13 日 ( 木 ) 実施クラスの継承オブジェクト指向プログラミングの基本的な属性として, 親クラスのメンバを再利用, 拡張, または変更する子クラスを定義することが出来る メンバの再利用を継承と呼び, 継承元となるクラスを基底クラスと呼ぶ また, 基底クラスのメンバを継承するクラスを, 派生クラスと呼ぶ なお, メンバの中でコンストラクタは継承されない C# 言語では,Java

More information

構造体

構造体 構造体 Byte 配列 構造体とコピーする方法 構造体とバイト配列の変換を行うには System.Runtime.InteropServices 名前空間をインポートして置くと便利で有る Imports System.Runtime.InteropServices using System.Runtime.InteropServices; 下記の 3 種類の構造体にバイト配列の値を格納した場合に付いて検証する

More information

VB実用Ⅲ⑩ フリーデータベースⅡ

VB実用Ⅲ⑩ フリーデータベースⅡ MySQL の利用 MySQL の ODBC(MyODBC) テキストでは MySQL Connector/ODBC(mysql-connector-odbc-3.51.14-win32.msi) をインストールした場合に付いて解説して居るが 此処では MyODBC(MyODBC-3.51.10-x86-win-32bit.msi) をインストールし myodbc-3.51.06-conv_ujis.zip

More information

Prog2_15th

Prog2_15th 2019 年 7 月 25 日 ( 木 ) 実施メニューメニューバーとコンテクストメニュー Visual C# では, メニューはコントロールの一つとして扱われ, フォームアプリケーションの上部に配置されるメニューバーと, コントロール上でマウスを右クリックすると表示されるコンテクストメニューとに対応している これ等は選択するとメニューアイテムのリストが表示されるプルダウンメニューと呼ばれる形式に従う

More information

ブロック パニック

ブロック パニック ブロックパニック VB 2005 9 プログラムの概要 壁が迫り来る不思議な空間のオリジナルゲーム ブロックパニック を作成する スタートボタンをクリックし上下左右の矢印キーで白猿を移動させる スペースキーを押すと 向いて居る方向の壁が後退する 左右の壁が合わさると ゲームは終了する 一般的に 実用プログラムに比較するとゲームプログラムは 高度なテクニックを要求される事が多い 此処では ゲームプログラムを作成する事に依り

More information

印刷

印刷 印刷 Windows フォームに於ける印刷のサポート Windows フォームに於ける印刷では 主に ユーザーに依る印刷を可能にする為の PrintDocument コンポーネントと Windows オペレーティングシステムを常用して居るユーザーに見慣れたグラフィカルインターフェイスを提供する為の PrintPreviewDialog コントロール PrintDialog コンポーネント 及び PageSetupDialog

More information

mySQLの利用

mySQLの利用 MySQL の利用 インストール インストール時に特に注意点は無い 本稿記述時のバージョンは 6.5.4 で有る (2017 年 11 月現在では 6.10.4 で https://dev.mysql.com/downloads/connector/net/6.10.html よりダウンロード出来る ) 参照設定 インストールが終了すれば Visual Studio で参照の設定を行う 参照の設定画面で

More information

64bit環境で32bitコンポーネントの利用

64bit環境で32bitコンポーネントの利用 64bit 環境 64bit 環境で 32bit コンポーネントの利用 Windows 7 や 8 の出現で 愈々 64bit 環境も普及し始めて来た 64bit 環境に於いては 64bit 用に最適化された 64bit コンポーネントを使用するのが本筋で有ろうが 64bit 環境に於いても 32bit コンポーネントを使用し度い場合が有る 過去の遺物 ( レガシ ) と仕て切り捨てるのではなく 良い物は良い物と仕て有効利用すると謂う観点から

More information

VB実用⑦ エクセル操作Ⅰ

VB実用⑦ エクセル操作Ⅰ VB でエクセル操作 Ⅰ VB 2005 7 プログラムの概要 事務処理に於いて Microsoft 社のスプレッドシートソフトで有るエクセルは データベースソフトで有るアクセスと共に 業界標準 (De Facto Standard) で有ると謂う事が出来る 此処では 其のエクセルを Visual Basic から操作する方法を 重点的に学ぶ 今回は Visual Basic でエクセルを利用する基本と成るオブジェクト生成と

More information

アプリケーション

アプリケーション アプリケーション開発 お絵かきソフト 目次 お絵かきソフトを作ってみよう... 3 絵を書く枠と場所表示を作る... 3 マウスの動きを見てみよう... 4 絵を書く準備をします... 5 絵を書くとはどういうことか... 5 では線画を描いてみよう... 6 マウスをドラッグしたときだけ線を引くように改造する... 8 お絵かきソフトを作ってみよう 今回は お絵かきソフトを作ってみましょう マウスを動かして線画を書いてみましょう

More information

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスがインスタンス化されてからメソッドに成る ) # 関数 def test_func(): print('call test_func') #

More information

モグラ叩きプログラム

モグラ叩きプログラム プログラミングの有用性 VB 2005 1 醒めよ!! 遣り度い事を遣るには 先ず 遣らなければ成らない事を遣る! 現に 其の事に気付いて 日々 其の 遣らなければ成らない事 に邁進して居る人間が 居る 寧ろ 其れを愉しんでさえ居る者も居る 然して 着実に 世の中が必要とする技 術を身に付けて行って居る者が居る 併し 何が 遣らなければ成らない事 なのか解らない場合は 現実に対応出来る技術力 を持ち

More information

メール送信

メール送信 メール Visual Basic 2005 でのメール送信 1 System.Net.Mail 名前空間の MailMessage クラスと SmtpClient クラスを使用 メール送信機能の有るアプリケーションを作成する必要が有る場合が有る 其処で 此処では メールの送信機能を持つアプリケーション ( 図 1) の作成方法に付いて紹介する 図 1 Visual Basic 6.0 では Microsoft

More information

スレッド操作 タイマー

スレッド操作 タイマー スレッド操作 タイマー System.Windows.Forms.Timer Windows フォームの Timer は 一定の間隔でイベントを発生させるコンポーネントで有る 此のコンポーネントは Windows フォーム環境で使用する サーバー環境に適したタイマが必要な場合は 後述の System.Timers.Timer を使用する イベントの発生する間隔は ミリ秒単位で Interval プロパティで設定しする

More information

構造体

構造体 構造体 構造体を取り扱うには System.Runtime.InteropServices 名前空間をインポートして置くと便利で有る Imports System.Runtime.InteropServices using System.Runtime.InteropServices; C# ユーザー定義型 (Type) と構造体 (Structure) 6.0 のユーザー定義型 (Type) を.NET

More information

エクセル詳細 アドイン

エクセル詳細 アドイン Microsoft Excel 詳細 アドイン Excel アドインの作成 Excel アドインを作成するには ブックを作成し コード ユーザー設定ツールバー 及び メニュー項目を追加して Excel アドインファイルとして保存する 1. 新しいブックを作成してコードを追加し ユーザー設定ツールバー 又は メニューバーを作成する 2.[ ファイル ] メニューの [ プロパティ ] をクリックする

More information

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター 平成 30 年度 プログラミング研修講座 岩手県立総合教育センター 目次第 1 章プログラミングについて 1 ソフトウェアの働き 1 2 プログラミング言語 1 3 主なプログラミング言語の歴史 2 第 2 章 Visual Basic について 1 Visual Basic とは 3 2.NET Framework の環境 3 3 Visual Basic と.NET Framework の関係

More information

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma HOW DO I ソケットで通信を行うには ここでは以下の手順で説明します ソケットクライアントを作成するデータを送信するデータを受信するソケットクライアントを使用する ソケットクライアントを作成する 1. このコンテンツのサポートファイルの Start フォルダから "UDPClient" プロジェクトを開きます 2. クライアントを動作させるため コンピューターで簡易 TCP/IP サービスを有効にする必要があります

More information

Microsoft Word - DT-5100Lib_Manual_DotNet.doc

Microsoft Word - DT-5100Lib_Manual_DotNet.doc CASSIOPEIA DT-5100 シリーズ.NET ライブラリマニュアル 概要編 Ver 3.00 変更履歴 No Revision 更新日項改訂内容 1 1.00 03/1/20 初版初版発行 2 3.00 05/03/15 3 カシオライブラリマニュアル (.NET) 開発マニュアルの 1~4 をひとまとめ にしました 4 5 6 7 8 9 10 11 12 13 14 15 16 17

More information

Microsoft Word - VB.doc

Microsoft Word - VB.doc 第 1 章 初めてのプログラミング 本章では カウントアップというボタンを押すと表示されている値が1ずつ増加し カウントダウンというボタンを押すと表示されている値が1ずつ減少する簡単な機能のプログラムを作り これを通して Visual Basic.NET によるプログラム開発の概要を学んでいきます 1.1 起動とプロジェクトの新規作成 Visual Studio.NET の起動とプロジェクトの新規作成の方法を

More information

VFD256 サンプルプログラム

VFD256 サンプルプログラム VFD256 サンプルプログラム 目次 1 制御プログラム... 1 2.Net 用コントロール Vfd256 の使い方... 11 2.1 表示文字列の設定... 11 2.2 VFD256 書込み前のクリア処理... 11 2.3 書き出しモード... 11 2.4 表示モード... 12 2.5 表示... 13 2.6 クリア... 13 2.7 接続方法 ボーレートの設定... 13 2.8

More information

基礎計算機演習 実習課題No6

基礎計算機演習 実習課題No6 実習課題 No.6 課題は 3 題ある. 課題 6-1 時間内提出 次の実行例のように, 名簿を出力するプログラムをつくりたい. このプログラムでは, まず人数をたずね, 次にその人数分の名前を入力し, それを再びコンソールに出力する. なお, 空の名前が入力されても終了せずにその欄は空欄で出力するものとする. 注意とヒント この課題では,string 型の配列をまず宣言する. このとき, 配列の要素はちょうど名簿に入力する人数分だけを宣言すること

More information

(Microsoft Word \203v\203\215\203O\203\211\203~\203\223\203O)

(Microsoft Word \203v\203\215\203O\203\211\203~\203\223\203O) 21113 Visual Basic を利用したフリーソフト開発 要旨 各自でフリーソフトを作成 インターネット上に公開することを目的とし Visual Basic2008 2010 を使い簡単なアプリの作成に成功した 1. 目的情報化が進んだ現代において 社会に出ていくためにはパソコンの一つや二つ 軽く扱えなければならない さらに 資源の乏しい日本においては今後 情報技術の発展することが望ましいと考える

More information

Java - Visual Editor

Java - Visual Editor Visual Editor で Swing アプリケーションを作成 Swing プログラミングに慣れて居ても ソースコード上丈で思い通りの GUI を作成するのは 可成り骨の折れる作業で有る Visual Editor を使用すれば 試行錯誤し乍ら 非常に簡単に GUI アプリケーションを作成する事が出来る 此処では JFrame を拡張して 簡単なアプリケーションを作成して観る事にする Java

More information

C 資料 電脳梁山泊烏賊塾 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に

C 資料 電脳梁山泊烏賊塾 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に於いては 構造体を定義は下記の様に記述する ( 末尾のセミコロンを忘れない様に ) strust Point int x; int y; 上記の様に定義すれば

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt 独習 Java ( 第 3 版 ) 6.7 変数の修飾子 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 Object クラスと Class クラス 6.7 変数の修飾子 (1/3) 変数宣言の直前に指定できる修飾子 全部で 7 種類ある キーワード final private protected public static transient volatile 意味定数として使える変数同じクラスのコードからしかアクセスできない変数サブクラスまたは同じパッケージ内のコードからしかアクセスできない変数他のクラスからアクセスできる変数インスタンス変数ではない変数クラスの永続的な状態の一部ではない変数不意に値が変更されることがある変数

More information

インベーダープログラム

インベーダープログラム インベーダーゲーム VB 2005 5 プログラムの概要 テレビゲームの流行の魁と成る懐かしのゲーム インベーダー を作成する 先ず FIGHT!! ボタンをクリックすると インベーダーが左右に移動し乍ら 降下して来るので 自機を左右のカーソルキーで移動させ スペースキーでミサイルを発射する インベーダーが 最終ライン迄 降下して 侵略される前に 総てのインベーダーを撃墜しなければ ゲームは終了する

More information

Public Class Class4SingleCall Inherits MarshalByRefObject Public Sub New() End Sub Public Function OneProc(ByVal The As A SC) As A SC Dim The As New A SC The.answer = The.index * 2 + 1000 Return The End

More information

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

Case 0 sqlcmdi.parameters(?tencode).value = Iidata(0) sqlcmdi.parameters(?tenname).value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else Imports MySql.Data.MySqlClient Imports System.IO Public Class Form1 中間省略 Private Sub コマンドテストCToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles コマンドテストCToolStripMenuItem.Click

More information

Prog2_2nd

Prog2_2nd 2018 年 10 月 4 日 ( 木 ) 実施 C# プログラムの基礎 基本構造 1) クラス Visual C# のプログラムの基本単位をクラスと呼ぶ Windows フォームアプリケーションを作 成する際, プロジェクトを作成すると生成されるファイルのうち,Form1.cs を例にとれば, その クラス名は Form1 である クラスは class キーワードを用いて宣言する Form1.cs

More information

ブロック崩し風テニス

ブロック崩し風テニス ぱっくんフィッシング VB 2005 13 プログラムの概要 パーティゲームとして良く知られた釣りゲームです マウスで釣り糸を操作して 開閉する魚の口に餌を垂らし 魚が餌を咥えると 釣り上げ 籠の中に入れます 直ぐに口を開けて 海に逃れる魚 中々餌を離さず 籠に入らない魚と 色々なバリエーションが楽しめます 一般的に 実用プログラムに比較するとゲームプログラムは 高度なテクニックを要求される事が多い

More information

スライド 1

スライド 1 WindowsForm サンプル解説 S2Container.NET, S2Dao.NET コミッタ 藤井宏明 1 S2Container.NET の Examples フォルダに付属する WindowsSample の解説です 概要 アプリケーション アーキテクチャー ソリューション構成 プロジェクト概要 サンプル説明 2 Ⅰ. アプリケーション アーキテクチャー 3 アプリケーション アーキテクチャー

More information

TestDesign for Web

TestDesign for Web 発行日 2012/6/21 発行元 株式会社アープ 本書は Web でのテスト自動化における Test Design の一連の操作方法まとめたものです Test Design のメニューの説明やより詳細な使い方については ユーザーズガイド を参照してください 目次 1. はじめに... 1 2. 環境構築... 2 2.1. Selenium のサイトについて... 2 2.2. Selenium

More information

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加 SharpShooter Reports.Win 基本的な使い方 Last modified on: November 15, 2012 本ドキュメント内のスクリーンショットは英語表記ですが SharpShooter Reports JP( 日本語版 ) では日本語で表示されま す 目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発...

More information

C#の基本

C#の基本 C# の基本 ~ 開発環境の使い方 ~ C# とは プログラミング言語のひとつであり C C++ Java 等に並ぶ代表的な言語の一つである 容易に GUI( グラフィックやボタンとの連携ができる ) プログラミングが可能である メモリ管理等の煩雑な操作が必要なく 比較的初心者向きの言語である C# の利点 C C++ に比べて メモリ管理が必要ない GUIが作りやすい Javaに比べて コードの制限が少ない

More information

D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする ~9,20 仕様 Excel

D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする ~9,20 仕様 Excel D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする 2015.9.19~9,20 仕様 Excel の場合は 処理メニュー選択用の新しいフォームを開き この実行ファイルと同じフォルダにある test.xlsb

More information

VB.NET解説

VB.NET解説 Visual Basic.NET データベース編 目次 ADO.NET の概要... 2 ADO.NET と ADO... 2 ADO.NET の仕組み... 4 ADO.NET の特徴... 7 データアクセスの基本... 8 Windows アプリケーションの開発手順... 8 データ接続の作成... 9 データアダプタとコネクションの作成...10 データセットの作成...14 データアクセスの利用...21

More information

プログラミング基礎I(再)

プログラミング基礎I(再) 山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全

More information

相性占いプログラム

相性占いプログラム 相性占いプログラム VB 2005 1 プログラムの概要 画面上で 男女夫々れの誕生日の月日と血液型をコンボボックスより選択した後 占うボタンをクリックする 相性とアドバイス & ポイントは 血液型と星座の位置に依り 予め或る占術法に基づき作成されたデータをファイルより読み込んで配列に記憶させ 誕生日と血液型に依り算出された評価値に該当するデータを表示する 猶 必要な入力が行われて居ない場合には 警告音を鳴らして

More information

ASP.NET 2.0 Provider Model 概要

ASP.NET 2.0 Provider Model 概要 ASP.NET 2.0 Provider Model 概要 Agenda ASP.NET 2.0 Provider Model とは カスタムプロバイダの実装 まとめ ASP.NET 2.0 Provider Model とは ASP.NET 2.0 のインフラストラクチャ データストアへのアクセスをアプリケーションロジックから分離 データストアの変更に柔軟に対応 Strategy パターン デザインパターンによる意識の共通化

More information

VB

VB .NET.NET Rev.2004.9.1 Session1...1 Session2...23 Session3 Windows...38 Session4 Web...56 1 NUnit...67 Session1 Visual Studio.NET VS.NET.NET Windows Web XML Web VS.NET NUnit Session VS.NET.NET Session Session

More information

GUIプログラムⅣ

GUIプログラムⅣ GUI プログラム Ⅳ 画像指定ウィンドウの生成 ファイル名 :awtimage.java import java.awt.*; import java.awt.event.*; public class awtimage extends Frame // コンポーネントクラスの宣言 Button btnbrowse; Label lblcaption7; TextField txtimage; //

More information

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D GS1-128 の描画 DLL について (ver. 2.2) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される必要があります 使用条件 プリンタの解像度 300dpi 以上 機能 バーコードの基本幅を 1 ドット単位で指定できる

More information

Javaプログラムの実行手順

Javaプログラムの実行手順 戻り値のあるメソッド メソッドには 処理に使用する値を引数として渡すことができました 呼び出し 側からメソッドに値を渡すだけでなく 逆にメソッドで処理を行った結果の値を 呼び出し側で受け取ることもできます メソッドから戻してもらう値のことを もどりち戻り値といいます ( 図 5-4) 図 5-4. 戻り値を返すメソッドのイメージ 戻り値を受け取ることによって ある計算を行った結果や 処理に成功したか失

More information

正規表現詳細

正規表現詳細 正規表現 正規表現言語要素.NET Framework SDK には 包括的な正規表現ツールのセットが用意されて居り 其のツールを使用する事で文字列の作成 比較 修正を効率的に行う 亦 大量のテキストやデータを素早く解析し テキストパターンの検索 削除 置換を行う事が出来る 此処では 正規表現を定義する一連の文字 演算子 及び 構成体に付いて説明する 置換.NET Framework 2 置換構成体は

More information

チア ダンス

チア ダンス チアダンス きょうつうへんすうこうぞうたいせんげん 共通の変数や構造体を宣言する せんたくひょうじ 1. ソリューションエクスプローラで CheerDance.vb を選択し コードの表示をクリックする 2. 次のコードが表示されるので 1の所に 下の囲いのコードを入力する Imports System.IO Public Class frmmain 1 ここに入力する! End Class Private

More information

Microsoft Word -

Microsoft Word - Visual Basic 2005 Express Edition 起動とプロジェクトの新規作成方法 1.1 起動とプロジェクトの新規作成 Visual Basic の起動とプロジェクトの新規作成の方法を Visual Basic 2005 Express Edition で説明します なお バージョンやエディションが異なる場合は 操作方法が若干違います 本節の起動とプロジェクトの新規作成の部分については

More information

WebBrowserコントロール

WebBrowserコントロール WebBrowser コントロール Windows アプリケーションで Web ページを表示.NET Framework 2.0 では HTML 等の Web ページを Windows フォーム上に表示する為の WebBrowser コントロール (System.Windows.Forms 名前空間 ) が新たに追加されて居り 非常に手軽に Web ページの表示が出来る様に成って居る (.NET Framework

More information

Prog1_15th

Prog1_15th 2017 年 7 月 27 日 ( 木 ) 実施 応用プログラム (3) キー検索 コレクションには, ハッシュテーブルと呼ばれるものがある これは, キー (key) と値 (value) とを組として保持しているものである 通常の配列が添字により各要素にアクセス出来るのに比べて, ハッシュテーブルではキーを用いて各値にアクセスすることが出来る キー及びそのキーから連想される値の組を保持していることから,

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プロシージャ プロシージャの種類 Subプロシージャ Functionプロシージャ Propertyプロシージャ Sub プロシージャ Subステートメント~ステートメントで囲まれる 実行はするけど 値は返さない 途中で抜けたいときは Exit Sub を行なう Public Sub はマクロの実行候補に表示される Sub プロシージャの例 Public Sub TestSubProc() Call

More information

Ver.1.1

Ver.1.1 Ver.1.1 B3MLib ライブラリマニュアル / 使用環境 使用環境 Windows XP(SP2 以降 )/Windows Vista/Windows 7 各 32 ビット 64 ビット版 B3MLib.DLL と Extensions.DLL(B3M ライブラリセット ).NET Framework 2.0 以上 Windows XP サービスパック 2 以降 Windows Vista

More information

印刷

印刷 CrystalReport 印刷 概要 レポート作成ツールの利点 データの取得は難しく無い 例えば コードを記述してレコードセットをループし 目的の Windows アプリケーションや Web のアプリケーションに出力出来る.NET Framework 環境では 更に其のデータを Repeater DataList 又は DataGrid 等のコントロールにバインドする事も可能で有る 併し 此のデータを一定のレポート形式で表示するには

More information

DPC-0401

DPC-0401 Interface USB Driver (I/O-CD) DPC-0401 USB 拡張 I/O 用 Windows ドライバ Help for Windows www.interface.co.jp 目次 第 1 章はじめに...3 1.1 概要...3 1.2 各 I/O に対応したドライバ...3 第 2 章製品仕様...4 2.1 基本仕様...4 2.2 製品構成...4 2.3 クラスライブラリの参照方法...5

More information

WebReportCafe

WebReportCafe 1 1. 概要 WebReportCafe for.net では 生成した PDF に VeriSign の不可視電子署名を付加することができます 電子署名を付加する事により 文書の作成者を証明することができ 作成された PDF を改竄することが不可能になります この文書では WebReportCafe for.net で電子署名を付加するために必要な ドキュメントサイン用 Digital ID の取得と必須ファイル作成

More information

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ C# & VB 1 グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラフィックを行うためには Visual Studio の基本操作や C# または VB

More information

With sqlda sqlda に SelectCommand を追加.SelectCommand = New MySqlCommand() With.SelectCommand.CommandType = CommandType.Text.CommandText = "select * from

With sqlda sqlda に SelectCommand を追加.SelectCommand = New MySqlCommand() With.SelectCommand.CommandType = CommandType.Text.CommandText = select * from Imports MySql.Data.MySqlClient Public Class Form1 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Label3.Text = "MySQL のデータ表示と更新のテストを行います メニューから行いたい処理を選択して実行してください

More information

データベースⅠ

データベースⅠ データベース操作プログラム Ⅰ VB 2005 8 プログラムの概要 データベースプログラムを手軽に作成する方法としては Access のフォーム機能を用いる事が 先ず考えられます ウィザードも充実しており 操作を覚えれば簡単に作成する事が出来ます 其れでは VB でデータベースプログラムを作るメリットは何んでしょうか 1 つは Access のフォーム機能に比べ コントロールが充実している事 より自由なデザインが可能です

More information

C 資料 電脳梁山泊烏賊塾 キャスト C++ のキャスト 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する C++ でのキャスト

C 資料 電脳梁山泊烏賊塾 キャスト C++ のキャスト 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する C++ でのキャスト キャスト C++ のキャスト 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する C++ でのキャスト C++ では其のキャストを 3 種類に分類して居る 静的な普通の型変換 (static_cast) 先ずは 1 つ目は 静的な普通の型変換で有る

More information

Oracle Lite Tutorial

Oracle Lite Tutorial GrapeCity -.NET with GrapeCity - SPREAD Creation Date: Nov. 30, 2005 Last Update: Nov. 30, 2005 Version: 1.0 Document Control Internal Use Only Author Hiroshi Ota Change Logs Date Author Version Change

More information

Android Layout SDK プログラミング マニュアル

Android Layout SDK プログラミング マニュアル プログラミングマニュアル Version 1.3.0 用 更新履歴 年月日 バージョン 履歴 2014.09.08 1.2.0.0 新規 (Layout Utilities ユーザーズ ガイド ) 2016.08.16 1.3.0.0 モバイル端末用レイアウトで直線部品と矩形部品に対応 モバイル端末用レイアウトファイルを CLFX から XML へ変更 Layout Print Engine から

More information

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される必要があります 使用条件 プリンタの解像度 300dpi 以上 機能 バーコードの基本幅を 1 ドット単位で指定できる

More information

3D回転体プログラム

3D回転体プログラム 3D 回転体プログラム VB 2005 4 プログラムの概要 入力画面で マウスを用いて 側面より見た平面図を描きます マウスの左ボタンをクリックする事で連続線を描き 右ボタンをクリックすると新しい線を描く事が出来る 側面図が完成すると 回転の基本角度を設定して 確定ボタンをクリックすると 平面図を立体図に座標変換する 各軸の回転角度を設定して 表示ボタンをクリックすると 立体図が表示される 各軸の回転角度を変更して

More information

DEMO1 まずはやってみよう アクティビティをダブルクリック 作成 - プロジェクト C# => Workflow CodeActivity をぽとぺ シーケンシャルと ステートマシン それぞれのコ ンソールアプリ あとライブラリがある びっくりマークは足りていないあかし プロパティをみると判別で

DEMO1 まずはやってみよう アクティビティをダブルクリック 作成 - プロジェクト C# => Workflow CodeActivity をぽとぺ シーケンシャルと ステートマシン それぞれのコ ンソールアプリ あとライブラリがある びっくりマークは足りていないあかし プロパティをみると判別で DEMO1 まずはやってみよう アクティビティをダブルクリック 作成 - プロジェクト C# => Workflow CodeActivity をぽとぺ シーケンシャルと ステートマシン それぞれのコ ンソールアプリ あとライブラリがある びっくりマークは足りていないあかし プロパティをみると判別できます こんなコードを追加 string str = Console.ReadLine(); int

More information

文書閲覧プログラム

文書閲覧プログラム 文書閲覧プログラム C# 2005 4 プログラムの概要 標準的な Windows のを使用して ユーザーに違和感を与えず 文書ファイルを指定し 画面に表示する 亦 ファイルへの保存も可能で有る メニューバーより ファイル をクリックしてドロップダウンメニューを表示し 其の中の項目から 開く を選択して ファイルを開く ダイアログボックスを表示し ファイルを選択する 同じダイアログボックスで 終了

More information

Prog1_6th

Prog1_6th 2019 年 10 月 31 日 ( 木 ) 実施配列同種のデータ型を有する複数のデータ ( 要素 ) を番号付けして, ひとまとまりの対象として扱うものを配列と呼ぶ 要素 point[0] point[1] point[2] point[3] point[4] 配列 配列の取り扱いに関して, 次のような特徴がある 1. プログラム中で用いる配列変数 ( 配列の本体を参照する参照型の変数 ) は必ず宣言しておく

More information

ドライブは安全運転で in 滋賀♪

ドライブは安全運転で in 滋賀♪ 烏賊セーバー VB 2005 71 プログラムの概要 可愛い烏賊が 画面を泳ぐスクリーンセーバーで有る 烏賊の数 背景 ( 黒一色かデスクトップ画面 ) を設定する事が出来る 背景が 黒一色の場合は 単に烏賊が 左右から現れては 反対側に泳いで行く丈だが デスクトップ画面の場合は 徐々に背景が烏賊の形に塗り潰されて行く スクリーンセーバーの本来の目的は ディスプレイの焼き付きを防止する事で有るが 現在では

More information

Msako技術資料 

Msako技術資料  2015/06/29 MsakoAPI プログラミングガイド ( 改訂第 5 版 ) この資料は Msako 4.1.1 MsakoAPI 1.8 以降に適応する Visual Studio のツールボックスに MsakoAPI を加える プログラムに MsakoTranceiver を組み込む Msako と接続する Msako の基本情報を取得する Msako のパラメータを取得 設定する 動体検知のイベントを処理する

More information

XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述する

XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述する XAML Do-It-Yourself シリーズ 第 3 回ベントとトリガー -1- XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述することで ゕプリケーションのユーザーンターフェスを実現していました

More information

目次 はじめに... 3 システムの必要条件... 3 サンプルアプリケーションの作成... 3 手順 手順 手順 手順 手順 手順 終わりに... 23

目次 はじめに... 3 システムの必要条件... 3 サンプルアプリケーションの作成... 3 手順 手順 手順 手順 手順 手順 終わりに... 23 SharpShooter Reports.Silverlight 基本的な使い方 Last modified on: August 16, 2012 本ドキュメント内のスクリーンショットは英語表記ですが SharpShooter Reports JP( 日本語版 ) では日本語で表示されます 目次 はじめに... 3 システムの必要条件... 3 サンプルアプリケーションの作成... 3 手順 1...

More information

グラフィックス 目次

グラフィックス 目次 WPF チュートリアル WPF での Windows フォーム複合コントロールのホスト Windows Presentation Foundation(WPF) は アプリケーションの作成に適した環境を提供する 但し Windows フォームのコードに多くの投資を行った場合は コードを最初から記述し直すよりも WPF アプリケーションのコードの少なくとも一部を再利用する方が効率的で有る 最も一般的なシナリオは

More information

バスケットボール

バスケットボール バスケットボール きょうつうへんすうせんげん 共通の変数を宣言する ひょうじ 1. ソリューションエクスプローラで コードの表示をクリックする つぎひょうじところしたかこにゅうりょく 2. 次のコードが表示されるので 1の所に 下の囲いのコードを入力する Imports System.Runtime.InteropServices Public Class Basketball にゅうりょく 1 ここに入力する!

More information

Java言語 第1回

Java言語 第1回 Java 言語 第 2 回簡単な Java プログラムの作成と実行 知的情報システム工学科 久保川淳司 kubokawa@me.it-hiroshima.ac.jp 簡単な Java プログラム Java プログラムのファイル名 Java プログラムのファイル名命名ルール ファイル名とクラス名は同じでなければならない HelloJava.java public class HelloJava { public

More information

回文作成支援プログラム

回文作成支援プログラム 電光掲示板プログラム VB 2005 1 プログラムの概要 掲示文を入力し 表示開始ボタンをクリックすると 入力した掲示文が 上部の表示域に 右から左へ流れる様に表示される 亦 表示停止ボタンをクリックすると 掲示文の動きが停止する 終了ボタンをクリックすると タイマーを停止し プログラムをメモリから消去して終了する 今回の課題項目 単純変数の宣言 (Private) Windows フォームコントロールの利用

More information