|
发表于 2019-3-2 19:13
来自手机
|
显示全部楼层
本帖最后由 lss001 于 2019-3-28 17:47 编辑
Declare Function SendMessage& Lib "user32.dll" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Declare Function PostMessage& Lib "user32" Alias "PostMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Declare Function FindWindow& Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String)
Declare Function FindWindowEx& Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 _
As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String)
Declare Function GetMenu& Lib "user32.dll" (ByVal hwnd As Long)
Private Declare Function GetSubMenu& Lib "user32.dll" _
(ByVal hMenu As Long, ByVal nPos As Long)
Declare Function GetMenuItemID& Lib "user32.dll" _
(ByVal hMenu As Long, ByVal nPos As Long)
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)
Const WM_COMMAND = &H111, WM_SETTEXT = &HC, HWND_BOTTOM = 1, _
WM_CLOSE = &H10, WM_CLICK = &HF5, SWP_NOSIZE = &H1, SWP_NOMOVE = &H2
Sub jspjb() 'API记事本操作
Dim hwnd&, hwndz&, hwnds&, hMenu&, MenuID&, i&, j&, rt&, pt&, ap&: vs = vbNullString
Shell "notepad.exe", vbMinimizedFocus '打开记事本程序
hwnd = FindWindow("notepad", vs) '记事本句柄
hwndz = FindWindowEx(hwnd, 0, "Edit", vbNullString) '编辑框句柄
SendMessage hwndz, WM_SETTEXT, 0, ByVal "中国人民从此站起来了!"
hMenu = GetMenu(hwnd)
hMenu = GetSubMenu(hMenu, 0) '文件/菜单句柄
MenuID = GetMenuItemID(hMenu, 3) '子菜单/另存为ID
PostMessage hwnd, WM_COMMAND, MenuID, ByVal 0 '打开另存为对话框
Application.Wait Now + TimeValue("00:00:02")
hwnds = FindWindow(vbNullString, "另存为") '获取另存为对话框句柄
SetWindowPos hwnds, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE
ReDim Childh(0): Childh(0) = hwnds
Do While i <= UBound(Childh) '枚举另存为对话框子句柄
pt = Childh(i): ap = 0
rt = FindWindowEx(pt, ap, vs, vs)
Do While rt > 0
j = j + 1
ReDim Preserve Childh(0 To j)
Childh(j) = rt: ap = rt
rt = FindWindowEx(pt, ap, vs, vs)
Loop
i = i + 1
Loop
SendMessage Childh(37), WM_SETTEXT, 0, ByVal _
"" & ThisWorkbook.Path & "\abc.txt"
'输入文件路径/名称/后缀
SendMessage Childh(5), WM_CLICK, 0, 0 '自动点击保存
SendMessage hwnd, WM_CLOSE, 0, 0 '关闭记事本程序
End Sub
|
|