IPCOCXマニュアル


は じ め に

商品に含まれるもの

  1. CD-ROM
    • Willware.exe
    • Cryptdll.exe(暗号DLL専用・実行環境用セットアップキット)
    • readme.txt
  2. 使用許諾契約書

 


動作環境について

■対応OS

IPCOCXは、以下に示すOSで動作確認を行っております。

Microsoft Windows 95、Microsoft Windows 98、
Microsoft WindowsNT 4.0、Microsoft Windows 2000
Microsoft Windows XP、Microsoft Windows 2003

 

■開発に必要なソフトウェア

IPCOCXをご使用いただくには、以下のいずれかのソフトウェアが必要です。

Microsoft Visual Basic Ver 5.0
Microsoft Visual Basic Ver 6.0
Microsoft Office 2000 (Access、Excel)

IPCOCXは、Microsoft Visual C++ Ver5.0で作成しています。サンプルは、Microsoft Visual Basic Ver 5.0で作成しています。
※ 本製品は日本語環境のみの対応となります。

 


インストール

製品のCD-ROMに含まれているセットアップキット(Willware.exe)をダブルクリックします。

画面にしたがって、インストールを進めて下さい。

1.インストールを始めます。「次へ」をクリックして下さい。

2.使用許諾契約書です。内容に同意される場合は「次へ」をクリックして下さい。

3.インストール先のフォルダを指定します。初期設定でよろしければ「次へ」をクリックして下さい。
別のフォルダを指定したい場合は「参照」をクリックし、フォルダを指定して下さい。

4.インストール中に置換されるファイルのバックアップを作成できます。
そのバックアップファイルの保存先フォルダを指定します。
初期設定でよろしければ「次へ」をクリックして下さい。

5.WILLWALE Components を登録するスタートメニュー又はプログラムマネージャのグループフォルダを指定します。
初期設定では、新規に「WILLWARE Components」の名前でフォルダを作成します。
特に指定する必要がなければ、初期設定をお勧めします。

6.プログラムのコピーを開始します。「次へ」をクリックして下さい。

7.プログラムのコピーをしています。中断する場合は、「キャンセル」をクリックして下さい。

8.インストールが完了しました。「完了」をクリックし、インストールを終了して下さい。


ライセンスの登録

■レジストリファイルから登録する

ライセンスを登録します。製品に含まれているフロッピーディスクのレジストリファイル
(EWXXXXXXXXX.reg)をダブルクリックして下さい。
(「XXXXXXXXX」は、任意の数字がファイル名として付けられています。)

以下のメッセージボックスが表示され、ライセンスがレジストリに登録されます。

 

■手動で登録する

あらかじめ電子メールで通知しているライセンス情報を利用してライセンスを登録する等、レジストリファイルを利用しない場合は、VisualBasic起動後に新規プロジェクトを選択し以下のデザイン画面を開きます。

ツールバーの「プロジェクト」から「コンポーネント」を選択し、「コンポーネント」画面を開きます。次にコントロールタブの一覧からIPCOCXを選択して「OK」をクリックすると、OCXがツールボックスに追加され、アイコンが表示されます。

ツールボックスに追加されたOCXを選択し、フォームにアイコンを貼り付けると、以下の「WILL LICENSE REGISTRATION」画面が表示されます。
ここで、ユーザー名、シリアル番号、キーコードをそれぞれ入力してライセンス登録を行います。

 

■トライアルライセンスから正規ライセンスへの移行

既にトライアルライセンスが登録されている場合には、デザイン画面にあるOCXのプロパティで「バージョン情報」をクリックして下さい。

「WILL LICENSE REGISTRATION」画面が表示されますので、ここで正規ライセンスを入力して下さい。

 

■ライセンス入力時のご注意

※ライセンスが入力できない!?

入力したライセンスにスペースが含まれていないか確認して下さい。
(ライセンスに、スペースは使用していません。)

※登録したライセンスを認識しない!?

ライセンスを登録しても、オブジェクトが新規ライセンスを認識していない場合は、IPCOCXのアイコンを少し動かして下さい。この作業により、オブジェクトにライセンスが記憶されます。

※トライアルライセンスで作成したアプリケーションはどうする!?

既にトライアルライセンスで作成したアプリケーションは、正規ライセンスを登録した後、再コンパイルする必要があります。

 


サンプルを見る

インストールが完了すると、スタートメニューに「WILLWALE Components」が追加されます。

「WILLWALE Components」の「サンプル」を起動すると「WILLWARE Components サンプル」画面が表示されます。
サンプルの起動、またはそれぞれのソースを開くことができます。
但し、ソースを開くにはライセンスが必要です。トライアルライセンス又は、正規ライセンスを登録してご利用下さい。
(ライセンスの登録方法は前項の「ライセンスの登録」をご覧下さい。)

 


サポートについて(無償)

サポートは基本的に電子メールで受け付けております。
サポートは無償でご利用いただけます。

■お問い合わせの前に

サポート作業を円滑に行うために、お問い合わせの際には以下の情報をご用意下さい。
  1. 製品名及びバージョン
  2. 開発環境(OSの種類及びバージョン、サービスパッケージの種類)
  3. 開発ツール及びバージョン
  4. サーバの種類
  5. 問題点
    • (1)エラー内容又は、エラー状況のハードコピー
    • (2)問題点となる部分のサンプルソースコード。

 

■FAQ

弊社ホームページの「サポート」のページで、キーワードを入力してFAQを検索できます。
休業日などサポートの対応が遅れる場合もありますので、まずはこちらをご確認下さい。

 

■お問合せ先

info@will-ltd.co.jp

 


バージョンアップについて(無償)

製品のバージョンアップは、すべて無償です。

 

■バージョンアップ情報の入手方法

バーションアップの情報は、弊社ホームページの新着情報で通知し、
各商品のページの更新履歴で更新内容を掲示致します。

 

■最新バージョンの入手方法

