全自動?

<戻る

ここに載せてあるソースコードは、参考のために載せてあります

サンプルコードは、一番下にLZHとしてあります




Option Explicit

'指定のウィンドウを探しウィンドウハンドルを返します
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

'ウィンドウを常に手前に表示します
'(この例ではウィンドウをアクティブにするために用いてます)
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Private Const SWP_NOSIZE = &H1 'サイズを指定しない
    Private Const SWP_NOMOVE = &H2 '位置をしていしない

'ウィンドウにメッセージを送ります
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Const WM_QUIT = &H12 '閉じます
    Private Const WM_PAINT = &HF
    Private Const WM_COMMAND = &H111


'外部アプリケーションの
'ウィンドウハンドルを
'保持するモジュール変数です
Dim m_OutApp_hWnd As Long

'フォームをロードしました
Private Sub Command1_Click()
    Dim lnghWnd As Long
    
    'コマンドボタンの入力を不可能にします
    '多重にボタンを押して無限ループになるのを防ぎます
    Command1.Enabled = False
    
    
    'メモ帳を起動します
    ShellWait "Notepad"
    
    'メモ帳のウィンドウハンドルを取得します
    m_OutApp_hWnd = FindWindow("Notepad", "無題 - メモ帳")
    If m_OutApp_hWnd = 0 Then GoTo ErrorProcess
    
    '外部アプリケーションをアクティブにします
    SetWindowPos m_OutApp_hWnd, 0&, 0&, 0&, 0&, 0&, SWP_NOSIZE Or SWP_NOMOVE
    'メモ帳のメニューの[ファイル]→[開く]を実行します
    SendKeys "%f", 1000
    SendKeys "o"
    DoEvents
    
    '開くダイアログのウィンドウハンドルを取得します
    lnghWnd = FindWindow("#32770", "開く")
    If lnghWnd = 0 Then GoTo ErrorProcess
    
    'ダイアログをアクティブにします
    SetWindowPos lnghWnd, 0&, 0&, 0&, 0&, 0&, SWP_NOSIZE Or SWP_NOMOVE
    '[DEL]、c:\windows\faq.txt、[ENTER]
    'を実行してウィンドウズフォルダのfaq.txtファイルを開きます
    SendKeys "{del}"
    SendKeys "c:\windows\faq.txt"
    '必ずダイアログのOKボタンを
    '押す(キーボードのEnterKeyにより)とは限りません
    SendKeys "{enter}", 1000
    
    
    'メモ帳に隠れるので
    'このフォームを前面に出します
    Me.SetFocus
    'コマンドボタンの入力を可能にします
    Command1.Enabled = True
    
    Exit Sub
ErrorProcess:
    'エラーメッセージを表示して
    'コマンドボタンの入力を可能にします
    MsgBox "取得に失敗しました", vbCritical
    Command1.Enabled = True
End Sub

Private Sub Command2_Click()
    'フォームを閉じます
    Unload Me
End Sub

'フォームをアンロードします
Private Sub Form_Unload(Cancel As Integer)
    If Not (m_OutApp_hWnd = 0) Then
        'フォームを閉じるとアプリケーションも終了を行います
        'm_OutApp_hWndが0(ゼロ)で実行すると
        'VBが終了します、注意してください
        PostMessage m_OutApp_hWnd, WM_QUIT, 0&, 0&
    End If
End Sub



<戻る

Sample79.lzh


http://hp.vector.co.jp/authors/VA015521/