Пускают мелкий http сервер (они таки решили что IIS 7.0 для html справок - это слишком круто) - который раздаёт локальную справку..
В трее иконка - и.. ну многое сделано через ж@пу - и вообще. например
ссылки там имеют вид http://127.0.0.1:47873/help/1-6072/ms.help?мусор - где номер порта и адрес хоста - статические - а 6072 - это номер процесса. Зачем это они сделали - на их совести. Я уж молчу что они извратили идею http - пути и т.п. - всё в динамике? в запросе. что не позволит нормально использовать html.. но этим страдают многие. Но номер процесса в пути???
С внешки можно подключаться к этому же порту - но на все вопросы - "Bad Host" - как если не угадать номер процесса ..
Так вот. К вопросу хелпа *msdev 2010. Примеры кода там имеют удобный интерфейс - где разные языки заключены в разные "табы". Выбираешь таб - он пишется в куку - и все остальные запросы автоматом этот язык потом будут показывать "по умолчанию".
Реализатору респект К тому же код грамотный при первом взгляде - поддержка разных браузеров (разве что копирование в буфер обмена для хрома без анализа версий или чего-то там добавили). Хотя это мог какой-то исправлятор отсебятину наваять. Но локализаторы или кто там потом порылся.. Проблема в том, что есть язык C#, C++, F#, JScript. А вот бейсиков - оказывается два.
Первый - называется VB - и он идёт первым в списке (оно и понятно - тайную любовь БГ к языку своей молодости в мелкомягкой корпорации возвели в ранг всеобщей любимицы). Ну да оно не страшно в связи с краткостью и памятью на табы. Но вот тот "умник" что ковырялся "после" - добавил ещё одну вкладку - дубликат языка "VB" который так и называется - "Язык Visual Basic". Кроме всего прочего - он показывается отдельной вкладкой Оторвать бы этому ковыряльщику его ковырялки..
Пришлось ковырять "C:\Program Files\Microsoft Help Viewer\v1.0\dev10.mshc" (zip - архив - что также показывает грамотность "родного" автора поделия - не cab какой-то) и править файлик branding.js - и вот такая вот у меня получилась функция:
function addSpecificTextLanguageTagSet(codesnippetid) { for (var i = 1;i < 6;i++) { var snippetObj = document.getElementById(codesnippetid + "_tab" + i); if (snippetObj == null) break; var tagSet = getDevLangFromCodeSnippet(snippetObj.innerHTML); if (!allLanguageTagSets.hasObject(tagSet)) allLanguageTagSets.push(tagSet); } if (!snippetIdSets.hasObject(codesnippetid)) snippetIdSets.push(codesnippetid); else { var obj1 = document.getElementById(codesnippetid); var obj2= obj1.nextSibling.nextSibling; if (obj2.id == codesnippetid) obj2.style.display = 'none'; } }