AcrobatReaderアプリケーションを終了する為には

解決


福々  2003-02-26 00:58:43  No: 106128

すみません。
かなり初歩的な質問になると思われるのですが…。
SendMessageを利用してアプリケーションを終了させることが
できるとのことですが、
Acrobat Reader 5.0を指定したい場合は、
どのように指定すればいいでしょうか?
どこをみればわかるのでしょうか?


特命  2003-02-26 02:39:35  No: 106129

FindWindow(Ex) API や EnumWindow API で
ウィンドウキャプションを順に取得して、
最初の数文字が "Acrobat Reader" だったときの
ウィンドウハンドルに SendMessage すれば良いのでは。

まずは、上の API を調べて下さい。

# あるいは、プロセスの名前が AcroRd32 のものを探しても良いですね。


福々  2003-02-26 22:53:26  No: 106130

アドバイスありがとうございます。
早速、下記の手順で試したのですが…。
----------------------------------------------
1.EnumWindowで全てのウィンドゥを列挙
2.GetWindowTextでハンドルや名前を取得
3.IsWindowVisibleで表示されているウィンドゥを取得
4.GetWindowTextで取得した名前の頭14バイトが"Acrobat Reader"
  である場合は、メッセージボックスを出す
----------------------------------------------

というところでまずは試してみたのですが、
1.EnumWindowのところで「DLLが正しく呼び出せません」
ようエラーになってしまい、うまくいきません。
なにか、コードが足りないのでしょうか?

↓↓↓↓  コード  ↓↓↓↓
【標準モジール】
Option Explicit
Public Declare Function EnumWindows Lib "USER32" (ByVal lpEnumFunc As Long, lPalam As Long) As Long

Public Declare Function GetWindowText Lib "USER32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Public Declare Function IsWindowVisible Lib "USER32" (ByVal hWnd&) As Long

Public Function Rekkyo(ByVal Handle As Long) As Boolean

    Dim Ret, RET2   As Long
    Dim Leng        As Long
    Dim Name        As String

    'バッファ確保
    Name = String(255, Chr(0))
    Leng = Len(Name)

    '名前を取得する
    Ret = GetWindowText(Handle, Name, Leng)
    '表示されているWindowのみリストに追加
    If Ret <> 0 Then
       RET2 = IsWindowVisible(Handle)
       If RET2 = 1 Then
          If Left(Name, 14) = "Acrobat Reader" Then
             MsgBox (Name)
          End If
       End If
    End If
    '次にいく
    Rekkyo = True

End Function

【フォーム:コマンドボタンが貼り付けてあります】
Private Sub Command1_Click()
    Dim Ret As Long
    Ret = EnumWindows(AddressOf Rekkyo, 0)
End Sub


特命  2003-02-27 02:34:55  No: 106131

残念ながら、参考にしたコードの方に間違いがあるみたいです。
# Yahoo で EnumWindows を検索した結果の最初のヤツを参考にしたのでは?
# 運が悪かったですね。

もう一度、別のものを参考にして作成してみましょう。


福々  2003-02-28 20:07:42  No: 106132

参照したコードに誤り…?
このページのProgramming LibraryのAPI技術情報より参照したのですが…。


福々  2003-03-14 20:50:47  No: 106133

苦肉の策でエラーコードをとって処理をスルーしてしまいました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加