出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

[1259] ACROBAT READER の終了方法(ハンドル)?
投稿者:北岳さん 2001/12/13 19:11:51
当方現在、ASPもブラウザも無関係の、スタンドアロン環境で(今のところ)、
WINDOWS2000pro+VB5+AcrobatReader5 を使っています。
VB5のshell関数でAcroRd32.exeを起動させて、指定したpdfファイル(**)を開き、
pdf内の(一見画像の)テキスト文字列を、全頁まとめてtxtファイルに一括コピー・ペーストしようとしています。
 
AcrobatReaderのメソッドが全然判らないので、VBのsendkeys関数で操作しています。
で、pdfファイル中身の文字列をコピーし、txtファイルにペーストする所まではできました。
 
最後に、「pdfファイルを開いたままのAcrobatReaderを閉じたい」のですが、
ハンドル名が違うらしくて、(自分の手で閉じない限り)どうにも閉じません。(★の部分)
ハンドル名がお分かりの方、教えて頂けないでしょうか。
 
=============================================================
■標準モジュール
 
Declare Function FindWindow _
Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
'---------------------
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Long) As Long
 
=============================================================
■form1モジュール
 
Option Explicit
Dim path1 As String, path2 As String, adobe As String, buf As String
Dim flag As Integer
Dim lpClassName As String, lpCaption As String
Dim Handle1 As Long, Handle2 As Long
 
'-------------------------------------
Private Sub Form_Load()
Form1.Timer1.Interval = 5000 'ms
End Sub
 
'-------------------------------------
Private Sub Command1_Click()
'** pdf内のテキスト書込用ファイルを用意
Open "c:\documents and settings\administrator\デスクトップ\1.txt" For Output As #1
'** Acrobat5からpdfファイルを開く
path1 = "c:\documents and settings\administrator\デスクトップ\"
path2 = "info77.pdf" '(**)pdfファイル名を指定
adobe = "c:\Program Files\Adobe\Acrobat 5.0\Reader\AcroRd32.exe"
buf = adobe & " " & path1 & path2
Shell buf, vbNormalFocus
'** pdf全頁のテキスト文字列を一度に選択しコピー
10 SendKeys "%E"
SendKeys "S"
SendKeys "%E"
SendKeys "C"
'** 取り込みに時間がかかる場合を想定、5秒待つ。
flag = 0
20: DoEvents
If flag = 1 Then
'** クリップボードの中身をテキストファイルに書く
Print #1, Clipboard.GetText
Else
GoTo 20
End If
Close
Call AcroQuit '■
MsgBox ("終了")
End
End Sub
 
'-------------------------------------
Sub Timer1_Timer()
flag = 1
End Sub
 
'-------------------------------------
Sub AcroQuit()
'** Readerの終了 '■
'lpCaption = "AVPageView"
lpClassName = "AVL_AVView" ★
lpCaption = "Acrobat Reader" ★
'lpClassName = "Afx:400000:8:10011:0"
'* ウインドウのハンドル取得
Handle1 = FindWindow(lpClassName$, lpCaption$)
'* 閉じる
Handle2 = SendMessage(Handle1, &H112, &HF060&, 0&)
End Sub
 
=============================================================
参考にしたのは、
甲:[VB] システム メニューを持つアプリケーションをクローズする方法
http://www.microsoft.com/japan/support/kb/articles/J044/1/40.asp
乙:[VB] ウィンドウのクラス名や属性を取得する方法
http://www.microsoft.com/japan/support/kb/articles/J046/4/37.asp
です。
 
Acrobat Readerのクラス名などは、乙を使ってタイトルバー位置で調べると
Window.Handle:&H100008E
Window Text:Acrobat Reader - [info77.pdf]
Window Class Name: Afx:400000:8:10011:0:4020239
Window Style: &H14CF8000
などとなりますが、Class Nameの後の方の数字が毎回変わってしまうため、どう書けば・・・

ACROBAT READER の終了方法(ハンドル)?   北岳さん [2001/12/13 19:11:51] [1259]
  Re:ACROBAT READER の終了方法(ハンドル)?   Tomitomiさん [2001/12/13 20:36:02] [1260]
  ACROBAT READER のOCX?   Tomitomiさん [2001/12/14 11:04:22] [1261]
    Re:ACROBAT READER のOCX?   北岳さん [2001/12/14 12:14:35] [1262]
  アドビ一族の陰謀   北岳さん [2001/12/14 13:52:38] [1263]


TreeBBS For ASP V.0.1.3
Program By YasNet