Private Sub m_UserInputEvents_OnActivateCommand(ByVal CommandName As String, ByVal Context As Inventor.NameValueMap) Handles m_UserInputEvents.OnActivateCommand
If CommandName = "AppMeasureDistanceCmd" Then
Try
MeasureDistanceDisable = New MeasureDistanceDisable
MeasureDistanceDisable.m_inventorApplication = m_inventorApplication
MeasureDistanceDisable.Show() ' Создает модальное не окно
Catch ex As Exception
End Try
End If
End Sub
Imports Inventor
Imports System.Windows.Forms
Imports System.Runtime.InteropServices ' для Marshal хуки т т.д.
Public Class MeasureDistanceDisable
' для автоматизации закрытия окна линейки MeasureDistance
Public m_inventorApplication As Inventor.Application
Private WithEvents m_clsMouseHook As MouseHook = New MouseHook ' 11.05.2021
Private Sub MeasureDistanceDisable_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Visible = True
m_clsMouseHook.HookMouse() ' 11.05.2021
End Sub
Private Sub MeasureDistanceDisable_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
m_clsMouseHook.UnhookMouse() ' положить в sub formClose
End Sub
Dim WM_QUIT As UInteger = &H12
Dim WM_CLOSE As UInteger = &H10
Private Sub m_clsMouseHook_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles m_clsMouseHook.MouseDown
Dim oDocWin As DockableWindows ' коллекция браузеров сборки, детали (вертикальный слева)
oDocWin = m_inventorApplication.UserInterfaceManager.DockableWindows ' доступны только Height и Width ( Top и Left - почемуто с минусами)
Dim oLeft As Integer ' начальная точка слева по оси Х
Dim oTop As Integer ' начальная точка сверху по оси Y
If oDocWin.Item(1).Left > 0 And oDocWin.Item(1).Top > 0 Then
oLeft = oDocWin.Item(1).Left
oTop = oDocWin.Item(1).Top
Else
oLeft = m_inventorApplication.Left
oTop = m_inventorApplication.Top + m_inventorApplication.Height - oDocWin.Item(1).Height
End If
If e.X > oLeft And e.X < oLeft + oDocWin.Item(1).Width Then
If e.Y > oTop And e.Y < oTop + oDocWin.Item(1).Height Then
'm_inventorApplication.UserInterfaceManager.DockableWindows.Item("Measure").Delete()
Call SendMessage(m_inventorApplication.UserInterfaceManager.DockableWindows.Item("Measure").HWND, &H10, 0, 0)
Me.Close()
End If
End If
End Sub
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As Long, ByVal lParam As Long) As Long
End Class