Аннотация:
Выпустив Visual Studio .NET компания Microsoft стала распространять MSDN в новой, более удобной и «продвинутой» оболочке, называемой Microsoft Document Explorer. К сожалению, Microsoft почему-то «забыла» предложить приемлемый способ использования новых редакций MSDN в старой доброй IDE от Visual C++ 6.0. Вместо этого в официальной документации декларируется попросту несовместимость новых версий MSDN с инструментальными средами старых версий. Необходимость же частого и оперативного использования подобной связки, возможно, возникла не только у автора этих строк. Но все ли так безнадежно? Публикуемый макрос призван частично ликвидировать вынужденные неудобства пользователей MS VC 6.0, заставив послужить ещё технологию COM на благо разработчиков, не торопящихся перейти к использованию последней версии Visual C++, но нуждающихся в самой свежей справочной информации.
Re: Макрос для подключения MSDN .NET к Visual C++ 6.0
Я скачал и установил на своей машине Ваш макрос RunMSDNdotNET.
Макрос работает, но выдает MessageBox с сообщением, что не найдена
коллекция.
Вы разработали свой макрос для MSDN January 2002, а у меня установлен MSDN
January 2004.
Поэтому пришлось подправить исходный текст, теперь оператор назначения
коллекции такой:
HelpApp.SetCollection "ms-help://MS.VSCC.2003", "Visual C++ and Related"
Теперь все работает без ошибок.
Предлагаю включить мое исправление в версию 1.1 Вашей статьи
"Макрос для подключения MSDN .NET к Visual C++ 6.0"
Спасибо Вам за отличную идею.
Желаю успехов!
Признаюсь. Я Basic не люблю и знаю весьма поверхностно.
И если бы он ни был языком макросов VC, то и знать не хотел бы;-)
В Вашем случае, похоже, не срабатывает проверка
if IsEmpty(HelpApp) Then
Попробуйте поэкспериментировать:
dim bWasHelpApp
bWasHelpApp = false
.............
'вместо этого: if IsEmpty(HelpApp) Then
if bWasHelpApp = false Then
bWasHelpApp = true
Попробуй сделать файл test.vbs, а в нем одну строку:
Set HelpApp = CreateObject("DExplore.AppObj")
Запусти. Ругается?
Если да, а я почти уверен, что да;-), то нужно разбираться с твоей системой.
Возможно какой-то антивирус блокирует подобные вещи. Или Windows Host Scripting криво стоит. Или MSDN новый неудачно происталлирован, тот же DExplore...
Аналогичная ситуация (не понимает CreateObject в скрипте VS, даже с "Word.Application"). При этом в Visual Basic все работает на ура =)
(Антивирус запрещал. ОС — Windows XP, Visual Studio обычная, 6-я...)
Какой Service Pack стотит у кого? Вроде это лечится установкой SP.
Вот что пишут в MSDN по этому поводу:
FIX: VBScript Does Not Permit CreateObject or GetObject
ID: Q194843
--------------------------------------------------------------------------------
The information in this article applies to:
Microsoft Visual Studio versions 6.0, 97
Microsoft Visual J++, versions 1.0, 1.1
Microsoft Visual InterDev, version 1.0
Microsoft Visual C++, 32-bit Editions, versions 5.0, 6.0
--------------------------------------------------------------------------------
SYMPTOMS
VBScript displays the following error in the Developer Studio shell when you attempt to access the CreateObject or GetObject functions:
Line #: ActiveX component can't create object 'CreateObject'
However, calls to these functions sometimes succeed in certain software configurations.
STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article.
This bug was corrected in Visual Studio 6.0 Service Pack 3. For more information about Visual Studio service packs, please see the following articles in the Microsoft Knowledge Base:
Q194022 INFO: Visual Studio 6.0 Service Packs, What, Where, Why
Q194295 HOWTO: Tell That Visual Studio 6.0 Service Packs Are Installed
MORE INFORMATION
The Automation Issues topic for the Microsoft Developer Studio environment in the Visual Studio 97 Environment Readme states that some VBScript objects and procedures are not supported from VBScript macros. Among the examples of unsupported constructs, it lists the CreateObject and the GetObject functions. For additional information, please see the following articles in the Microsoft Knowledge Base:
Q191200 Update Available for Window.External JScript Security Issue
Some users created macros using these functions, which executed successfully on certain software configurations, but failed on others. The fix in Service Pack 3 allows these functions to operate successfully, governed by the security settings of the object they specify.
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Вместо строки макроса
<quote>
HelpApp.SetCollection "ms-help://MS.VSCC", "Visual C++ and Related"
</quote>
вставьте
<quote>
HelpApp.SetCollection "ms-help://MS.MSDNQTR.2002OCT.1033", "Visual C++ and Related"
</quote>
А почему бы не поставить саму VS 7.0? Ведь она гораздо удобнее, чем предыдущая имхо... Я вот больше не буду шестую ставить. Не вижу ни одной причины, чтобы оставаться в ней.
Под VC7.0 не работает Intel Compiler 5.0 (он только под VC6), а нужен бывает — жуть.
Так что VC6 пока очень даже нужен. К тому-же в компаниях где софт только лицензионный — никто персонально для тебя VC7.0 покупать не будет ;-)
Ну, например, компиляторы C++ в них существенно различаются и несовместимы. Соответственно, параллельное использование обоих либо невозможно, либо требует существенных усилий. А оно надо?