AcroExch.App: UnLockEx メソッド

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

http://livedocs.adobe.com/acrobat_sdk/9.1/Acrobat9_1_HTMLHelp/IAC_API_OLE_Objects.103.32.html

戻る


キーボード

ブラウザ画面の文字サイズを変更するショートカットキー

  1. [ CTRL ] + [ + ]  :  文字を大きく

  2. [ CTRL ] + [ - ]  :  文字を小さく
Shortcut Keys

  1. [ CTRL ] + [ + ]  :  Up the font size

  2. [ CTRL ] + [ - ]  :  Down the font size

VBA(Excel)からAcrobat経由でPDFをプログラミング操作(OLE:IAC)する