メインコンテンツへスキップ
このセクションでは、.NET 言語で記述されたスクリプトの特性について説明します。
  • オブジェクトのメンバーにアクセスするための追加キーワードは使用されません。たとえば、.NET 言語で記述されたルールでは、ルールのコンテキストは “Context” という名前のパラメーターとして渡されます。
  • .NET アセンブリは、Microsoft .NET Framework 4.0 以上を使用してコンパイルする必要があります。使用する .NET Framework のバージョンは、Visual Studio プロジェクトのプロパティで指定できます。
  • スクリプトおよびグローバルモジュールで使用できる外部アセンブリを追加できます。標準アセンブリとユーザーがコンパイルしたアセンブリの両方を使用できます。追加したアセンブリ内のすべてのクラスは、スクリプトおよびグローバルモジュールで利用できます。詳しくは External Assemblies を参照してください。
  • スクリプトがコンパイルされると、コンパイル済みのスクリプト本体は、そのスクリプトが定義されている場所と同じ場所に保存されます。そのため、.NET スクリプトは他のスクリプトより多くの領域を占有する場合があります。
  • すべての FlexiCapture オブジェクトは COM オブジェクトとして定義されているため、マネージド-アンマネージド間の遷移により、オブジェクトの field に頻繁にアクセスすると .NET スクリプトの動作が遅くなることがあります。
  • FlexiCapture オブジェクトはマルチスレッドをサポートしていません。
  • .NET スクリプトのデバッグには、System.Diagnostics.Debugger.Break メソッドを使用します。
  • .NET スクリプトをデバッグする場合は、デバッグ情報を含む *.pdb ファイルも必要です。このファイルは非常に大きくなる可能性があるため、スクリプトと一緒にプロジェクトに保存することは推奨されません。ただし、.NET スクリプトをデバッグする際は、そのスクリプトが特定のデバッグ情報を使用してコンパイルされるよう指定する必要があります。 Microsoft Visual Studio 2010 を使用している場合は、.NET コードが実行される process に アタッチする こともできます。
  • FlexiCapture スクリプトオブジェクトは ControllerInterop.dll および ShellInterop.dll アセンブリに格納されており、それぞれ ABBYY.FlexiCapture および ABBYY.FlexiCapture.ClientUI 名前空間に属します。これらのアセンブリはプログラムのルートフォルダーにあります。
  • すべての ABBYY FlexiCapture スクリプトオブジェクトには、ABBYY.FlexiCapture および ABBYY.FlexiCapture.ClientUI 名前空間から、それぞれの名前でアクセスできます。例:
ABBYY.FlexiCapture.IDocument document = Batch.Documents[i];>
ABBYY.FlexiCapture.ClientUI.IToolbars toolbars = TaskWindow.MainWindow.Toolbars;
  • “Using” ディレクティブは、コメントや空文字列とともに、スクリプト本体の先頭に記述できます。プログラミング言語と同じ構文が使用されます (C#.NET では using、JScript.NET では Import、VisualBasic.NET では Imports) 。たとえば次のとおりです。
using System.Drawing;
Image img = Image.FromFile( @"D:\2.png" );
FCTools.ShowMessage( img.VerticalResolution.ToString(), false );
実行可能コードの先頭行より前にキーワード “using” がある場合は、スクリプト エディターusing ディレクティブを使用できます。例えば次のようになります。
using ABBYY.FlexiCapture;
using ABBYY.FlexiCapture.ClientUI;
  • .NETスクリプトでは、すべてのグローバルモジュールの関数を、グローバルモジュール名を指定せずに直接呼び出します。 注: Rule Global Script Module および Export Global Script Module で定義されるクラスは、それぞれ異なる名前でなければなりません。そうでない場合、ルールのコードでクラスのインスタンスを作成するとエラーが発生します。
  • 関数のオプションパラメーターの値を指定したくない場合 (オプションパラメーターを持つ関数の場合) 、代わりに System.null または System.Type.Missing を渡す必要があります。
非対話的に実行されるスクリプトでは (つまり、FlexiCapture.exe ではなく FlexiEx.exe プロセスによって実行される場合) 、既定では、“Checking for solution” ウィンドウに FlexiEx.exe プロセスの Debug ボタンは表示されません (ブレークポイントを含むスクリプトの場合) 。このボタンを表示するには、タスクバーの Action Center icon をクリックし、Change Action Center settings → Problem reporting settings → Never check for solutions を選択します。