Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2273 / 13645 ツリー ←次へ | 前へ→

【69031】FindWindowなどの使い方 勉強中 11/5/11(水) 10:58 質問[未読]
【69032】Re:FindWindowなどの使い方 Yuki 11/5/11(水) 12:07 発言[未読]
【69033】Re:FindWindowなどの使い方 neptune 11/5/11(水) 12:10 発言[未読]
【69034】Re:FindWindowなどの使い方 勉強中 11/5/11(水) 15:25 お礼[未読]

【69031】FindWindowなどの使い方
質問  勉強中  - 11/5/11(水) 10:58 -

引用なし
パスワード
   FindWindow・FindWindowEx・SendMessageについて質問です。

ウィンドのタイトルが"他アプリ"(例)というアプリケーション
数字を入力するWindowがあり数字を入力後Enterで次の画面に進む

↑のようなアプリにマクロを使って操作したいのですが
いろいろ調べたらFindWindow・FindWindowEx・SendMessageでできそうということでした。
が、FindWindowはいいのですがFindWindowEx・SendMessageがいまいちよくわかりません

Dim TestF As Long
TestF = FindWindow(vbNullString, "他アプリ")
Dim TestEx As Long
TestEx = FindWindowEx _
  (TestF, (ここは0?), ("edit"?), (vbNullString?))
SendMessage(TestEx, (???), (???), ByVal "9")

どういった値をいれればいいのかわかりません。

教えていただけると幸いです。

【69032】Re:FindWindowなどの使い方
発言  Yuki  - 11/5/11(水) 12:07 -

引用なし
パスワード
   ▼勉強中 さん:
メモ帳の例です。
このまま実行しても良いです。
Option Explicit
Private Declare Function FindWindow Lib "user32" _
              Alias "FindWindowA" _
              (ByVal lpClassName As String, _
              ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" _
              Alias "FindWindowExA" _
              (ByVal hWndParent As Long, _
              ByVal hWndChildAfter As Long, _
              ByVal lpClassName As String, _
              ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" _
              Alias "SendMessageA" _
              (ByVal hWnd As Long, _
              ByVal Msg As Long, _
              ByVal wParam As Long, _
              lParam As Any) As Long
Private Const WM_SETTEXT = &HC
Private Declare Sub Sleep Lib "kernel32" _
              (ByVal dwMilliseconds As Long)

Sub TESTa()
  Dim pID   As Long
  Dim lngRtn As Long
  Dim hWnd1  As Long
  Dim hWnd2  As Long
  Dim strA  As String
  
  pID = Shell("Notepad.exe", vbNormalFocus)
  While hWnd1 = 0
    hWnd1 = FindWindow("Notepad", "無題 - メモ帳")
    Sleep 1
  Wend
  hWnd2 = FindWindowEx(hWnd1, 0, "edit", vbNullString)
  strA = "TEST"
  lngRtn = SendMessage(hWnd2, WM_SETTEXT, 0, ByVal strA)
End Sub

【69033】Re:FindWindowなどの使い方
発言  neptune  - 11/5/11(水) 12:10 -

引用なし
パスワード
   ▼勉強中 さん:
取り敢えず以下を読んでみて下さい。

FindWindowEx
ht tp://msdn.microsoft.com/ja-jp/library/cc410853.aspx

WM_SETTEXT Message
ht tp://msdn.microsoft.com/ja-jp/library/ms632644

SendMessage
ht tp://msdn.microsoft.com/ja-jp/library/cc411022.aspx

こういう所から探したりします。
ht tp://msdn.microsoft.com/ja-jp/library/bb775460(v=VS.85).aspx

【69034】Re:FindWindowなどの使い方
お礼  勉強中  - 11/5/11(水) 15:25 -

引用なし
パスワード
   Yukiさん、neptuneさん
ありがとうございます。

Yukiさんから教えていただいたサンプルと
neptuneさんから教えていただいたサイトを
組み合わせてがんばります^^

2273 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free