Сообщество программистов Autodesk в СНГ

ADN Club => Inventor API => Тема начата: filat от 01-12-2020, 10:46:47

Название: Изменении параметров формы АИ (Handle)
Отправлено: filat от 01-12-2020, 10:46:47
В АИ вшито много параметров, которые не доступны пользователям, через средства настройки и адаптации. Много лет назад я узнал, то такие "вшитые" параметры можно менять прямо в формах АИ, по средствам интерфейса Handle. Например так я для себя адаптировал, через прямой ввод параметров в форму, критерии операции Разрыв:
Код - Visual Basic [Выбрать]
  1. Public Sub My_Break()
  2.     Call execute_command("DrawingBrokenViewCmd") ' 22576
  3.    Dim windowhandle As LongPtr
  4.     Select Case ThisApplication.Locale
  5.         Case Is = 1033, 2057
  6.             windowhandle = FindWindow("#32770", "Break")
  7.         Case Is = 1049
  8.             windowhandle = FindWindow("#32770", "Разрыв") ' "Ðàçðûâ" - проблема  копирования текста **
  9.        Case Else
  10.     End Select
  11.     Dim retval As LongPtr ' return value
  12.    retval = EnumChildWindows(windowhandle, AddressOf EnumChildProc_Break, 0)
  13. End Sub
  14.  
  15. Private Function EnumChildProc_Break(ByVal hwnd As Long, ByVal lParam As Long) As Long
  16.     Dim CtrlID As Integer
  17.     CtrlID = GetDlgCtrlID(hwnd)
  18.     If CtrlID = "16331" Then
  19.        Call ShowWindow(hwnd, SW_SHOWNORMAL)
  20.        Call SendMessage(hwnd, WM_SETTEXT, 0, ByVal "1 mm")
  21.     End If
  22.     If CtrlID = "16548" Then
  23.        Call ShowWindow(hwnd, SW_SHOWNORMAL)
  24.        Call SendMessage(hwnd, WM_SETTEXT, 0, ByVal "2")
  25.     End If
  26.     EnumChildProc_Break = 1 ' return value of 1 means continue enumeration
  27. End Function
  28.  
  29. Private Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
  30.     Dim CtrlID As Integer
  31.     CtrlID = GetDlgCtrlID(hwnd)
  32.     If CtrlID = "12111" Then
  33.        Call ShowWindow(hwnd, SW_SHOWNORMAL)
  34.        Call SendMessage(hwnd, WM_SETTEXT, 0, ByVal "9 mm")
  35.     End If
  36.     EnumChildProc = 1 ' return value of 1 means continue enumeration
  37. End Function
Уж даже сейчас и не помню, как вычислял эти коды...  :-X У меня получилось скорректировать цифровые параметры:
(https://i.ibb.co/vZyqY7v/image.jpg) (https://imgbb.com/)
Но вот тогда я так и не нашел методов для управления ползунками, по средствам Handle. Может кто в курсе и что подскажет сейчас?

** P.S. Еще один вопрос, заслуживающий, наверное, отдельной темы! Не единожды сталкиваюсь с тем, что при при прямом копировании текста из редактора VBA шрифт кириллицы превращается в кракозяблики!?  :o Есть ли какое-то глобальное средство решение этой проблемы? :'(
Название: Re: Изменении параметров формы АИ (Handle)
Отправлено: Александр Ривилис от 01-12-2020, 15:50:35
filat,
Напоминаю про правило форматирования кода на форуме (у меня в подписи). Это может быть простительно новичкам, но не тебе.
** P.S. Еще один вопрос, заслуживающий, наверное, отдельной темы! Не единожды сталкиваюсь с тем, что при при прямом копировании текста из редактора VBA шрифт кириллицы превращается в кракозяблики!?  :o Есть ли какое-то глобальное средство решение этой проблемы? :'(
Перед копированием текста из VBA переключайся на русскую раскладку клавиатуры.
Название: Re: Изменении параметров формы АИ (Handle)
Отправлено: filat от 01-12-2020, 15:56:33
Справедливо!  :-X давно не участвовал в активных дискуссиях  :'(
Название: Re: Изменении параметров формы АИ (Handle)
Отправлено: mikazakov от 01-12-2020, 17:46:44
микрософтовское описание  SendMessage:
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendmessage

мне даж сложно что то сказать, это нужно быть экспертом по winapi32 и всех этих вызовов неуправляемых функций

про редактор VBA: там шрифт тебе нудно поменять
Название: Re: Изменении параметров формы АИ (Handle)
Отправлено: filat от 08-12-2020, 10:06:04
про редактор VBA: там шрифт тебе нудно поменять
где именно?
Название: Re: Изменении параметров формы АИ (Handle)
Отправлено: mikazakov от 08-12-2020, 10:30:51

(https://i.postimg.cc/tYRP3ZF8/image.png) (https://postimg.cc/tYRP3ZF8)
Название: Re: Изменении параметров формы АИ (Handle)
Отправлено: filat от 08-12-2020, 12:01:10
А этот параметр доступен к управлению через код?
Название: Re: Изменении параметров формы АИ (Handle)
Отправлено: mikazakov от 08-12-2020, 12:36:16
А этот параметр доступен к управлению через код?
;D Влад, тебя все время куда то несет
https://superuser.com/questions/313408/how-can-i-use-custom-colours-in-the-microsoft-vba-editor
по всей видимости настройки находятся в ключах реестра. И в современном VBA версия не 6.0, а 7.0
Название: Re: Изменении параметров формы АИ (Handle)
Отправлено: Александр Ривилис от 08-12-2020, 12:36:45
filat,
В AutoCAD достаточно перед копированием текста из редактора VBA переключатся на русскую раскладку клавиатуру, чтобы не появлялась абракадабра вместо кириллицы. Думаю что в Inventor аналогично. Можешь проверить.
Название: Re: Изменении параметров формы АИ (Handle)
Отправлено: filat от 08-12-2020, 12:46:06
https://superuser.com/questions/313408/how-can-i-use-custom-colours-in-the-microsoft-vba-editor
блин! уж послал так послал! ;) ладно, буду раскопками заниматься! :)
В AutoCAD достаточно перед копированием текста из редактора VBA переключатся на русскую раскладку клавиатуру
я это уже понял из предыдущего сообщения, но хотелось бы иметь более "топорное" решение, на все случаю жизни, для любого дурака :)
Название: Re: Изменении параметров формы АИ (Handle)
Отправлено: Александр Ривилис от 08-12-2020, 12:48:56
я это уже понял из предыдущего сообщения, но хотелось бы иметь более "топорное" решение, на все случаю жизни, для любого дурака
Ну-ну. Дерзай. Это совсем другой уровень программирования...
Название: Re: Изменении параметров формы АИ (Handle)
Отправлено: filat от 08-12-2020, 20:27:02
Попытка провалилась!
Да, дело не в шрифте VBA-редактора - а именно в раскладке клавиатуры на момент копирования  :'(
Саша, совершенно прав!
такое через код контролировать бессмысленно  :(
Название: Re: Изменении параметров формы АИ (Handle)
Отправлено: filat от 13-05-2021, 13:18:13
Нашел!!!!
   
Код - Visual Basic [Выбрать]
  1. If CtrlID = "16325" Then
  2.        SendMessage hWnd, 1029, 1, 0 ' ставит ползунок на максимум
  3.    End If