Закрыть SketchUp из Excel - PullRequest
       19

Закрыть SketchUp из Excel

0 голосов
/ 29 октября 2018

Я открываю SketchUp из Excel, затем запускаю плагин, использую приведенный ниже код, чтобы открыть SketchUp, затем использую SendKeys, чтобы выбрать плагин.

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Sub fLaunchProgram(ByVal sProgram As String)
    Dim ProcessHandle As Long
    Dim ProcessId As Long
    On Error GoTo errExit
    ProcessId = Shell(sProgram, vbNormalFocus)
    ProcessHandle = OpenProcess(&H1F0000, 0, ProcessId)
    WaitForSingleObject ProcessHandle, INFINITE
    Exit Sub

errExit:
    MsgBox "External program " & sProgram & " was not found", vbCritical, " fLaunchProgram"
End Sub
'To load SU
Sub pTest()
    fLaunchProgram ("C:\Program Files\SketchUp\SketchUp 2015\SketchUp.exe")
End Sub

Sub Button1_Click()

    pTest
    SendKeys "~ (tilde)"
    SendKeys "%{left}{DOWN}n~"

    SendKeys "%x{DOWN}~"
    SendKeys "{NUMLOCK}", True
    SendKeys "%fx"
    SendKeys "n"
End Sub

Последние строки представляют Alt-File-Exit, затем выскакивает msgbox, n должно представлять «нет», и программа должна закрыться, она не распознает «n» для «нет»

enter image description here

Если ключи отправки не будут работать, кто-нибудь знает, как закрыть SketchUp из Excel?

1 Ответ

0 голосов
/ 10 мая 2019

Начиная с SketchUp 2015, в Ruby API SketchUp есть модель Model # close . Если вызывается с true в качестве параметра, он игнорирует изменения. Он не закрывает приложение, но возвращает вас в состояние, в котором вы можете закрыть приложение без каких-либо вопросов о сохранении показа.

...