全自動?
ここに載せてあるソースコードは、参考のために載せてあります
サンプルコードは、一番下に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 |