VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/07/05(Sat) 16:35
投稿者Say
Eメール
URL
タイトルRe^5: VBから読込み専用でImaging起動

>FindWindowにて動作中のImagingを監視しようと考えましたが、Imagingにはクラス名が
>  なく監視する事が出来ませんでした。

だったらWindows Captionから拾えば?
たとえばこう。


Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
        "ShellExecuteA" (ByVal hwnd As Long, _
        ByVal lpOperation As String, _
        ByVal lpFile As String, _
        ByVal lpParameters As String, _
        ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias _
        "FindWindowA" (ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
Dim strBMPpath(7) As String
Dim strWinCaption(7) As String
Private Sub Command1_Click()
Dim lngHwnd As Long
    If List1.ListIndex >= 0 Then
        Call sOpenImaging(strBMPpath(List1.ListIndex))
        lngHwnd = 0&
        Do While lngHwnd = 0&
            lngHwnd = FindWindow(vbNullString, strWinCaption(List1.ListIndex))
            DoEvents
        Loop
        List2.AddItem strWinCaption(List1.ListIndex)
        List2.ItemData(List2.NewIndex) = List1.ListIndex
        List3.AddItem lngHwnd
    End If
End Sub

Private Sub sOpenImaging(ByVal ImgFile As String)
    Dim Ret As Long
    Dim MyAttr As Integer
    MyAttr = GetAttr(ImgFile)
    If MyAttr <> vbReadOnly Then
        SetAttr ImgFile, vbReadOnly
    End If
    Ret = ShellExecute(Me.hwnd, "Open", "kodakimg.exe", _
                                ImgFile, vbNullString, 1&)
    'Sleep 1000
    'SetAttr ImgFile, MyAttr
End Sub

Private Sub Form_Load()
    Dim i As Long
    Me.Show
    List1.AddItem "ABC.BMP"
    List1.AddItem "あいう.bmp"
    List1.AddItem "2003.bmp"
    List1.AddItem "てすと.bmp"
    List1.AddItem "Test2.bmp"
    List1.AddItem "おひるね.bmp"
    List1.AddItem "猫と少女.bmp"
    List1.AddItem "なんかの地図.bmp"
    For i = 0 To 7
        strBMPpath(i) = App.Path & "\" & List1.List(i)
        strWinCaption(i) = List1.List(i) & " - イメージング (読み取り専用)"
    Next
    Timer1.Interval = 500
    Timer1.Enabled = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
    Dim i As Long
    Dim lngHwnd As Long
    Dim ImgFile As String
    Dim strBuffer As String
    If List2.ListCount > 0 Then
        For i = List2.ListCount - 1 To 0 Step -1
            strBuffer = List2.List(i)
            lngHwnd = FindWindow(vbNullString, strBuffer)
            If lngHwnd = 0 Then
                ImgFile = strBMPpath(List2.ItemData(i))
                SetAttr ImgFile, vbNormal
                List2.RemoveItem i
                List3.RemoveItem i
            End If
            DoEvents
        Next
    End If
End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -