Изменении параметров формы АИ (Handle)

Автор Тема: Изменении параметров формы АИ (Handle)  (Прочитано 5504 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 265
  • Карма: 2
В АИ вшито много параметров, которые не доступны пользователям, через средства настройки и адаптации. Много лет назад я узнал, то такие "вшитые" параметры можно менять прямо в формах АИ, по средствам интерфейса 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 У меня получилось скорректировать цифровые параметры:

Но вот тогда я так и не нашел методов для управления ползунками, по средствам Handle. Может кто в курсе и что подскажет сейчас?

** P.S. Еще один вопрос, заслуживающий, наверное, отдельной темы! Не единожды сталкиваюсь с тем, что при при прямом копировании текста из редактора VBA шрифт кириллицы превращается в кракозяблики!?  :o Есть ли какое-то глобальное средство решение этой проблемы? :'(
« Последнее редактирование: 01-12-2020, 15:48:00 от Александр Ривилис »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
filat,
Напоминаю про правило форматирования кода на форуме (у меня в подписи). Это может быть простительно новичкам, но не тебе.
** P.S. Еще один вопрос, заслуживающий, наверное, отдельной темы! Не единожды сталкиваюсь с тем, что при при прямом копировании текста из редактора VBA шрифт кириллицы превращается в кракозяблики!?  :o Есть ли какое-то глобальное средство решение этой проблемы? :'(
Перед копированием текста из VBA переключайся на русскую раскладку клавиатуры.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 265
  • Карма: 2
Справедливо!  :-X давно не участвовал в активных дискуссиях  :'(

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
микрософтовское описание  SendMessage:
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendmessage

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

про редактор VBA: там шрифт тебе нудно поменять

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 265
  • Карма: 2
про редактор VBA: там шрифт тебе нудно поменять
где именно?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 265
  • Карма: 2
А этот параметр доступен к управлению через код?

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
А этот параметр доступен к управлению через код?
;D Влад, тебя все время куда то несет
https://superuser.com/questions/313408/how-can-i-use-custom-colours-in-the-microsoft-vba-editor
по всей видимости настройки находятся в ключах реестра. И в современном VBA версия не 6.0, а 7.0

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
filat,
В AutoCAD достаточно перед копированием текста из редактора VBA переключатся на русскую раскладку клавиатуру, чтобы не появлялась абракадабра вместо кириллицы. Думаю что в Inventor аналогично. Можешь проверить.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 265
  • Карма: 2
https://superuser.com/questions/313408/how-can-i-use-custom-colours-in-the-microsoft-vba-editor
блин! уж послал так послал! ;) ладно, буду раскопками заниматься! :)
В AutoCAD достаточно перед копированием текста из редактора VBA переключатся на русскую раскладку клавиатуру
я это уже понял из предыдущего сообщения, но хотелось бы иметь более "топорное" решение, на все случаю жизни, для любого дурака :)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Изменении параметров формы АИ (Handle)
« Ответ #10 : 08-12-2020, 12:48:56 »
я это уже понял из предыдущего сообщения, но хотелось бы иметь более "топорное" решение, на все случаю жизни, для любого дурака
Ну-ну. Дерзай. Это совсем другой уровень программирования...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 265
  • Карма: 2
Re: Изменении параметров формы АИ (Handle)
« Ответ #11 : 08-12-2020, 20:27:02 »
Попытка провалилась!
Да, дело не в шрифте VBA-редактора - а именно в раскладке клавиатуры на момент копирования  :'(
Саша, совершенно прав!
такое через код контролировать бессмысленно  :(

Отмечено как Решение filat 13-05-2021, 13:18:31

Оффлайн filatАвтор темы

  • ADN Club
  • ****
  • Сообщений: 265
  • Карма: 2
Re: Изменении параметров формы АИ (Handle)
« Ответ #12 : 13-05-2021, 13:18:13 »
Нашел!!!!
   
Код - Visual Basic [Выбрать]
  1. If CtrlID = "16325" Then
  2.        SendMessage hWnd, 1029, 1, 0 ' ставит ползунок на максимум
  3.    End If