最新バージョンのプログラムは、弊社ホームページ(http://www.will-ltd.co.jp/)のダウンロードのページよりダウンロードすることが出来ます。
ダウンロードするファイルは、以下のバージョンアップの目的により異なりますのでご注意下さい。

●WILLWARE Components(全製品用)セットアップキットを利用してバージョンアップ

ファイル名:「Willware.exe」

WILLWARE Components(全製品用)セットアップキットは全ての製品をインストールするためのものです。
そのため本製品以外の製品及びサンプル、マニュアルも同時にバージョンアップされます。

●各コンポーネント毎のセットアップキットを利用してバージョンアップ

ファイル名:「○○○ocx.exe」

各コンポーネントのファイル(ocx、dll)及び、依存ファイルのみバージョンアップされます。
サンプル及びマニュアルはバージョンアップされませんのでご注意下さい。

 

■バージョンアップをする前に

各セットアップキットを利用してバーションアップをする前に、以下のことにご注意下さい。

●WILLWARE Components(全製品用)セットアップキットを利用して
バージョンアップする場合は、古いバージョンをアンインストールしてから、
最新バージョンをインストールすることをお勧めいたします。

※アンインストールの方法は、スタートメニューから「設定」→「コントロールパネル」
→「アプリケーションの追加と削除」の画面で、「WILLWARE Components」を選択し、
画面の指示に従って行って下さい。

●各コンポーネント毎のセットアップキットを利用してバージョンアップする場合は、
最新バージョンをそのままインストールして下さい。古いファイルは上書きされます。

※弊社製品を複数ご利用いただいている場合、いずれか1つをバーションアップしても他の製品に影響はありません。

 

■バージョンアップの方法

セットアップキットをダブルクリックし、画面の指示に従ってインストールを進めて下さい。

 


再配布について

■作成したアプリケーションの配布時

IPCOCXを利用して作成したアプリケーションの配布時のランタイムライセンスはフリーです。
但し、開発ライセンスの配布はできません。

 

■再配布時に必要な配布可能ファイル

IPCOCXを利用して作成したアプリケーションを配布する場合には、以下のファイルを添付する必要があります。
( )内は推奨バージョンです。

・IPC.OCX
・MFC42.DLL (Ver 4.21.7022)
・MFC42LOC.DLL (Ver 4.21.7022)
・MSVCRT.DLL (Ver 5.00.7022)
・OLEPRO32.DLL (Ver 5.0.4118)
・OLEAUT32.DLL (Ver 2.20.4118)

※セットアップウィザードを使用する場合

IPCOCXをインストールすると、自動的にOCXの依存ファイルが以下のディレクトリにインストールされます。

C:\Windows\system (Windows95, Windows98の場合)
C:\WINNT\system32 (WindowsNT4.0, Windows2000の場合)
C:\Windows\system32 (WindowsXPの場合)

セットアップウィザードを実行すると自動的にアプリケーション配布時に必要なOCX
(内部で利用しているOCX)と、DLLファイルがSetup.lstファイルに追加されます。

 

■著作権

 


プログラミング概要

ここでは、IPCOCXの使い方の概要を述べます。
メソッド、プロパティ、イベントの具体的な内容はそれぞれの項で説明していますので、適宜参照して下さい。

 


1.プロセスの起動および起動したプロセスの終了の検出

IPCOCXのプロセスの起動および起動したプロセスの終了監視機能を使うと以下の機能を実現できます。

    1. プログラムを順番に起動する(バッチ処理)
    2. 起動したプログラムの2重起動を禁止する(メニュー処理)
    3. プロセスの突然死を検出し再起動する(デーモン)

また、起動するプログラムの表示位置の指定や、非表示での起動ができるので、複数のプログラムをあたかも1つのプログラムであるかのように見せることもできます。

 

■プロセスの起動

IPCOCXでプロセスの起動を行なうには以下の2つの方法があります。
    1. ProcessRunメソッドを使用
    2. ProcessExecメソッドを使用
どちらのメソッドもプロセスの起動をするとともに、プロセスの終了を検出するための専用スレッド(プロセス監視スレッド)を生成することができます。
メソッドを実行しているスレッドと、プロセス監視スレッドは同時に平行して動作しますので、メソッドはブロックせずに次の処理を行なうことができます。
プロセス監視スレッドが開始すると、ProcessOpenedイベントが発生します。

■プロセス終了の検出

プロセスの終了を検出するには、ProcessOpenedイベント内またはそれ以降にProcessWaitメソッドを呼び出します。
プロセスの終了の検出を行う直前にProcessWaitingイベントを発生します。
プロセスの終了を検出すると、ProcessDoneイベントが発生します。
プロセス監視スレッドを終了するには、ProcessDoneイベントでProcessCloseメソッドを呼び出します。
※プロセスの起動だけを行い、終了の検出を行なわない場合は、ProcessOpenedイベントで、ProcessCloseメソッドを呼び出します。この呼び出しでプロセス監視スレッドは終了します。

■プロセス監視スレッドの待ち状態の中断

プロセス監視スレッドの待ち状態(WAIT状態)を中断する(IDLE状態にする)場合は、ProcessAbortメソッドを呼び出します。このメソッドが成功すると、ProcessAbortedイベントが発生し、Reason変数に2が格納されます(Abortメソッドによる中断)。
中断後再度終了の検出を行なうには、ProcessWaitメソッドを再度呼び出します。
ProcessWaitメソッドはTimeoutプロパティを参照します。
Timeoutが-1に設定されている場合、プロセス監視スレッドがプロセスの終了を検出するまでイベントは発生しません。
-1以外に設定されている場合は、指定された時間だけ監視を行ない、その時間内にプロセスの終了が検出されない場合は、ProcessAbortedイベントを発生します。このとき、Reason変数に1が格納されます(タイムアウトによる中断)。
プロセス監視スレッドは、コントロールが破棄される場合を除き、自動的には終了しません。
終了するには、ProcessCloseメソッドを呼び出します。
ProcessCloseメソッドを呼び出すとProcessClosedイベントが発生します。
ProcessCloseメソッドは、いつでも呼び出すことができます。

 


2.プロセス間の排他制御(ミューテクス、セマフォー)

排他制御は、1つ以上の資源を複数のプロセスで共有する際に、同時に利用できるプロセスの数を制限するための機能です。
IPCOCXは、ミューテクスまたはセマフォーと呼ばれるWindowsの機構を用いて、排他制御を実現します。

  • ミューテクス
    1つのプロセスにだけ資源へのアクセス権を与える仕組み

  • セマフォー
    同時に複数のプロセスに資源へのアクセス権を与える仕組み

排他制御は椅子取りゲームに似ています。1つの椅子を取り合うときはミューテクス、複数の椅子を取り合うときはセマフォー、というように理解するとよいでしょう。
ミューテクスやセマフォーを用いても実際の資源を管理できるわけではありません。資源に名前をつけてその名前に対するアクセス権があるかどうかを調べる手段を提供するにすぎません。ですから、資源を使うすべてのプログラムが同じ方法で資源の排他制御を行なう必要があります。
ミューテクスやセマフォーを使わずに同様の排他制御を行なうには、例えば、ファイルのロック機構を使うとか、ソケットを用いて排他制御サーバーを作成するなどがありますが、ミューテクスやセマフォーを使う方がはるかに簡単で高速です。

■ミューテクスを利用する

IPCOCXでミューテクスを利用するには、まず、MutexOpenメソッドでミューテクスの利用を宣言します。
この時ミューテクスの状態監視のためのスレッド(ミューテクス状態監視スレッド)が生成され、それと同時にMutexOpenedイベントが発生します。
ミューテクスのアクセス権を確保(LOCK)するにはMutexLockメソッドを呼び出します。
ミューテクス状態監視スレッドはアクセス権の確保を行なう直前に、MutexLockingイベントを発生します。
その後、アクセス権が確保(LOCK)されるまでミューテクス状態監視スレッドは停止しますが、MutexLockメソッドを呼び出したスレッドは実行を続けることができます。
この時はまだ、アクセス権は確保(LOCK)はされていないので、資源へのアクセスは控えてください。
アクセス権が確保(LOCK)されると、MutexLockedイベントが発生します。
このイベントを合図に資源へのアクセスを開始して下さい。
資源へのアクセスが終わったら、MutexUnlockメソッドを呼び出してアクセス権の解放を行なってください。
正常に解放されると、MutexUnlockedイベントが発生します。
アクセス権が確保(LOCK)されるまでミューテクス状態監視スレッドは停止していますが、この状態をMutexAbortメソッドを用いてキャンセルすることができます。キャンセルに成功すると、MutexAbortedイベントが発生して、MutexOpenedイベントが発生した直後の状態に戻ります。このとき、MutexAbortedイベントのReason変数に2が格納されます(Abortメソッドによる中断)。
MutexLockメソッドは、Timeoutプロパティを参照します。
Timeoutが-1に設定されている場合は、アクセス権が確保(LOCK)できるまでミューテクス状態監視スレッドは停止します。
-1以外に設定されている場合は、指定された時間だけ停止し、その時間内にアクセス権が確保(LOCK)できないない場合は、停止状態を解除して、MutexAbortedイベントを発生させます。このとき、Reason変数に1が格納されます(タイムアウトによる中断)。
ミューテクス状態監視スレッドはコントロールが破棄される場合を除き、自動的には終了しません。終了するには、MutexCloseメソッドを呼び出します。MutexCloseメソッドを呼び出すとMutexClosedイベントが発生します。MutexCloseメソッドは、いつでも呼び出すことができます。

■セマフォーを利用する

IPCOCXでセマフォーを利用するには、まず、SemaphoreOpenメソッドでセマフォーの利用を宣言します。この時セマフォーの状態監視のためのスレッド(セマフォー状態監視スレッド)が生成され、それと同時にSemaphoreOpenedイベントが発生します。
セマフォーのアクセス権を得るにはSemaphoreCaptureメソッドを呼び出します。セマフォー状態監視スレッドがアクセス権の確保(CAPTURE)を行なう直前に、SemaphoreCapturingイベントを発生します。
その後、アクセス権が確保(CAPTURE)されるまでセマフォー状態監視スレッドは停止しますが、SemaphoreCaptureメソッドを呼び出したスレッドは実行を続けることができます。
この時はまだ、アクセス権は確保(CAPTURE)はされていないので、資源へのアクセスは控えてください。
アクセス権が確保(CAPTURE)されると、SemaphoreCapturedイベントが発生します。このイベントを合図に資源へのアクセスを開始して下さい。
資源へのアクセスが終わったなら、SemaphoreReleaseメソッドを呼び出してアクセス権の解放を行なってください。正常に解放されると、SemaphoreReleasedイベントが発生します。
アクセス権が確保(CAPTURE)されるまでセマフォー状態監視スレッドは停止していますが、この状態をSemaphoreAbortメソッドを用いてキャンセルすることができます。
キャンセルに成功すると、SemaphoreAbortedイベントが発生して、SemaphoreOpenedイベントが発生した直後の状態に戻ります。このとき、SemaphoreAbortedイベントのReason変数に2が格納されます(Abortメソッドによる中断)。
SemaphoreCaptureメソッドは、Timeoutプロパティを参照します。
Timeoutが-1に設定されている場合は、アクセス権が確保(CAPTURE)できるまでセマフォー状態監視スレッドは停止します。-1以外に設定されている場合は、指定された時間だけ停止し、その時間内にアクセス権が確保(CAPTURE)できないない場合は、停止状態を解除して、SemaphoreAbortedイベントを発生させます。このとき、Reason変数に1が格納されます(タイムアウトによる中断)。
セマフォー状態監視スレッドはコントロールが破棄される場合を除き、自動的には終了しません。終了するには、SemaphoreCloseメソッドを呼び出します。SemaphoreCloseメソッドを呼び出すとSemaphoreClosedイベントが発生します。SemaphoreCloseメソッドは、いつでも呼び出すことができます。
上記のように、確保したアクセス権をそのオブジェクトが必ず解放する方法を同期的使用方法と呼びます。
同期的使用方法を行なうには、SemaphoreSyncModeプロパティをTrueにします。
一方、SemaphoreSyncModeプロパティをFalseにすると、非同期的使用方法になります。
非同期的使用方法にすると、アクセス権を確保するオブジェクトとアクセス権を提供するオブジェクトが分離され、アクセス権を確保するオブジェクトはSemaphoreReleaseメソッドを使うことができなくなります。
アクセス権を提供するオブジェクトは、SemaphoreIncreaseメソッドを使って、アクセス権を与えるプロセスの数を任意に増加させることができます。

3.プロセス間の通知および待合せ制御(コンディション)

複数のプロセスで協調して処理を行なうには、処理の開始通知や完了通知などの通知制御と、相手の完了を待って処理を開始する待ち合わせ制御が必要になります。
コンディションを用いることでこれらを簡単に実現できます。
(セマフォーの非同期的使用法を用いても実現可能です)

■コンディションについて

IPCOCXは、Eventと呼ばれるWindowsの機構を用いて、コンディションを実現します(VBにはイベントという言葉が既に用いられているため、Eventに対する機能をコンディションと呼ぶことにしました)。
コンディションを理解するには、門(ゲート)を想像してください。
門には、閉じている状態と開いている状態があります。門が開いていると通行でき、門が閉じていると門が開くまで待たなければなりません。
コンディションでは、門が開いている状態をOn、閉じている状態をOffと呼びます。Onになると、(VBの)イベントが発生するので、門の状態が変化したことを知ることができます。
コンディションでは、Onにすること、Offにすること、そして、一旦Onにして、すぐにOffにすることができます。

■コンディションを利用する

IPCOCXでコンディションを利用するには、まず、ConditionOpenメソッドでコンディションの利用を宣言します。この時コンディションの状態監視のためのスレッド(コンディション状態監視スレッド)が生成され、それと同時にConditionOpenedイベントが発生します。
コンディションがOnの状態になるのを検出するためにConditionFindメソッドを呼び出します。検出を行なう直前に、ConditionWaitingイベントが発生します。
コンディションがOnの状態を検出すると、ConditionFoundイベントが発生します。
コンディション状態監視スレッドの監視状態(WAIT状態)を中断する(IDLE状態にする)にはConditionAbortメソッドを呼び出します。中断に成功すると、ConditionAbortedイベントが発生して、ConditionOpenedイベントが発生した直後の状態に戻ります。このとき、ConditionAbortedイベントのReason変数に2が格納されます(Abortメソッドによる中断)。
中断後、監視を再開するには、ConditionFindメソッドを再度呼び出します。
ConditionFindメソッドは、Timeoutプロパティを参照します。
Timeoutが-1に設定されている場合は、コンディションがOnである状態が検出されるまで監視を続けます。
-1以外に設定されている場合は、指定された時間だけ監視し、その時間内にコンディションがOnである状態が検出されない場合、監視を中断して、ConditionAbortedイベントを発生させます。このとき、Reason変数に1が格納されます(タイムアウトによる中断)。
コンディション状態監視スレッドは、コントロールが破棄される場合を除き、自動的には終了しません。終了するには、ConditionCloseメソッドを呼び出します。ConditionCloseメソッドを呼び出すとConditionClosedイベントが発生します。ConditionCloseメソッドは、いつでも呼び出すことができます。
コンディションの状態を変化させるには、ConditionOnメソッド、ConditionOffメソッド、ConditionOnAndOffメソッドを使用します。ConditionOnメソッドはコンディションの状態をOnにします。ConditionOffメソッドはコンディションの状態をOffにします。
ConditionOnAndOffメソッドはコンディションを一瞬Onにした後すぐにOffにします。

4.プロセス間のメモリ共有

IPCOCXのメモリ共有は非常に便利でかつ安全です。
メモリへの書き込みおよび読み込みは、内部でMutexを用いて排他的に行われます。
メモリへの書き込みおよび読み出しは、VBの変数をそのまま渡すことができるので、ローカルメモリにアクセスする手軽さです。
IPCOCXではメモリ共有を利用するために4つのメソッドが用意されています。
  1. 共有メモリをオープンする
    IPCObject.SharedMemoryOpen 共有メモリ名,初期値[,確保バイト数]

  2. 共有メモリにデータを保存する
    IPCObject.SharedMemoryWrite  変数

  3. 共有メモリからデータを読み出す
    変数=IPCObject.SharedMemoryRead

  4. 共有メモリをクローズする
    IPCObject.SharedMemoryClose
初期値は、共有メモリが作成されたときの値となります。
すでに共有メモリが作成されている場合、初期値は無視されます。
IPCOCXでは同じ名称の共有メモリには、初期値と同じ型のデータしか保存できません。
SharedMemoryWriteメソッドは与えれられた変数を、初期値と同じ型に変換して保存します。変換できない場合はエラーになります。
SharedMemoryReadメソッドは初期値と同じ型で値を返します。
IPCOCXの共有メモリに保存できるのは、文字列の配列およびバリアントの配列、オブジェクト、Empty値以外のすべての型およびその1次元配列です。

■整数を共有メモリに格納して取り出す例

Dim X As Integer,Y As Interger
IPC1.SharedMemoryOpen "NAME1", 1
X = IPC1.SharedMemoryRead
IPC1.SharedMemoryWrite 2
Y = IPC1.SharedMemoryRead
IPC1.SharedMemoryClose
Debug.Print X,Y

■倍精度実数の配列を共有メモリに格納して取り出す例

共有メモリに格納した配列を取り出すときはバリアント変数で受けてください。

Dim D() As Double, v As Variant
ReDim D(1)
D(0) = 1
D(1) = 2
IPC1.SharedMemoryOpen "NAME2", D
v = IPC1.SharedMemoryRead
IPC1.SharedMemoryClose
Debug.Print v(0), v(1)

バリアントで受けることに関しては、データが期待する型かどうか不明であることに不安を感じるかもしれませんが、SharedMemoryOpenメソッドで型と大きさのチェックを行なっていますので、型が合わないという心配はありません。

■文字列を共有メモリに格納して取り出す例

文字列など可変のデータを取り扱う場合、SharedMemoryOpenメソッドで確保バイト数を指定してください。これを指定しないと初期値を格納するのに必要な大きさの共有メモリしか確保しません。

Dim X As String,Y As String
IPC1.SharedMemoryOpen "NAME3", "",100
X = "TEST"
IPC1.SharedMemoryWrite X
Y = IPC1.SharedMemoryRead
IPC1.SharedMemoryClose
Debug.Print X,Y

SharedMemoryOpenメソッドを用いて、既存の共有メモリを使用する際、確保バイト数が一致しないとエラーとなります。共有を行なうすべてのプロセスでSharedMemoryOpenメソッドの指定は同じになるようにしてください。


5.ディレクトリ変更の検出

ディレクトリ変更の検出は、文字どおりディレクトリおよびディレクトリに含まれるファイルに
変更があった場合に、変更を検出するための機能です。

■ディレクトリ変更の検出機能を利用する

IPCOCXでディレクトリ変更の検出機能を利用するには、まず、NotificationOpenメソッドでディレクトリ変更検出の利用を宣言します。この時ディレクトリ変更の監視のためのスレッド(ディレクトリ変更監視スレッド)が生成され、それと同時にNotificationOpenedイベントが発生します。
ディレクトリ変更の検出を行うためにNotificationFindメソッドを呼び出します。ディレクトリ変更の検出を行う前に、NotificationWaitingイベントが発生します。
監視しているディレクトリに変化があると、NotificationFoundイベントが発生します。

■ディレクトリ変更監視スレッドの待ち状態を中断する

ディレクトリ変更監視スレッドの待ち状態(WAIT状態)を中断する(IDLE状態にする)にはNotificationAbortメソッドを呼び出します。
中断に成功すると、NotificationAbortedイベントが発生して、NotificationOpenedイベントが発生した直後の状態に戻ります。このとき、NotificationAbortedイベントのReason変数に2が格納されます(Abortメソッドによる中断)。
中断後、監視を再開するには、NotificationFindを再度呼び出します。
NotificationFindメソッドは、Timeoutプロパティを参照します。
Timeoutが-1に設定されている場合は、ディレクトリに変化があるまで監視を続けます。
-1以外に設定されている場合は、指定された時間だけ監視し、その時間内にディレクトリに変化がなければ、監視を中断して、NotificationAbortedイベントを発生させます。このとき、Reason変数に1が格納されます(タイムアウトによる中断)。
ディレクトリ変更監視スレッドはコントロールが破棄される場合を除き、自動的には終了しません。終了するには、NotificationCloseメソッドを呼び出します。NotificationCloseメソッドを呼び出すとNotificationClosedイベントが発生します。NotificationCloseメソッドは、いつでも呼び出すことができます。

【共通の注意点】

  1. ミューテクス、セマフォー、共有メモリの資源名称に関する注意

    資源名称のための名前空間を共有しています。
    資源名称には\(円マーク)は含めることができません。
    大文字小文字は区別されます。
    名前の長さは、250バイト以内にしてください。
    (260バイト中10バイトはIPCOCXが予約しています)

  2. 1つのIPCOCXオブジェクト(インスタンス)では下記のメソッドは、
    呼び出した機能が完了するまでほかの機能は呼び出せません。
    複数の機能を同時に使いたい場合は必要な数のIPCOCXオブジェクトを用意してください。

    ProcessRun
    ProcessExec
    MutexOpen
    SemaphoreOpen
    Notification
    ConditionOpen


状態遷移図

Process


Mutex


Semaphore


Condition


Notification


プロパティ

SemaphoreSyncModeプロパティ

■機能

セマフォーのアクセス権の解放を義務付けるかどうかを設定します。

■構文

object.SemaphoreSyncMode[=MODE]
SemaphoreSyncModeプロパティの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■データ型

ブール型(Boolean)
(値) (状 態)
True 初期値。解放は必要
False 解放は不要

■解説

このプロパティがTrueの場合、SemaphoreCaptureメソッドで確保したセマフォーへのアクセス権はSemaphoreReleaseメソッドを用いて解放します。解放しないまま、SemaphoreCaptureメソッドを呼び出すことはできません。
逆に、このプロパティがFalseの場合、SemaphoreCaptureメソッドで確保したセマフォーへのアクセス権はSemaphoreReleaseメソッドを用いて解放することはできません。解放する場合は、SemaphoreIncreaseメソッドを使用します。

 

SharedMemoryLockModeプロパティ

■機能

共有メモリのロック方法を指定します。

■構文

object.SharedMemoryLockMode [=LOCKMODE]
SharedMemoryLockModeプロパティの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■データ型

長整数(Long)
(値) (状 態)
ipcUseMutexLock =0 共有メモリへの読み書きにMutexLockを用いる(初期値)
IpcIgnoreTimeout =1 共有メモリへの読み書きにMutexLockを用いるが、エラーやタイムアウトを無視して読み書きする
ipcNoMutexLock=2 共有メモリへの読み書きにMutexLockを用いない

■解説

共有メモリで排他制御を行なわない場合は、ipcNoMutexLockを設定します。
共有メモリで排他制御を行なうが、タイムアウトやエラーが発生した場合、これを通知せずに強制的に読み書きを行なう場合は、ipcIgnoreTimeoutを設定します。
通常は、ipcUseMutexLockを設定して、共有メモリへの読み書きの際にMutexLockを用いて排他制御を行ないます。初期値は、0(ipcUseMutexLock)。

 

SharedMemoryTimeoutプロパティ

■機能

共有メモリで排他制御を行なう際のタイムアウト時間をミリ秒単位で設定します。
初期値は、10,000(10秒)。
タイムアウトをするとトラップ可能なエラーが発生します。
-1を設定するとタイムアウトしなくなります。

■構文

object.SharedMemoryTimeout [=TIMEOUT]
SharedMemoryTimeoutプロパティの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■データ型

長整数(Long)
(値) (状 態)
-1 タイムアウトしない。(設定しないでください)
0 待たない。
10,000 デフォルトタイムアウト値。(推奨)
タイムアウト値(ミリ秒)。
上記以外 不定。

■解説

このプロパティを参照するメソッドは、SharedMemoryOpen, SharedMemoryRead, SharedMemoryWrite の3つです。

 

Timeoutプロパティ

■機能

メソッド実行時のタイムアウト時間をミリ秒単位で設定します。

■構文

object.Timeout [=TIMEOUT]
Timeoutプロパティの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■データ型

長整数(Long)
(値) (状 態)
-1 初期値。タイムアウトしない。
0 待たない。
タイムアウト値。
上記以外 不定。

■解説

このプロパティは、ProcessWait,MutexLock,SemaphoreCapture,
NotificationFindConditionFindの各メソッドで参照されます。
Timeoutプロパティを-1以外に設定するとタイムアウトイベントが発生します。
タイムアウトイベントは、起動メソッドによって名称が異なります。

 

Licenseeプロパティ,Serialプロパティ

■機能

IPCOCXのライセンス情報です。バージョン情報画面からいつでもライセンスの変更が可能です。
トライアルライセンスから正規ライセンスに切り替えた場合、このプロパティでライセンス情報を確認してください。

■構文

object.Licensee
object.Serial
Licenseeプロパティ,Serialプロパティの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■データ型

文字列(String)

 

Copyrightプロパティ

■機能

IPCOCXのバージョン情報です。
アプリケーション作成者は、アプリケーションプログラムまたはマニュアルに、
ここで表示される文字列を表記するようにしてください。

■構文

object.Copyright
Copyrightプロパティの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■データ型

文字列(String)

 

WorkDirプロパティ

■機能

プログラムを実行する際のカレントディレクトリを指定します。

■構文

object.WorkDir [=WORKING DIRECTORY]
WorkDirプロパティの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■データ型

文字列(String)
(値) (状 態)
"" 初期値。現在のカレントディレクトリのまま。
上記以外 指定したディレクトリをカレントディレクトリにして起動する。

■解説

ProcessRunメソッド,ProcessExecメソッドを使うときに参照されます。
正しいディレクトリを指定しないと、これらのメソッドを呼び出した時点でエラーになります。

 

ShowStyleプロパティ

■機能

プログラムを実行する際の表示方法を指定します。

■構文

object.ShowStyle [=WINDOW STYLE]
ShowStyleプロパティの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■データ型

整数(Short)
(値) (説 明)
IpcHIDE =0 非表示
ipcSHOWNORMAL =1 通常表示
IpcSHOWMINIMIZED =2 アイコン表示
ipcSHOWMAXIMIZED =3 最大表示
IpcSHOWNOACTIVATE =4 非アクティブ通常表示
ipcSHOW =5 通常表示
IpcMINIMIZE =6 非アクティブアイコン表示
ipcSHOWMINNOACTIVE =7 非アクティブアイコン表示
IpcSHOWNA =8 非アクティブアイコン表示
IpcRESTORE =9 通常表示

■解説

ProcessRunメソッド,ProcessExecメソッドを使うときに参照されます。
値は、0から9までの数値を指定することも可能です。 
異なる値で同じ動作をする場合があります。
この値は初期値としてアプリケーションで使われるもので、この指示に従わない場合があります。

 


メソッド

Statメソッド

■機能

現在実行中の待ち状態を示します。

■構文

R = object.Stat()
Statメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■データ型

長整数(Long)
(値) (状 態)
ipcInit =0 指示可能。
ipcOpen =1 (*1)のメソッドが呼び出された。
ipcOpened =2 スレッドが開始した。(*2)のイベントが発生。
ipcDo =3 (*3)のメソッドが呼び出された。
ipcWaiting =4 監視する直前。(*4)のイベントが発生。
ipcDone =5 検出した。(*5)のイベントが発生。
ipcUnDo =6 (*6)のメソッドが呼び出された。
ipcAbort =7 (*7)のメソッドが呼び出された。
ipcClose =8 (*8)のメソッドが呼び出された。
*1: ProcessRun, ProcessExec, MutexOpen, SemaphoreOpen, ConditionOpen, NotificationOpen
*2: ProcessOpened, MutexOpened, SemaphoreOpened, ConditionOpened, NotificationOpened
*3: ProcessWait, MutexLock, SemaphoreCapture, ConditionFind, NotificationFind
*4: ProcessWaiting, MutexLocking, SemaphoreCapturing, ConditionWaiting, NotificationWaiting
*5: ProcessDone, MutexLocked, SemaphoreCaptured, ConditionFound, NotificationFound
*6: MutexUnlock, SemaphoreRelease
*7: ProcessAbort, MutexAbort, SemaphoreAbort, ConditionAbort, NotificationAbort
*8: ProcessClose, MutexClose, SemaphoreClose, ConditionClose, NotificationClose

■解説

ProcessRunメソッド、ProcessExecメソッド、MutexOpenメソッド、SemaphoreOpenメソッド、ConditionOpenメソッド、NotificationOpenメソッドを呼び出すと、状態の変化を検出するために専用のスレッドを作成してそのスレッド上で待機します。
このスレッドが存在する間は、これらのメソッドを平行して呼び出すことはできないようになっています。
Statメソッドはスレッドの状態を示します。
(メソッドが呼び出されている場合は状態が変化していることを示します)

 

ProcessRunメソッド

■機能

プロセスを起動します。

■構文

object.ProcessRun ProgramName[,X,Y]
ProcessRunメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
ProgramName 実行するプログラム名
X 表示開始位置X方向(オプション)
Y 表示開始位置Y方向(オプション)

■解説

プロセスを起動します。起動できたら起動したプロセスの終了を待つための専用スレッド(プロセス監視スレッド)を生成しProcessOpenedイベントを発生します。
ProcessRunメソッドを実行しただけでは、プロセスの終了を検出できません。
プロセスの終了を検出するためには、ProcessOpenedイベントでProcessWaitメソッドを実行します。

 

ProcessExecメソッド

■機能

プロセスを起動します。

■構文

object.ProcessExec ProgramName[,Operation]
ProcessExecメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
ProgramName ファイル名
Operation オペレーション。デフォルトは"Open"

■解説

ファイルに関連付けられたプロセスを起動します。起動できたら起動したプロセスの終了を待つための専用スレッド(プロセス監視スレッド)を作成しProcessOpenedイベントを発生します。ProcessExecメソッドを実行しただけでは、プロセスの終了を検出できません。
プロセスの終了を検出するためには、ProcessOpenedイベントでProcessWaitメソッドを実行します。
オペレーションは、関連付けに関わりがあります。
"open"以外に"print"や"edit"などのオペレーションがサポートされていることがあります。

 

ProcessWaitメソッド

■機能

ProcessRunメソッドまたは、ProcessExecメソッドで起動したプロセスの終了を検出します。

■構文

object.ProcessWait
ProcessWaitメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

ProcessWaitメソッドはProcessRunメソッドまたはProcessExecメソッドで生成されたスレッドにプロセスの終了の監視を依頼します。依頼するとまず、ProcessWaitingイベントが発生します。つぎに監視を開始します。監視をしている間そのスレッドは停止しています。プロセスの終了を検出するとスレッドは再開し、ProcessDoneイベントを発生します。

 

ProcessAbortメソッド

■機能

ProcessWaitメソッドの実行をキャンセルします。

■構文

object.ProcessAbort
ProcessAbortメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

ProcessAbortメソッドはプロセス終了監視状態を解除します。
解除に成功すると、ProcessAbortedイベントが発生します。
解除をしてもプロセス監視スレッドは終了しません。

 

ProcessCloseメソッド

■機能

プロセスの監視スレッドを終了します。

■構文

object.ProcessClose
ProcessCloseメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

プロセス監視スレッドに対し、スレッドを終了するよう要請します。
終了できたなら、ProcessClosedイベントを発生します。

 

ProcessKillメソッド

■機能

起動しているプロセスを強制終了させます。

■構文

object.ProcessKill
ProcessKillメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

ハングアップを検出した場合に使うということを想定しています。
通常の終了には絶対使用しないでください。
ProcessKILLメソッドを使用すると、そのプロセスで確保されていた資源を解放しないまま終了することがあります。

 

MutexOpenメソッド

■機能

ミューテクスをオープンします。

■構文

R = object.MutexOpen (MutexName )
object.MutexOpen MutexName
MutexOpenメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
MutexName ミューテクスの名前

■データ型

ブール型(Boolean)
(R) (戻 値)
True 新規にミューテクスオブジェクトを作成しました。
False 既存のミューテクスオブジェクトをオープンしました。

■解説

MutexNameで指定された名前のミューテクスオブジェクトをオープンます。
指定された名前のミューテクスオブジェクトが無い場合は新規に作成します。
正常にオープンできると、ミューテクスの状態を変更したり監視するためのスレッド(ミューテクス状態監視スレッド)を生成します。ミューテクス状態監視スレッドが生成されると、MutexOpenedイベントが発生します。
MutexOpenメソッドだけでは、ミューテクスのアクセス権は確保されません。MutexOpenedイベントが発生した以降MutexLockメソッドを使ってミューテクスのアクセス権を確保してください。
MutexClosedイベントが発生してミューテクス状態監視スレッドが終了するまで、
このオブジェクトのMutexOpen、SemaphoreOpen、ConditionOpen、ProcessRun、ProcessExec、NotificationOpenの各メソッドを呼び出すことはできません。

 

MutexLockメソッド

■機能

ミューテクスのアクセス権を確保します。

■構文

object.MutexLock
MutexLockメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

MutexOpenメソッドでオープンしたミューテクスオブジェクトのアクセス権を確保します。
MutexLockメソッドは、MutexOpenメソッドで生成した監視スレッドに依頼してアクセス権の確保を行ないます。
ミューテクス状態スレッドがアクセス権の確保の監視に入る直前にMutexLockingイベントを発生します。その後、アクセス権を確保できたら、MutexLockedイベントが発生し、確保できないと、MutexAbortedイベントが発生します。
MutexAbortedイベントは、タイムアウトが発生したとき、またはMutexAbortメソッドが呼ばれたときに発生します。
確保できたかどうかを監視するのはMutexOpenメソッドで生成したスレッドで行いますので、MutexLockメソッドがブロックすることはありません。
MutexLockedイベント発生までは、資源を利用することはできませんが、ほかの処理を行なうことは可能です。

 

MutexUnlockメソッド

■機能

ミューテクスのアクセス権を解放します。

■構文

object.MutexUnlock
MutexUnlockメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

MutexOpenメソッドで生成したスレッドがアクセス権を保持していますので、このスレッドに対し、確保したアクセス権を解放するよう要請します。
解放されたなら、MutexUnockedイベントが発生します。
アクセス権の解放は、ミューテクス状態監視スレッドの終了とは違います。
MutexUnlockedイベントが発生したあとに、再度MutexLockメソッドを使ってアクセス権の確保を試みることができます。

 

MutexAbortメソッド

■機能

ミューテクスのアクセス権の確保をあきらめます。

■構文

object.MutexAbort
MutexAbortメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

MutexLockメソッドを実行しているスレッドに対し、監視を中断するよう要請します。
中断できたなら、MutexAbortedイベントを発生します。
監視の中断をしても、ミューテクス状態監視スレッドが終了するわけではありませんので、MutexAbortedイベントが発生したあとに、再度MutexLockメソッドを使ってアクセス権の確保を試みることができます。
終了させるには、MutexCloseメソッドを呼び出します。

 

MutexCloseメソッド

■機能

ミューテクス状態監視スレッドを終了します。

■構文

object.MutexClose
MutexCloseメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

ミューテクス状態監視スレッドに対し、スレッドを終了するよう要請します。
終了できたなら、MutexClosedイベントを発生します。
終了後は、MutexLock,MutexUnlock,MutexAbort,MutexCloseメソッドを使用できません。

 

SemaphoreOpenメソッド

■機能

セマフォーをオープンします。

■構文

R = object.SemaphoreOpen (SemaphoreName,MaxCount,InitialCount)
object.SemaphoreOpen SemaphoreName SemaphoreName,MaxCount,InitialCount
SemaphoreOpenメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
SemaphoreName セマフォーの名前
MaxCount 許容する最大の同時アクセス数(1以上)
InitialCount 初期に許される同時アクセス数(0以上MaxCount以下)

■データ型

ブール型(Boolean)
(R) (戻 値)
True 新規にセマフォーオブジェクトを作成しました。
False 既存のセマフォーオブジェクトをオープンしました。

■解説

SemaphoreNameで指定された名前のセマフォーオブジェクトをオープンします。
指定された名前のセマフォーオブジェクトが無い場合は新規に作成します。
正常にオープンできると、セマフォーの状態を変更したり監視するためのスレッド(セマフォー状態監視スレッド)を生成します。セマフォー状態監視スレッドが生成されると、SemaphoreOpenedイベントが発生します。
SemaphoreOpenメソッドだけでは、セマフォーのアクセス権は確保されません。SemaphoreOpenedイベントが発生した以降SemaphoreCaptureメソッドを使ってセマフォーのアクセス権を確保してください。
SemaphoreClosedイベントが発生してセマフォー状態監視スレッドが終了するまで、このオブジェクトのMutexOpen、SemaphoreOpen、ConditionOpen、ProcessRun、ProcessExec、NotificationOpenの各メソッドを呼び出すことはできません。

 

SemaphoreCaptureメソッド

■機能

セマフォーのアクセス権を確保します。

■構文

object.SemaphoreCapture
SemaphoreCaptureメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

SemaphoreOpenメソッドでオープンしたセマフォーオブジェクトのアクセス権を確保します。
SemaphoreCaptureメソッドは、SemaphoreOpenメソッドで生成したセマフォー状態監視スレッドに依頼してアクセス権の確保を行ないます。
スレッドがアクセス権の確保の監視に入る直前にSemaphoreCapturingイベントを発生します。その後、アクセス権を確保できたら、SemaphoreCapturedイベントが発生し、確保できないと、SemaphoreAbortedイベントが発生します。
SemaphoreAbortedイベントは、タイムアウトが発生したとき、またはSemaphoreAbortメソッドが呼ばれたときに発生します。
確保できたかどうかを監視するのはSemaphoreOpenメソッドで生成したスレッドで行いますので、SemaphoreCaptureメソッドがブロックすることはありません。
SemaphoreCapturedイベント発生までは、資源を利用することはできませんが、ほかの処理を行なうことは可能です。

 

SemaphoreReleaseメソッド

■機能

セマフォーのアクセス権を解放します。

■構文

object.SemaphoreRelease
SemaphoreReleaseメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

SemaphoreOpenメソッドで生成したスレッドがアクセス権を保持していますので、このスレッドに対し、確保したアクセス権を解放するよう要請します。
解放されたなら、SemaphoreReleasedイベントが発生します。
アクセス権の解放は、セマフォー状態監視スレッドの終了とは違います。
SemaphoreReleaseedイベントが発生したあとに、再度SemaphoreCaptureメソッドを使ってアクセス権の確保を試みることができます。
SemaphoreReleaseメソッドを利用できるのは、SemaphoreSyncModeがTrueの状態でアクセス権を確保した場合だけです。

 

SemaphoreAbortメソッド

■機能

セマフォーのアクセス権の確保をあきらめます。

■構文

object.SemaphoreAbort
SemaphoreAbortメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

SemaphoreCaptureメソッドを実行しているスレッドに対し、監視を中断するよう要請します。
中断できたなら、SemaphoreAbortedイベントを発生します。
監視の中断は、セマフォー状態監視スレッドが終了するわけではありませんので、SemaphoreAbortedイベントが発生したあとに、再度SemaphoreCaptureメソッドを使ってアクセス権の確保を試みることができます。
終了させるには、SemaphoreCloseメソッドを呼び出します。

 

SemaphoreCloseメソッド

■機能

セマフォーの監視スレッドを終了します。

■構文

object.SemaphoreClose
SemaphoreCloseメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

セマフォー状態監視スレッドに対し、スレッドを終了するよう要請します。
終了できたなら、SemaphoreClosedイベントを発生します。
終了後は、SemaphoreCapture,SemaphoreRelease,SemaphoreAbort,SemaphoreCloseメソッドを使用できません。

 

SemaphoreIncreaseメソッド

■機能

指定したセマフォーの許可されるアクセス権を増加します。

■構文

R = object.SemaphoreIncrease(SemaphoreName,Count)
object.SemaphoreIncrease SemaphoreName,Count
SemaphoreIncreaseメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
SemaphoreName セマフォーの名前
Count 増加するアクセス可能なプロセス数(1以上)

■データ型

長整数(Long)
(R) (戻 値)
>0 現在のセマフォーの残り数(Increaseする直前)

■解説

指定したセマフォーに対し同時アクセスできるプロセス数を増加します。
SemahphoreOpenメソッドのmaxcountで指定した数(1以上)までのプロセス数を指定することができます。
maxcountを0にしてSemaphoreOpenしている場合、必ずこのメソッドをどこかでだれかが呼び出すことになります。
また、SemaphoreSyncModeをFalseにした状態で、SemaphoreReCaptureを使用して、与えられたアクセス権を消費していくようなコーディングをしている場合にも、このメソッドで、アクセス権を補っていくことになります。
指定されたセマフォーが存在しない場合、トラップ可能なエラーが発生します。

 

ConditionOpenメソッド

■機能

コンディションをオープンします。

■構文

R = object.ConditionOpen (ConditionName[,AutoOff][,OnStart])
object.ConditionOpen ConditionName[,AutoOff][,OnStart]
ConditionOpenメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
ConditionName コンディションの名前
AutoOff Onの状態の継続モードを指示
True :する
False:しない(初期値)
OnStart Onの状態でコンディションを作成します。
True :On状態で開始
False:Off状態で開始(初期値)

■データ型

ブール型(Boolean)
(R) (戻 値)
True 新規にコンディションオブジェクトを作成しました。
False 既存のコンディションオブジェクトをオープンしました。

■解説

ConditionNameで指定された名前のコンディションオブジェクトをオープンます。
指定された名前のコンディションオブジェクトが無い場合は新規に作成します。
正常にオープンできると、コンディションの状態を監視するためのスレッド(コンディション状態監視スレッド)を生成します。コンディション状態監視スレッドが生成されると、ConditionOpenedイベントが発生します。
ConditionOpenメソッドだけでは、コンディションがonの状態を検出できません。ConditionOpenedイベントが発生した以降ConditionFindメソッドを使ってコンディションがonの状態を検出してください。
ConditionClosedイベントが発生してコンディション状態監視スレッドが終了するまで、このオブジェクトのMutexOpen、SemaphoreOpen、ConditionOpen、ProcessRun、ProcessExec、NotificationOpenの各メソッドを呼び出すことはできません。

 

ConditionFindメソッド

■機能

コンディションがOnの状態を検出します。

■構文

object.ConditionFind
ConditionFindメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

ConditionFindメソッドはConditionOpenメソッドで生成されたスレッドにコンディションの状態の監視を依頼します。依頼するとまず、ConditionWaitingイベントが発生します。つぎに監視を開始します。監視をしている間そのスレッドは停止しています。コンディションがOnの状態を検出するとスレッドは再開し、ConditionFoundイベントを発生します。

 

ConditionAbortメソッド

■機能

ConditionFindメソッドの実行をキャンセルします。

■構文

object.ConditionAbort
ConditionAbortメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

ConditionAbortメソッドはコンディションの監視状態を解除します。
解除に成功すると、ConditionAbortedイベントが発生します。
解除をしてもコンディション状態監視スレッドは終了しません。

 

ConditionCloseメソッド

■機能

コンディション状態監視スレッドを終了します。

■構文

object.ConditionClose
ConditionCloseメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

コンディション状態監視スレッドに対し、スレッドを終了するよう要請します。
終了できたなら、ConditionClosedイベントを発生します。

 

ConditionOnメソッド

■機能

Conditionの状態をOnにします。

■構文

object.ConditionOn()
ConditionOnメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

コンディションをOnの状態にします。
ConditionFindメソッドを実行して、コンディションがOnの状態になるのを待っているオブジェクトでConditionFoundイベントが発生します。

 

ConditionOffメソッド

■機能

Conditionの状態をOffにする。

■構文

object.ConditonOff()
ConditionOffメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

コンディションをOffの状態にします。
コンディションがOffの状態のときConditionFindメソッドを発行すると監視スレッドはOnになるまで待ち状態になります。

 

ConditionOnAndOffメソッド

■機能

conditionの状態を一瞬Onにした後すぐにOffにする。

■構文

object.ConditionOnAndOff()
ConditionOnAndOffメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

コンディションをOnの状態にし、その時ConditionFindで待っているオブジェクトでConditionFoundイベントを発生させます。そしてその直後すぐにOffの状態にします。

 

NotificationOpenメソッド

■機能

ディレクトリの状態変更の検出を開始する。

■構文

object.NotificationOpen  Directory,WatchSubTree,WatchFilter
NotificationOpenメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
Directory 監視するディレクトリパス名。
WatchSubTree サブディレクトリも監視対象にするかどうかのフラグ。
WatchFilter 監視する項目。
(WatchSubTree) (意 味)
True サブディレクトリも監視対象にする。
False サブディレクトリは監視対象にしない。
(WatchFilter) (値) (検出する項目)
ipcFILE_NAME =1 ファイルの追加、削除、名前変更
ipcDIR_NAME =2 ディレクトリの追加、削除、名前変更
ipcATTRIBUTES =4 属性の変更
ipcSIZE =8 ファイルサイズの変更
ipcLAST_WRITE =16 最終更新日時の変更
ipcLAST_ACCESS =32 最終参照日時の変更(NTのみ)
ipcSECURITY =256 セキュリティの変更(NTのみ)

■解説

Directoryで指定したディレクトリの状態変更を検出します。
検出項目は、WatchFilterで指定します。複数の項目を指定するにはそれらの値をORしたものを設定してください。
ディレクトリの状態変更を検出するために専用のスレッド(ディレクトリ変更監視スレッド)を生成します。ディレクトリ変更監視スレッドが生成されると、NotificationOpenedイベントが発生します。
この状態では、ディレクトリの状態変更の検出は行われていますが、通知されません。通知されるには、NotificationFindメソッドを呼び出します。
このメソッドが呼び出されると、まず、NotificationWaitingイベントが発生します。
その後ディレクトリで監視する項目の変更を検出すると、NotificationFoundイベントが発生します。さらに検出を続けるには、再度、NotificationFindメソッドを呼び出してください。
ディレクトリに変化があったことはわかりますが、どのファイルに変化があったかまでは通知されません。

 

NotificationFindメソッド

■機能

ディレクトリの状態変更の通知を待ちます。

■構文

object.NotificationFind
NotificationFindメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

ディレクトリ状態変更の通知を待ちます。
待ち状態になる直前にNotificationWaitingイベントが発生します。
状態変更が検出されると、NotificationFoundイベントが発生します。

 

NotificationAbortメソッド

■機能

ディレクトリの状態変更の通知処理を中断します。

■構文

object.NotificationAbort
NotificationAbortメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

中断に成功すると、NotificationAbortedイベントが発生します。

 

NotificationCloseメソッド

■機能

ディレクトリの状態変更監視スレッドを終了します。

■構文

object.NotificationClose
NotificationCloseメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

ディレクトリの状態変更監視スレッドに対し監視を終了するよう要請します。
終了したならNotificationClosedイベントを発生します。
終了後は、NotificationFind、NotificationAbort、NotificationCloseメソッドは、使用できません。

 

SharedMemoryOpenメソッド

■機能

共有メモリをオープンします。

■構文

R = object.SharedMemoryOpen(SharedMemoryName, DefaultData[,ReserveByteLen])
object.SharedMemoryOpen SharedMemoryName, DefaultData[,ReserveByteLen]
SharedMemoryOpenメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
SharedMemoryName 共有メモリの名前。
DefaultData 初期値。
ReserveByteLen 確保バイト数(オプション)。

■データ型

ブール型(Boolean)
(R) (戻 値)
True 新規に共有メモリを作成した。
False 既存の共有メモリをオープンした。

■解説

共有メモリをSharedMemoryNameという名前で作成します。
作成する共有メモリのサイズは、DefaultDataを格納できます。
サイズまたはReserveByteLenで指定されたサイズの大きい方です。
DefaultDataの型と共有メモリのサイズは共有メモリに記憶され、他のプロセスがこの共有メモリに対しSharedMemoryOpenを発行したときに検査されます。
共有メモリに保存できるのは、文字列の配列およびバリアントの配列、オブジェクト、Empty値以外のすべての型およびその配列です。
すでに作成されている場合は、それをオープンし、共有メモリの型、最大サイズがSharedMemoryOpenの引数の指定と一致するかを調べます。

 

SharedMemoryWriteメソッド

■機能

共有メモリにデータを保存します。

■構文

object.SharedMemoryWrite Data
SharedMemoryWriteメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
Data 保存するデータ。

■解説

SharedMemoryOpenで作成された共有メモリにデータを保存します。 SharedMemoryOpenで作成されたデータ型と同じデータしか保存することはできません。データサイズもチェックされ、共有メモリよりも大きな値は保存できずにエラーになります。
共有メモリに保存できるのは、文字列の配列およびバリアントの配列、オブジェクト、Empty値以外のすべての型およびその配列です。

 

SharedMemoryReadメソッド

■機能

共有メモリからデータを読み出します。

■構文

R = object.SharedMemoryRead()
SharedMemoryReadメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■データ型

バリアント(Variant)

■解説

共有メモリに保存されているデータを読み出し、VARIANT変数に格納して返します。
配列でなければVARIANTではなく格納したときの型の変数で受けることも可能です。
配列データは必ずVARIANT変数で受けてください。
但し、バイト配列は例外で、可変長バイト配列で受けることが可能です。
また、バイト配列は可変長文字列変数でも受けることが可能です。

 

SharedMemoryCloseメソッド

■機能

共有メモリをクローズする。

■構文

object.SharedMemoryClose
SharedMemoryCloseメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■データ型

バリアント(Variant)

 

Win32ErrNumberメソッド

■機能

メソッド内で発生した詳細エラーコードを示します。

■構文

R = object.Win32ErrNumber()
Win32ErrNumberメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■データ型

長整数型(Long)

■解説

0以外の値の場合は、メソッド内で呼び出したWin32 APIのエラーコードを示しています。

 

Win32ErrDescriptionメソッド

■機能

メソッド内で発生した詳細エラーコードを示します。

■構文

R = object.Win32ErrDescription()
Win32ErrDescriptionrメソッドの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■データ型

文字列(String)

■解説

メソッド内で呼び出したWin32 APIのエラーコードの説明です。

 


イベント

ProcessOpenedイベント

■機能

プロセス監視スレッドが開始したときに発生します。

■構文

Private Sub object_ProcessOpened()
ProcessOpenedイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

ProcessRunメソッドおよびProcessShellメソッドの実行によりプロセスのプロセス監視スレッドが開始したときに発生します。

 

ProcessWaitingイベント

■機能

プロセスの終了を検出する直前に発生します。

■構文

Private Sub object_ProcessWaiting()
ProcessWaitingイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

ProcessWaitメソッドの実行によりプロセスの終了の検出を開始する直前に発生します。

 

ProcessDoneイベント

■機能

起動したプロセスが終了した時に発生します。

■構文

Private Sub object_ProcessDone(ByVal Code As Long)
ProcessDoneイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
Code プロセスの終了コードです。

■解説

起動したプロセスの終了を検出するとこのイベントが発生します。

 

ProcessAbortedイベント

■機能

起動したプロセスが終了した時に発生します。

■構文

Private Sub object_ProcessAborted(ByVal Reason As Long)
ProcessAbortedイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
Reason 中断の理由
1: タイムアウトによる中断
2: ProcessAbortメソッドによる中断

■解説

起動したプロセスの終了を検出するのを中断すると発生します。

 

ProcessClosedイベント

■機能

プロセス監視スレッドが終了すると発生します。

■構文

Private Sub object_ProcessClosed(ByVal Code As Long, ByVal Msg As String)
ProcessClosedイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
Code 終了コード
0:正常終了
その他:Win32 APIエラーコード
Msg Win32 APIエラーメッセージ

■解説

プロセス監視スレッドが終了すると発生します。
プロセス監視スレッドが終了するのは、ProcessCloseメソッドが実行されたときまたは待ち状態(WAIT状態)でエラーになったとき、または、コントロールがアンロードされるときですが、コントロールがアンロードされるときは、このイベントは発生しません。

 

MutexOpenedイベント

■機能

ミューテクス状態監視スレッドが生成されると発生します。

■構文

Private Sub object_MutexOpened()
MutexOpenedイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

MutexOpenメソッドの結果ミューテクス状態監視スレッドが生成されると発生します。

 

MutexLockingイベント

■機能

MutexLockメソッドによりミューテクスのアクセス権の確保を行なおうとしています。

■構文

Private Sub object_MutexLocking()
MutexLockingイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

MutexLockメソッドを実行するとその直後に発生します。

 

MutexLockedイベント

■機能

MutexLockメソッドの結果、ミューテクスのアクセス権を確保できたことを通知します。

■構文

Private Sub object_MutexLocked()
MutexLockedイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

このイベントのあとMutexUnlockメソッドを発行するまで、資源へのアクセス権を保持します。

 

MutexUnlockedイベント

■機能

ミューテクスのアクセス権がなくなったことを通知します。

■構文

Private Sub object_MutexUnlocked()
MutexUnlockedイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

MutexUnockメソッドを実行するとその直後に発生します。

 

MutexClosedイベント

■機能

ミューテクス状態監視スレッドが終了すると発生します。

■構文

Private Sub object_MutexClosed(ByVal Code As Long, ByVal Msg As String)
MutexClosedイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
Code 終了コード
0:正常終了
その他:Win32 APIエラーコード
Msg Win32 APIエラーメッセージ

■解説

ミューテクス状態監視スレッドが終了すると発生します。
ミューテクス状態監視スレッドが終了するのは、MutexCloseメソッドが実行されたときまたは待ち状態(WAIT状態)でエラーになったとき、または、コントロールがアンロードされるときですが、コントロールがアンロードされるときは、このイベントは発生しません。

 

SemaphoreOpenedイベント

■機能

SemaphoreOpenメソッドによりセマフォー状態監視スレッドが開始されたことを通知します。

■構文

Private Sub object_SemaphoreOpened()
SemaphoreOpenedイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

このイベントのあとSemaphoreCaptureメソッドを発行することによりセマフォーのアクセス権を確保することができます。

 

SemaphoreCapturingイベント

■機能

SemaphoreCaptureメソッドによりセマフォーを獲得しようとしています。

■構文

Private Sub object_SemaphoreCapturing()
SemaphoreCapturingイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

このイベントのあとセマフォー状態監視スレッドはセマフォーのアクセス権を確保するまで停止します。

 

SemaphoreCapturedイベント

■機能

SemaphoreCaptureメソッドの結果アクセス権を獲得できたことを通知します。

■構文

Private Sub object_SemaphoreCaptured()
SemaphoreCapturedイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

このイベントのあとSemaphoreReleaseメソッドを発行するまで、資源へのアクセス権を保持します。

 

SemaphoreReleasedイベント

■機能

セマフォーのアクセス権がなくなったことを通知します。

■構文

Private Sub object_SemaphoreReleased()
SemaphoreReleasedイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

SemaphoreReleaseメソッドを発行するとこのイベントが発生します。

 

SemaphoreClosedイベント

■機能

セマフォー状態監視スレッドが終了すると発生します。

■構文

Private Sub object_SemaphoreClosed(ByVal Code As Long, ByVal Msg As String)
SemaphoreClosedイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
Code 終了コード
0:正常終了
その他:Win32 APIエラーコード
Msg Win32 APIエラーメッセージ

■解説

セマフォー状態監視スレッドが終了すると発生します。
セマフォー状態監視スレッドが終了するのは、SemaphoreCloseメソッドが実行されたときまたは待ち状態(WAIT状態)でエラーになったとき、または、コントロールがアンロードされるときですが、コントロールがアンロードされるときは、このイベントは発生しません。

 

ConditionOpenedイベント

■機能

ConditionOpenメソッドによりコンディション状態監視スレッドが開始されたことを通知します。

■構文

Private Sub object_ConditionOpened()
ConditionOpenイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

このイベントのあとConditionFindメソッドを発行することによりコンディションがOnの状態を検出することができます。

 

ConditionWaitingイベント

■機能

ConditionFindメソッドによりコンディションがOnの状態を検出しようとしています。

■構文

Private Sub object_ConditionWaiting()
ConditionWaitingイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

このイベントのあとコンディション状態監視スレッドはコンディションがOnの状態を検出するまで停止します。

 

ConditionFoundイベント

■機能

ConditionFindメソッドの結果、コンディションがOnの状態を検出できたことを通知します。

■構文

Private Sub object_ConditionFound()
ConditionFoundイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

ConditionがOnの状態が検出するとこのイベントが発生します。

 

ConditionClosedイベント

■機能

コンディション状態監視スレッドが終了すると発生します。

■構文

Private Sub object_ConditionClosed(ByVal Code As Long, ByVal Msg As String)
ConditionClosedイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
Code 終了コード
0:正常終了
その他:Win32 APIエラーコード
Msg Win32 APIエラーメッセージ

■解説

コンディション状態監視スレッドが終了すると発生します。
コンディション状態監視スレッドが終了するのは、ConditionCloseメソッドが実行されたときまたは待ち状態(WAIT状態)でエラーになったとき、または、コントロールがアンロードされるときですが、コントロールがアンロードされるときは、このイベントは発生しません。

 

NotificationOpenedイベント

■機能

NotificationOpenメソッドによりディレクトリ変更監視スレッドが開始されたことを通知します。

■構文

Private Sub object_NotificationOpened()
NotificationOpenedイベントの構文の指定項目は次のとおりです。

(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

このイベントの後、NotificationFindメソッドを発行するとディレクトリの変更を通知するようになります。

 

NotificationWaitingイベント

■機能

NotificationFindメソッドが発行された直後に発生します。

■構文

Private Sub object_NotificationWaiting()
NotificationWaitingイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

 

NotificationFoundイベント

■機能

ディレクトリの変更を検出した時に発生します。

■構文

Private Sub object_NotificationFound()
NotificationFoundイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。

■解説

NotificatioOpenメソッドで指定したディレクトリの変更があるとき、NotificationFindメソッドが実行されるとこのイベントが発生します。

 

NotificationClosedイベント

■機能

ディレクトリ変更監視スレッドが終了すると発生します。

■構文

Private Sub object_NotificationClosed(ByVal Code As Long, ByVal Msg As String)
NotificationClosedイベントの構文の指定項目は次のとおりです。
(指定項目) (内 容)
Object IPCOCXオブジェクトです。
Code 終了コード
0:正常終了
その他:Win32 APIエラーコード
Msg Win32 APIエラーメッセージ

■解説

ディレクトリ変更監視スレッドが終了すると発生します。
ディレクトリ変更監視スレッドが終了するのは、NotificationCloseメソッドが実行されたときまたは待ち状態(WAIT状態)でエラーになったとき、または、コントロールがアンロードされるときですが、コントロールがアンロードされるときは、このイベントは発生しません。

 


発生しうるエラーコード

メソッドまたはプロパティ 発生しうるトラップ可能なエラーコード
ConditionAbort 29922              
ConditionFind 29922              
ConditionOff 29922              
ConditionOn 29922              
ConditionOnAndOff 29922              
ConditionOpen 29901 29907 29912 29920        
MutexAbort 29922              
MutexLock 29922              
MutexOpen 29901 29912 29920          
MutexUnlock 29922              
NotificationAbort 29922              
NotificationFind 29922              
NotificationOpen 29901 29911 29912 29914        
ProcessAbort 29922              
ProcessExec 29901 29902 29911 29912 29919      
ProcessRun 29901 29902 29911 29912 29919      
ProcessWait 29922              
SemaphoreAbort 29922              
SemaphoreCapture 29922              
SemaphoreIncrease 29910 29913            
SemaphoreOpen 29901 29912 29913          
SemaphoreRelease 29922              
SharedMemoryOpen 29901 29905 29907 29908 29915 29916 29917 29924
SharedMemoryRead 29904 29918 29924          
SharedMemoryWrite 29904 29907 29908 29915 29917 29924    
ShowStyle 29910              

エラーの内容

エラーコード 内  容
29900 win32API呼び出しでエラーが発生致しました。
29901 同時に実行できないメソッドを実行中です。
29902 既存のプロセスがあります。プロセスは育成されませんでした。
29904 先にオープンして下さい。
29905 引数は省略できません
29907 引数の方が正しくありません。
29908 共有メモリの型または大きさが一致しません。
29910 引数の範囲が正しくありません。
29911 引数が正しくありません。
29912 待ちスレッドを作成できません。
29913 セマフォーを作成できません。
29914 ディレクトリ監視に失敗しました。
29915 この型の配列は指定できません。
29916 共有メモリを作成できません。
29917 引数からデータを取り出すことが出来ません。
29918 共有メモリからデータを取り出すことが出来ません。
29919 プロセスを作成できません。
29920 ミューテックスを作成できません。
29921 ミューテックスがありません。
29922 操作が正しくありません。
29923 コンディションを作成できません。
29924 タイムアウトしました。
その他 エラーが発生しました。

 


サンプル

Runメソッドのデモ

外部コマンドを起動してアイコンに変わります。
外部コマンドが終了すると元の大きさに戻ります。


Execメソッドのデモ

指定したファイルに関連付けられたプログラムを起動します。
起動するアプリケーションのカレントディレクトリが変更できます。
該当ファイルタイプに登録されたアクションを指定できます。
一般的にはOpen(開く)が対応しています。
まだ、アプリケーションのウィンドウ表示状態も指定できます。

 


排他制御(MUTEX)のデモ

  • 複数のプログラムが1つのプロセスを使用する時に、そのアクセス権を得る順番待ちをします。
  • 「子プロセス」ボタンを押してプログラムを複数起動して試して下さい。
    1. いずれかのプログラムの「確保する」ボタンを押すとアクセス権を得て、資源利用可能の緑色が点灯します。
    2. 他のプログラムがアクセス権を確保している時に、「確保する」ボタンを押すと待ち状態になり、赤色が点灯します。
    3. 待ち状態の時に、「中断する」ボタンを押すと、アクセス権の取得を放棄します。

 


排他制御(MUTEX)のデモ2

 


共有メモリーのデモ 及び 共有メモリーのデモ2

  • 左右どちらかのコントロールパネルを用いて、右のプロセスの緑のボールを移動します。移動した軌跡を左のプロセスに表示します。移動方向の命令と移動した位置を、2つのプロセスが共有メモリーを用いることによって、共有しています。
  • ここでは、常に右のプロセスが左のプロセスに対して信号を発信し、情報を得ようとします。

    ※共有メモリーデモ2は、カーソルを押した時、命令を共有メモリーに書き込む際に、PCのコンディション機能を用いている点が異なります。

 


一斉開始(セマフォ)のデモ

  • 同時に複数のプロセスを起動するデモです。
  • 複数のプロセスが、同時にアクセス権を奪い合うデモです。
    1. 「起動」ボタンを押すと、指定された数のプロセスが一斉に起動します。
      「開始」ボタンを押すと、一斉にカウントダウンを始めアクセス権を奪い合います。
      アクセス権を奪えたプロセスは丸が緑色で表示され、アクセス権を得られなかったプロセスは、赤色で表示されます。


 


ディレクトリの監視デモ

 


コンディションのデモ 及び 待合せ(セマフォ)のデモ

◆コンディションのデモ

  • 2つのプロセスを同時に使用する場合に、どちらか一方だけ起動した場合にもう一方が起動するのを待つことが出来るデモです。
  • それぞれのスタートボタンを押して下さい、赤いボールと緑のボールが一緒になった時に、黄色いボールが表示され、2つのプロセスが起動したことを示します。

◆待合せ(セマフォ)のデモ

  • セマフォは、資源管理に利用するものですが、通知にも利用出来ることを示したデモです。
  • 「コンディションのデモ」と同様の機能です。


 


発行所:株式会社ウィル
本紙の内容を許可なく複写、転載、データファイル化することを禁じます。
(C) Copyright 1998-2002 WILL Corporation. All rights reserved