Тема: Как запустить ACAD без приложений указанных в "StartUp Suite"?

создаю объект в VB через
Set Acad = CreateObject("AutoCAD.Application")
как можно сделать так, чтоб AutoCAD запустился без ссылок в StartUp Suite.
Вот моя идея изменить содержимое ключа

HKEY_USERS\S-1-5-21-1123561945-1343024091-839522115-1003\Software\Autodesk\AutoCAD\R15.0\ACAD-2:409\Profiles\<<Unnamed Profile>>\Dialogs\Appload\Startup

и тут сразу кучу неприятных сюрпризов.
1) небходимо узнать какая версия AutoCAD будет запускаться при создании объекта, если установленно несколько AutoCAD -ов (не проблема)
2) для каждого AutoCAD нужно знать точный путь до ключа HKEY_USERS ... \ACAD-2:409\Profiles\ особенно не нравится "ACAD-2:409" (вот тут та и вся проблема)
3) потом определяем какой профиль загружается по умолчанию и редактируем Startup Suite(не проблема)
Хочу вариант по элегантнее :) подскажите

Re: Как запустить ACAD без приложений указанных в "StartUp Suite"?

Я не подскажу, просто несколько вопросов:
1. Почему бы не создавать свой профиль?
2. Профили (по крайней мере для 2005 и 2006) хранятся в ветке HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.x\ACAD-301:409, к примеру (ну и далее по тексту)
3. Для 2005 и 2006, по-моему, CreateObject("AutoCAD.Application") не сработает - надо указывать "AutoCAD.Application.16 или 16.2, кажется, соответственно.

Re: Как запустить ACAD без приложений указанных в "StartUp Suite"?

> kpblc
Идя с профилем мне понравилась, вот как ее можно развить (можно создать пустой профиль без значений т.е. просто ключ с именем профиля, ACAD их сам заполнит, а некоторые супер возможности типа СоветДня подправить в ручную), но проблема вот в чем

HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R15.0\[b]ACAD-2:409[/b]\Profiles\<<Unnamed Profile>>

непонятно как добраться до ключа Profiles. чтоб подсказать какой профиль использовать.

Re: Как запустить ACAD без приложений указанных в "StartUp Suite"?

Честно говоря, я б прошерстил главу 20 "САПР на базе..." - там в процессе разработки стартера решены, по-моему, эти проблемы.

Re: Как запустить ACAD без приложений указанных в "StartUp Suite"?

> kpblc
проблема так и не решина :(

Честно говоря, я б прошерстил главу 20 "САПР на базе..."

можно ссылочку, а то не нашел ничего.

HKU\...\AutoCAD\...\Appload\Startup

содержит NumStartup со значением которое показывает количество добавленных приложений в Startup Suite. Есди это значение обнулить, то ACAD запустится без них, но при его закрытии все значения с данного ключа удалятся.

Re: Как запустить ACAD без приложений указанных в "StartUp Suite"?

Вот нашел ответ :) осталось реализовать

[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD]
"CurVer"="R15.0"
[HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R15.0]
"CurVer"="ACAD-2:409"
[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R15.0\ACAD-2:409\Profiles]
@="<<Unnamed Profile>>"
[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R15.0\ACAD-2:409\Profiles\<<Unnamed Profile>>\Dialogs\Appload\Startup]
"NumStartup"="4"
"1Startup"="..."
"2Startup"="..."
"3Startup"="..."
"4Startup"="..."

Re: Как запустить ACAD без приложений указанных в "StartUp Suite"?

Понимаешь, я через lisp такое решал - см. http://www.arcada.com.ua/forum/viewtopic.php?t=439
Кстати, там же указана возможная проблема на "новом" профиле.
Кстати, а если у юзера стоит только ADT? или MDT? Или ABS? Тут не все так просто может оказаться. А если еще и разных версий...

Re: Как запустить ACAD без приложений указанных в "StartUp Suite"?

Пробежался по ссылке глянул на листинг, код решает проблему, но не совсем потходит очень брутально на мой взгляд.
1) Нужно запустить ACAD
2) Подгрузить и выполнить lisp, чтоб найти отредактировать профиль.
3) Закрыть ACAD, чтоб изминения вступили в силу и запустить заново ACAD.
мои мотод позволяет это сделать без запуска ACAD.

Re: Как запустить ACAD без приложений указанных в "StartUp Suite"?

Нет, не позволяет, уж извини. А лисп может и сам выполниться - в конец поставь вызов основной функции, он и выполнится сразу.

Re: Как запустить ACAD без приложений указанных в "StartUp Suite"?

> kpblc
Возможно я что то не понимаю. Тогда да прошу прояснить, я благодарен за вашу ссылку. Но все равно при запуске АСAD, бежит по ключам, что я привел выше и решает что ему делать разве не так?
1) ключ показывает какой из установленных ACAD -ов является по умолчанию
2) ключ показывает не знаю что означает точно, но по нему в HKU мы доберемся до ключа Profiles
3) ключ даст имя профиля который будет грузить ACAD
4) зная данные полученные в пункте 3 мы добираемся к строкам StartUp Suite.
далее корректируем их при необходимости и востанавливаем при завершении работы приложения.
Вот и все дела теперь можно создавать объект ACAD

Re: Как запустить ACAD без приложений указанных в "StartUp Suite"?

> SmeL
А можно ко мне на "ты", а? Я не настолько крут...
ключи, кстати (на машине поставлен 2005 и 2006) у меня такие:

HKEY_CURRENT_USER\Software\Autodesk\AutoCAD
"CurVer" = "R16.1"
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.1
"CurVer" = "ACAD-304:409"
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.1\ACAD-304:409
[b]@[/b] = "<<Debug profile>>"

Ну и далее по тексту. Для операций с реестром из-под чистого VB я б использовал такие функции:

Public Declare Function RegConnectRegistry Lib "advapi32.dll" Alias "RegConnectRegistryA" (ByVal lpMachineName As String, ByVal hKey As Long, phkResult As Long) As Long
Public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Public Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
Public Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
Public Declare Function RegGetKeySecurity Lib "advapi32.dll" Alias "RegGetKeySecurity" (ByVal hKey As Long, ByVal SecurityInformation As Long, pSecurityDescriptor As SECURITY_DESCRIPTOR, lpcbSecurityDescriptor As Long) As Long

Объявления взяты из VB 6.0 (API Viewer). В последующих версиях может быть что-то изменено.

Re: Как запустить ACAD без приложений указанных в "StartUp Suite"?

> kpblc
kpblc а зачем ты написал мой метод еще раз я просто хотел увидеть пояснения слов
>SmeL: мой мотод позволяет это сделать без запуска ACAD.
>kpblc: Нет, не позволяет, уж извини
Но судя по твоим ключам метод работает по крайней мере с ACAD map 2000i/2000/2005/2006

Re: Как запустить ACAD без приложений указанных в "StartUp Suite"?

> SmeL
Сорри, имелось в виду, конечно, мой метод - он не позволяет (в отличие от твоего).
Метода должна работать вообще-то по всем версиям када, начиная с 2005. Просто до 2004 включительно, по-моему, были другие ключи реестра...