Можете ли вы контролировать другую программу .exe? Я пытался использовать ключи отправки, но это ненадежно - PullRequest
0 голосов
/ 22 апреля 2020
Private Const sw_restore = 9

#If VBA7 Then

Private Declare PtrSafe Function showwindow Lib "user32" (ByVal hwnd As Long, ByVal ncmdshow As Long) As Long
Private Declare PtrSafe Function isiconic Lib "user32.dll" (ByVal hwnd As Long) As Long
#Else
Private Declare Function showwindow Lib "user32" (ByVal hwnd As Long, ByVal ncmdshow As Long) As Long
Private Declare Function isiconic Lib "user32.dll" (ByVal hwnd As Long) As Long
#End If

Sub openProgram()

Dim strDirectory As String
Dim pID As Variant, sh As Variant
strDirectory = "H:\LocalStorage\Program.exe"
Set sh = CreateObject("shell.application")
For Each w In sh.Windows
If w.document.folder.self.Path = strDirectory Then
If CBool(isiconic(w.hwnd)) Then
w.Visible = False
w.Visible = True
End If
Exit Sub
End If
Next
pID = Shell("H:\LocalStorage\Program.exe", vbNormalFocus)

waittime 3000
Application.SendKeys "{Right}", True
waittime 3000
Application.SendKeys "{Right}", True
waittime 3000
Application.SendKeys "{Right}", True
waittime 3000
Application.SendKeys "{Right}", True
waittime 3000
Application.SendKeys "{Right}", True
waittime 3000
Application.SendKeys "{Right}", True
waittime 3000
Application.SendKeys "{Right}", True
waittime 3000
Application.SendKeys "{Right}", True
waittime 3000
Application.SendKeys "{%}", True

End Sub

Function waittime(ByVal milliseconds As Double)
Application.Wait (Now() + milliseconds / 24 / 60 / 60 / 1000)
End Function

Мне нужен ключ {%} или {END}, чтобы зарегистрироваться в программе, чтобы перейти к следующему ряду параметров. Чтобы затем go вправо дважды, нажмите клавишу ввода в отчетах. Затем вниз пару раз, чтобы создать новый отчет. Затем продолжайте использовать отрывочные и ненадежные ключи, пока я не смогу автоматизировать каждый отчет, который мне нужно запускать каждую неделю. Сэкономить время Я бы предпочел использовать что-то более надежное, чем sendkeys. Есть ли другие жизнеспособные варианты? Спасибо

...