TOP > AcroExch.App > UnLockEx [...]
説明
以前にAcrobatアプリケーションの操作をロック(Lock)したのを解除します。
Acrobat バージョン 5.0以上はUnLockメソッドでは無く、こちらのUnLockExメソッドを使用します。
形式
VARIANT_BOOL UnlockEx (BSTR szLockedBy);
引数
- 第一引数(BSTR szLockedBy) : 排他制御するプログラム識別子(任意の文字列)
注意:Lockメソッドの第一引数と同じ値をセットして下さい。違う値をセットすると、戻り値がFalse(0)になります。
戻り値
- -1 : True(真)で成功した。
- 0 : False(偽)で失敗した。 ※この値は返りません。
バージョン情報
当メソッドはテスト環境を作るのが非常に難しいので、ページ下部に動作環境だけでの検証とさせて頂きます。
サンプル:ExcelのVBA
説明 : 他のAcrobatアプリケーションを操作出来ない様に一時的にロックします。
処理が終わったらロックを解除します。
- 参照設定を事前に行う。
- 以下のサンプルはテスト用です。
F8キーでステップ実行して動作確認します。
001 Public Declare Sub Sleep Lib "kernel32″" _
002 (ByVal dwMilliseconds As Long)
003
004 Sub AcroExch_App_UnLockEx()
005
006 Dim objAcroApp As New Acrobat.AcroApp
007 Dim objAcroPDDoc As New Acrobat.AcroPDDoc
008 Dim lRet As Long '戻り値
009 Dim l As Long 'ループ用のカウント
010 Const CON_LOOP = 20 'ループ回数のMAX
011 Const CON_LOCK = "SYORI99" 'Lock識別子
012
013 l = 0
014 'IACの排他制御をオンにする
015 lRet = objAcroApp.Lock(CON_LOCK)
016 Do While (lRet = 0)
017 '他のプログラムで排他制御されている
018 If l >= CON_LOOP Then
019 'ループ限度を越えた
020 'エラー処理・・
021 GoTo AcroExch_App_UnLockEx_Skip
022 End If
023 '0.5秒待つ
024 Sleep 500
025 l = l + 1
026 Loop
027 '他で排他制御が解除された
028
029 'テスト確認用に画面表示する
030 lRet = objAcroApp.Show
031 lRet = objAcroPDDoc.Open("E:\Test03.pdf")
032 objAcroPDDoc.OpenAVDoc ("E:\Test03.pdf")
033
034 '・・・・・ココで一時停止して何か処理を行ってみる
035
036 '以下のCloseは不要。実行すると次でエラーになる。
037 'lRet = objAcroPDDoc.Close
038
039 '全てのドキュメントを強制的に閉じる
040 '※「objAcroPDDoc.Open」実行しているので以下をしないとプロセスが残る。
041 lRet = objAcroApp.CloseAllDocs
042
043 'アプリケーションの終了
044 lRet = objAcroApp.Hide
045 lRet = objAcroApp.Exit
046
047 AcroExch_App_UnLockEx_Skip:
048 '排他制御の開放
049 lRet = objAcroApp.UnlockEx(CON_LOCK)
050
051 'オブジェクトの強制開放
052 Set objAcroPDDoc = Nothing
053 Set objAcroApp = Nothing
054 '※この後,Acrobatプロセスがメモリから消えるのに2~5秒掛かる
055 End Sub
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
補足
- 上記サンプルのテストは Excel 2003 のVBAと Excel 2007 のVBAを同時に立ちあげて検証しました。
- Lockメソッドの解説を先に見て、その使用方法について理解しないとUnlockExメソッドは利用出来ません。
- Lockメソッドを使用したら、最後に必ずUnlockExメソッドを実行して下さい。
注意事項
- 基本的に戻り値は真(True=-1)が返ります。
Lockメソッドの実行有り無しに関わらず、True(0)が返ります。
但し、Lockメソッドを使用している時はそのLockメソッドの第一引数と同じ値をUnLockExメソッドの第一引数にセットしないと、戻り値はFalse(0)が返されます。
動作確認環境
- WindowsXP Pro( + SP2 + WindowsUpdate) +
Acrobat 7.0.9 Pro + Office 2003 - WindowsXP Pro( + SP3 + WindowsUpdate) +
Acrobat 8.1.7 Pro + Office 2003( + SP3) + Office 2007( + SP2)
Adobe Web 解説 URL(英語) v9.1
< 戻る >
ブラウザ画面の文字サイズを変更するショートカットキー
|