windows7のエクスプローラをVBAで操作-1
アドバイスをお願いします。
Excel-VBAで起動しているエクスプローラに対してハンドルを取得してクリックしたり、テキストボックスに文字をセットするプログラムを作って動かしています。
WindowsXPのときはできていたのですが、Windows7になったら正しく動作しなくなりました。
下のコードはエクスプローラの現在のフォルダパスが表示されるところに(添付ファイル参照)文字を入れるものです。
最後のSendMessageAnyで1が返ってしまいます。何が考えられますでしょうか。どう対策したらいいでしょうか。
なおハンドルの値はSDKのInspect Objectsで確認していますので、正しく取得できていると思っています。
よろしくお願いします。
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long
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
Declare Function SendMessageAny Lib "user32.dll" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal MSG As Long, _
ByVal wParam As Long, _
ByVal lParam As Any) As Long
Const WM_SETTEXT = &HC
Private hwnd As Long
Private FOLDER As String
Sub Put_folder_name1()
hwnd = FindWindow("CabinetWClass", vbNullString)
hwnd = FindWindowEx(hwnd, 0, "WorkerW", vbNullString)
hwnd = FindWindowEx(hwnd, 0, "ReBarWindow32", vbNullString)
hwnd = FindWindowEx(hwnd, 0, "Address Band Root", vbNullString)
hwnd = FindWindowEx(hwnd, 0, "msctls_progress32", vbNullString)
hwnd = FindWindowEx(hwnd, 0, "ComboBoxEx32", vbNullString)
hwnd = FindWindowEx(hwnd, 0, "ComboBox", vbNullString)
hwnd = FindWindowEx(hwnd, 0, "Edit", vbNullString)
FOLDER = "\\xx.xx.xx.xx\test"
RC = SendMessageAny(hwnd, WM_SETTEXT, 0, ByVal FOLDER)
end sub
お礼
返信が遅れてしまい申し訳ありません。 なぜなのか理由がわかりませんが、一日たって実行してみたらハンドル名が取得できました。 回答していただきありがとうございました。
補足
回答していただきありがとうございます。 締め切りが遅れ申し訳ありませんでした。