通过Win API使用VBA更新ToolbarWindow32保存路径

通过Win API使用VBA更新ToolbarWindow32保存路径,vba,winapi,excel,Vba,Winapi,Excel,我正试图通过Windows API从Excel的VBA更改Google Chrome下载窗口中的保存路径。i、 e.单击保存按钮之前,需要更新下面屏幕截图中标记为“temp”的部分 我可以找到它所在的工具栏,下面的代码没有问题 downloadWindow = FindWindow(vbNullString, "Save As") subWindow = FindWindowEx(downloadWindow, ByVal 0&, "WorkerW", vbNullString) su

我正试图通过Windows API从Excel的VBA更改Google Chrome下载窗口中的保存路径。i、 e.单击保存按钮之前,需要更新下面屏幕截图中标记为“temp”的部分

我可以找到它所在的工具栏,下面的代码没有问题

downloadWindow = FindWindow(vbNullString, "Save As")
subWindow = FindWindowEx(downloadWindow, ByVal 0&, "WorkerW", vbNullString)
subWindow = FindWindowEx(subWindow, ByVal 0&, "ReBarWindow32", vbNullString)
subWindow = FindWindowEx(subWindow, ByVal 0&, "Address Band Root", vbNullString)
subWindow = FindWindowEx(subWindow, ByVal 0&, "msctls_progress32", vbNullString)
subWindow = FindWindowEx(subWindow, ByVal 0&, "Breadcrumb Parent", vbNullString)
savePath = FindWindowEx(subWindow, ByVal 0&, "ToolbarWindow32", vbNullString)
问题在于更新路径。我已经尝试过使用下面的SendMessage命令来完成这项工作,但这不起作用

SendMessageByString savePath, WM_SETTEXT, 0, "C:\newpath"

如何更新路径?

我整天都在试图解决相同的问题,我刚刚发现您不需要更改工具栏路径。您只需在“文件名”框中设置完整的文件路径,它就会保存到所需的位置

downloadWindow = FindWindow(vbNullString, "Save As")
subWindow = FindWindowEx(downloadWindow, ByVal 0&, "DUIViewWndClassName", vbNullString)
subWindow = FindWindowEx(subWindow, ByVal 0&, "DirectUIHWND", vbNullString)
subWindow = FindWindowEx(subWindow, ByVal 0&, "FloatNotifySink", vbNullString)
subWindow = FindWindowEx(subWindow, ByVal 0&, "ComboBox", vbNullString)
subWindow = FindWindowEx(subWindow, ByVal 0&, "Edit", vbNullString)

Dim FullPath As String
FullPath = "C:\myfolder\myfile.xyz"
Call SendMessage(subWindow, WM_SETTEXT, False, ByVal FullPath )
如果尚未包含Sendmessage函数和FindWindowEx函数,则需要将其包含在内

Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

我整天都在试图解决同一个问题,我刚刚发现你不需要更改工具栏路径。您只需在“文件名”框中设置完整的文件路径,它就会保存到所需的位置

downloadWindow = FindWindow(vbNullString, "Save As")
subWindow = FindWindowEx(downloadWindow, ByVal 0&, "DUIViewWndClassName", vbNullString)
subWindow = FindWindowEx(subWindow, ByVal 0&, "DirectUIHWND", vbNullString)
subWindow = FindWindowEx(subWindow, ByVal 0&, "FloatNotifySink", vbNullString)
subWindow = FindWindowEx(subWindow, ByVal 0&, "ComboBox", vbNullString)
subWindow = FindWindowEx(subWindow, ByVal 0&, "Edit", vbNullString)

Dim FullPath As String
FullPath = "C:\myfolder\myfile.xyz"
Call SendMessage(subWindow, WM_SETTEXT, False, ByVal FullPath )
如果尚未包含Sendmessage函数和FindWindowEx函数,则需要将其包含在内

Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

谢谢但愿你几年前就回答了这个问题:)谢谢!但愿你几年前就回答了这个问题:)