Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Спасибо. Я думал о таком варианте, но хотелось бы самому уметь, только средствами NB. Не думаю, что там что-то космически сложное. Где-то не прописываю, вот шрифт и удаляется сам.
Сейчас делаю так:
Code
FileExists "C:\WINDOWS\Fonts\CALIBRI.TTF" "[calibriN]" If "[calibriN]" "=" "False" MessageBox "Выберите действие" "В операционной системе Вашего компьютера не обнаружен|необходимый для работы шрифт Calibri (True Type).|Без этого шрифта программа будет отображаться неправильно.||Установить шрифт Calibri на Ваш компьютер?" " Да | Нет " "[InstCalibri]" If "[InstCalibri]" "=" "1" FileCopy "[PubDir]CALIBRI.TTF" "C:\WINDOWS\Fonts\CALIBRI.TTF" RegistryWrite "HKEY_LOCAL_MACHINE" "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts\Calibri (TrueType)" "CALIBRI.TTF" AlertBox "Сообщение" "Шрифт Calibri (True Type) успешно установлен!" Else AlertBox "Сообщение" "Вы сможете установить шрифт и при другом запуске программы" EndIf EndIf
Шрифт при запуске проги копируется, тестер его видит в системной папке шрифтов, но после закрытия приложения шрифт из Fonts исчезает... Я понимаю, если бы я вместо FileCopyприменил бы ExtractFile- это еще было бы объяснимо... Есть идеи?
эээ... путь в реестре вроде как отличается в завис-ти от версии ОС. Первый вопрос - какая ОС у клиента?
Quote (Вадим)
Шрифт при запуске проги копируется, тестер его видит в системной папке шрифтов, но после закрытия приложения шрифт из Fonts исчезает...
второй - клиент является администратором в системе где запускается прога?, третий - если Vista/7 то программа запускается от имени администратора или нет? Как задавать вопросы
клиент является администратором в системе где запускается прога
Вот это не догадался уточнить. Но ведь если бы был запрет, то вообще не удалось бы скопировать в папку. А так она вроде бы как отдаётся, но потом идет на попятную
А система у тестера: Win XP. Поэтому пока не заморачивался определением операционной системы. Но реализовать разные записи в реестр при разной системе не сложно.
Добавлено (28 Январь 2010, 03:27) --------------------------------------------- Перерыл весь интернет, не встретил похожую проблему с установкой шрифта, чтобы он после копирования сам исчезал из директории... Установка шрифта должна ограничиваться копированием в системную папку шрифтов и прописыванием в реестр.
Может быть это сама NB убирает файл шрифта после закрытия приложения? Прибирается, так сказать. Может быть NB особо щепетильна в отношении системных папок вообще? Чтобы всякие вирусы не писали с ее помощью, например. Есть информация на этот счет?
Может быть это сама NB убирает файл шрифта после закрытия приложения?
вполне вероятно что так и происходит собственно... но так вроде не должно происходить когда ты вручную копируешь файл и создаешь запись в реестре. Тут нужно проверить путем предварительного копирования и занесения в реестр вручную без участия нб, будет ли шрифт сохраняться. Если хочешь, поэкспериментируй у себя на машине, удали колибри и попробуй поставь сперва заново из нб, а потом вручную и проверь. Как задавать вопросы
проверить путем предварительного копирования и занесения в реестр вручную без участия нб
У меня при копировании шрифтов вручную (просто командой "вставить" в папке шрифтов) происходит их автоматическая установка, о чем свидетельствуют появляющиеся сразу записи о них в реестре. Соответственно удаление шрифтов из системной папки автоматически приводит и к удалению записей в реестре. Т.е. на действия пользователя ограничение на добавление шрифтов не действует. По крайней мере в моей системе. Оно и логично, что у пользователя приоритет выше, чем у программы... Может тогда надо сымитировать нажатие клавиш для копирования шрифтов в системную папку?
Quote (Alex3A)
посмотри тут, шкрипт vb
Из описания я понял только, что используется схема из двух шагов, где первый - как у меня - копирование шрифта в системную папку шрифтов, а вот второй шаг мне не понятен. Указано, что используется для установки шрифта вызов API посредством "RunDll32.exe gdi32.dll". Что это значит? И как можно этим воспользоваться из NB? И что такого делает запуск функции API, кроме как прописывание шрифта в реестре? Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
Сделал исходник с одной кнопкой, код которой копирует шрифт в Fonts и прописывает его в реестр. Надо было сразу так поступить, но кто же знал, что добавить шрифт окажется так не просто...
В общем, на моем компе вообще другая картина. Т.е. шрифт даже в папку шрифтов не может программно скопироваться . Вообще там не появляется. А появляется сообщение "Аccess denied!".
Наверное это от дополнительных настроек безопасности системы зависит. А после нажатия ОК в реестр данные заносятся без проблем. В реестр значить пускають, а к шрифтам ни ногоЙ!
Т.е. видимо вся сложность именно в том, чтобы программно разрешить проекту доступ к системной папке. Наверное это как-то и делают с помощью API? Инсталляторы также работают?
Если кому интересно - исходник в прикреплении (весь код на одной кнопке), плюс там же один испанский шрифт AntoniousJ Jencom (TrueType). Он используется исходником. Может кому заодно и понадобится, например, справку читать по плагину Эсперальты . Код тот же самый, что я привел выше, только шрифт испанский указан.
Добавлено (28 Январь 2010, 07:03) --------------------------------------------- Да, может стоит предупредить. Что запись в реестр будет верна для систем выше Windows 98. Интересно, кто-то пользуется Win 9x?
Добавлено (28 Январь 2010, 07:20) --------------------------------------------- Нет, все верно! Появляется! Точнее в папке Fonts шрифт КАК БЫ появляется, но на самом деле его там нет. Т.е. благодаря записи в реестре в системной папке появляется запись имени шрифта, но если по этому имени щелкнуть правой кнопкой мыши и выбрать "свойства", то виндовс выдаст ошибку, что такой файл шрифта не найден (и покажет имя файла, а не имя шрифта).
Ну, хоть это узнал, что на самом деле файл даже и не появляется в папке Fonts.
В общем задача сейчас прояснилась - как скопировать файл шрифта в папку шрифтов виндовс.
Добавлено (28 Январь 2010, 07:35) --------------------------------------------- А после закрытия приложения запись об имени шрифта из системной папки исчезает. Но, что любопытно, теперь исчезает и запись в реестре, вслед за ней. Видимо так и было с самого начала, но я не заметил.
И запись в реестре все-таки (без реального шрифта в системной папке) не задерживается.
Попробовал вручную снять у папки Fonts атрибут "только чтение", но ни фига, он опять сам появился.
да он разве не по тому же принципу работает? -- как один из вариантов, попробуй сделать инсталлятор на прогу, в какой-то проге создания инсталляторов я видел установку шрифтов.
Да, так и есть! Эта инфа мне тоже попадалась. В MMB сам принцип точно такой же - шрифт копируется во временную папку и система извещается, что туточки он, родимый. После закрытия проекта он исчезает. Только в NB это делать еще удобнее, не надо прописывать команду InstallFont, а просто галочку поставить при компиляции (есть целый раздел настроек) взять с собой "все шрифты проекта" или "только выделенные галочкой" или "никакие, винда сама распорядится" или "только шрифты не являющиеся базовыми для Windows". Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
ну по-ходу то что шрифты/записи реестра пропадают после закрытия проги это так и должно быть. ну а когда мы их руками копируем, то в чем дело? я сейчас лично попробовал вручную поставить калибри, и пока я не сделал это через пу->шрифты->установить... он был недоступен в программах, несмотря ни на что (возможно надо было перезагруз сделать, но не проверял). Как задавать вопросы
DEMBEL, Я ему предложил такой вариант Smart Install Maker Она умеет и шрифт добавлять, и в реестре записи делать. Он отказался.
Да нет, не то чтобы отказался. Совет хороший! Я знаю об этой проге, она действительно классная, судя по функциям! Давно у меня стоит, но не пользовался ни разу, да и в этот раз хотел обойтись своими силами. Ведь интересно же, в конце концов!
А чтобы проги шрифт видели надо в реестре его прописать. Или еще что-то есть?
ну ПО ИДЕЕ да, в общем, нужно еще "дать знать" открытым программам в системе что доступен новый шрифт. Вот как это сделать я и думаю, вернее, думаю в этом ли проблема или нет. Возможно следует просто перезагруз сделать... Попробуй удалить колибри(файл,реестр)->перезагрузить комп->поставить обратно ВРУЧНУЮ (и лучше не через Проводник->скопировать файл в fonts и написать в реестр)->снова перезагрузить и проверить доступен ли шрифт. Как задавать вопросы
"дать знать" открытым программам в системе что доступен новый шрифт
но либо не пашет либо я неправильно вызываю... попробую потом еще раз. Либо вместо этого пробовать машину перезагружать как я писал выше. Как задавать вопросы
Шрифты это вещь щепетильная, в винде куча прибамбасов со шриффтами, есть ряд стандартных шрифтов, которые должны быть всегда. В принципе, при нарушении стандартных шрифтов, нарушается работа винды - запустил какую прогу а там фиг, ничего то и не видно. Есть такая фича шрифт по умолчанию, это когда в проге не указан конкретный, потом выбор размера в системных прогах. В общем дабы рьяные юзвери не смогли поламать операционку, доступ к системной папке затруднен. Выбрал не тот шрифт, хрен закроеш окно, или управление проги становится недоступным. С другой стороны, множество програм использует свои собственные шрифты, на ряду с системными, и держать их могут отдельно. Ну и конечно все телодвижения оставляют свой след в реестре, по поиску поищите слово font, найдете кучу веток для разных програм. Инсталироватьсвой шрифт в систему можно стандартным методом, вы его знаете. Как более быстрая альтернатива, можно, преварительно пошаманив, добавить в меню "отослать" папку фонт. Добавления своего шрифта в системные не всегда приведет к тому что нужная вам прога его увидит, у нее может быть другое место хранения шрифтов, или в установленном вами шрифте может не оказаться нужной для этой проги страницы, плюс всякия премудрости типа локалей и еще много разной чепухи. Поможет ли перезагрука? Не всегда, все зависит от устройства конкретной проги, не исключаю что могут быть и такие что не в состоянии подхватить появившийся фонт. К примеру список фонтов для нее создается при инсталяции и записывается в реестр, всякое бывает.
"дать знать" открытым программам в системе что доступен новый шрифт
Это твое высказывание я немного недооценил. Респект, навел на мысль!
Quote (Alex3A)
множество программ использует свои собственные шрифты, на ряду с системными, и держать их могут отдельно
Да, и это совсем не мешает другим программам видеть этот шрифт, если о нем есть запись в реестре! И с чего я думал, что только из системной папки можно видеть?
Quote (Alex3A)
К примеру список фонтов для нее создается при инсталяции и записывается в реестр, всякое бывает.
Весьма любопытно! Учтём, на будущее!
В общем, упорство в этот раз вознаградилось!
Проблема с установкой шрифта решена! Мне удалось найти (собственно, они и не прятались) ДВА работающих способа контроля шрифта в проекте (ну, не считая стандартных для NB). Попробую подытожить основное нарытое по данной теме, так, чтобы народу полезнее было, в случае подобных трудностей. Поэтому опишу подробно.
КАК ПРОГРАММНО УСТАНОВИТЬ НУЖНЫЙ ПРОЕКТУ ШРИФТ В СИСТЕМУ ПОЛЬЗОВАТЕЛЯ
Если текст в Вашей программе отображается неправильно, не тем шрифтом (например, у пользователя шрифт "разбегается", изменен характер его начертания, жирность и пр.), или если Ваша программа использует не системный шрифт и Вы опасаетесь того, что Windows подставит совсем не подходящий шрифт, то решить эту проблему можно.
Основное решение – стандартное, в настройках проекта NB (во время компиляции проекта) проставить галочку "все шрифты…" или галочку "только эти…" (и выбрать свои используемые нестандартные шрифты).
Однако может случиться так, как случилось у меня – почему-то NB не смогла дать системе пользователя знать, что использовать нужно тот шрифт, который я прикрепил к проекту (Calibri True Type), либо она этот шрифт к проекту не прикрепила, в общем, что-то пошло не так... Выход в этом случае – установить нужный шрифт программно, наверняка.
Для этого мы делаем две основных вещи: 1) Проверяем наличие нужных шрифтов на наличие в системе (во время запуска нашего проекта). Если их нет, то копируем туда свои из "багажа" дистрибутива нашего проекта (соответственно нужный шрифт мы в "багаж" заранее складываем, при компиляции). 2) Прописываем скопированные шрифты в реестр системы пользователя (тем самым регистрируем шрифты, чтобы они отображались в программах, обнаруживались системой и любыми программами).
Пишем код
Покажу на примере своего проекта, шрифт "Калибри" имеет 4 начертания, каждому соответствует свой файл шрифта, поэтому и в "багаж" мы сложим все 4 файла, после установки программы они окажутся в той же папке, где и исполняемый файл нашего проекта. Можно, конечно, добавить в код проверку на корректность установки шрифта, но наверное это уже лишнее. Надо все-таки доверять NB :).
Просто скопировать файл шрифта в системную папку C:\Windows\Fonts стандартными командами FileCopy или ExtractFile (или FileToVar / FileWrite через буфер обмена, с помощью глобальной переменной [Clipboard]) не получится, поскольку данная системная папка защищена - шрифт исчезнет сразу после закрытия Вашего приложения и программа просто не успеет им насладиться. Кроме того, новый шрифт становится доступным для программ только после перезагрузки системы, в противном случае проги его просто не увидят, даже если Вы шрифт скопировали и прописали в реестре.
Однако, скопировать в системную папку можно нестандартными командами. В частности это таки оказалось возможно, но с помощью команды npCopiarArchivos плагина NeoDouble Давида Эсперальты. В ниже приведенном коде не учтена проверка версии Windows, но проверить, определить платформу Windows (95, 98, ME, NT, 2000, XP) можно посредством глобальной переменной [WindowsPlatform] или командой npVersionWindows плагина NeoDouble.[/b]
После копирования с помощью этого плагина шрифт остаётся в системной папке и после закрытия приложения, а после перезагрузки компьютера становится виден всем программам (проверял на Word). Видимо копирование тут реализовано как-то иначе, "под столом", что-ли… :).
Второй способ контроля (установки) шрифта значительно проще. Шрифт никуда можно не копировать, можно оставить в папке проекта (в моем примере так и есть), а в реестре прописать абсолютный путь для него. Тогда, программы, обновляющие список шрифтов при запуске, обнаружат что шрифт с таким-то названием находится там-то.
В соответствующей ветке реестра "параметр" – это имя шрифта, а значение – это путь до него. Если вместо абсолютного пути к файлу в значении указано просто имя файла (не путать с именем шрифта!), то подразумевается, что шрифт находится в системной папке Fonts. Именно там его программа и будет искать. А если указан абсолютный путь, то будет искать именно по этому абсолютному пути.
Пример кода: (дает пользователю выбор – каким из двух способов устанавливать шрифт)
Code
FileExists "C:\WINDOWS\Fonts\CALIBRI.TTF" "[calibriN]" If "[calibriN]" "=" "False" MessageBox "Выберите действие" "В операционной системе Вашего компьютера не обнаружен|необходимый для работы шрифт Calibri (True Type).|Без этого шрифта программа будет отображаться неправильно.||У данного шрифта четыре вида начертания. |Возможно, программе потребуется установить все четыре.||Изменения вступят в силу только после перезагрузки компьютера.||Установить шрифт Calibri на Ваш компьютер?" "В системную папку Fonts|В папку программы Motive Power|Не в этот раз" "[InstCalibri]" If "[InstCalibri]" "=" "1" RegistryWrite "HKEY_LOCAL_MACHINE" "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts\Calibri (TrueType)" "CALIBRI.TTF" npCopiarArchivos "[PubDir]CALIBRI.TTF" "C:\Windows\Fonts" "True" AlertBox "Сообщение" "Шрифт Calibri (True Type) успешно установлен!" EndIf If "[InstCalibri]" "=" "2" RegistryWrite "HKEY_LOCAL_MACHINE" "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts\Calibri (TrueType)" "C:\Program Files\Motive Power\CALIBRI.TTF" AlertBox "Сообщение" "Шрифт Calibri (True Type) успешно установлен!" EndIf If "[InstCalibri]" "=" "3" AlertBox "Сообщение" "Программа будет работать, но многие надписи окажутся вне вашего поля зрения.||Рекомендуется установить шрифт при следующем запуске программы." EndIf If "[InstCalibri]" "=" "0" AlertBox "Сообщение" "Программа будет работать, но многие надписи окажутся вне вашего поля зрения.||Рекомендуется установить шрифт при следующем запуске программы." EndIf EndIf
И далее точно также повторяем этот блок кода для трех других файлов этого шрифта (только имена файлов и разделов, конечно, будут другие), либо можно написать один блок кода сразу для всех, но выглядеть он будет, естественно, иначе.
Но Вы можете и определить место для копирования своего шрифта произвольно.Главное, в реестре потом не забыть указать где программам этот самый шрифт искать. Если копировать, то, по всей видимости, логичнее копировать через команду FileCopy (когда файлы идут "багажом") и командой ExtractFile (если файлы были вложенными в проект). Второй вариант не совсем удобен тем, что увеличивает вес самого исполняемого файла, а не только дистрибутива. Но всё зависит от целей. Если нужен просто экзешник, без установочной программы и файлы должны работать только вместе с проектом, то этот вариант подойдет больше первого.
Внести изменения в реестр пользователя можно и другим способом. Этот способ может понадобиться, в случае, если программа уже установлена и Вам срочно нужно помочь исправить ситуацию без переустановки программы пользователем. Для этого нам нужно сначала сделать файл .reg, а затем запустить его на компьютере пользователя (например, отправив рег-файл архивом ему на почту). Чтобы создать такой reg-файл, заходим в редактор реестра (клавиши Win+R, команда regedit), находим нужный ключ и раздел реестра (для Windows выше 98-й):
Code
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts В данном разделе хранится список шрифтов зарегистрированных в Windows и пути доступа к ним. Каждый параметр представляет собой имя шрифта, а каждое значение параметра путь к файлу данного шрифта (или только название шрифта, если шрифт лежит в системной папке Fonts).
Делаем экспорт данных с раздела Fonts в реестре (для этого нажимаем по ней правой кнопкой мыши и выбираем "экспорт", выбираем место сохранения, задаем имя файлу, например, Calibri.reg и жмем ОК). Можно и вручную набрать нужное содержание этого рег-файла, но экспортом и быстрее, и мало шансов ошибиться, а ведь ошибка в одной букве может заставить Ваш компьютер удалить все программы, а затем взорваться… Шучу. Но таки, как известно, ошибаться в реестре не нужно все равно, поэтому вместо того, чтобы списывать путь в реестре - всегда копируйте его). Далее открываем получившийся рег-файл через любой Блокнот и удаляем все лишние строки, оставив только саму шапку рег-файла, имя ключа и четыре (в моем случае) строки нужных нам параметров с их значениями. В блокноте результат в моем случае выглядит так:
Для установки в системную папку
Code
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts] "Calibri (TrueType)"="CALIBRI.TTF" "Calibri Bold (TrueType)"="CALIBRIB.TTF" "Calibri Italic (TrueType)"="CALIBRII.TTF" "Calibri Bold Italic (TrueType)"="CALIBRIZ.TTF"
Для регистрации шрифта в любой папке, например в папке проекта:
Теперь Вы можете, там где это нужно, запустить рег-файл вручную, программно или отправить его пользователю и попросить его запустить просто дважды щелкнув по нему и согласившись с изменениями (потому, что появится окно выбора).
Если нужно сэкономить на размере дистрибутива. Если для Вас критичен размер проекта, а нужный файл(ы) шрифтов весит довольно много (к примеру, 4 файла Calibri весят 1,36 Мб, а это весьма заметно и для кого-то может быть критичным), то вместо того, чтобы инсталлировать шрифт можно просто управлять подстановкой шрифтов. Вы просто создаете правило, на случай, если нужного шрифта в системе нет, тогда она будет пользоваться тем шрифтом, который Вы ей определите сами (не отдавая этот выбор на волю лихого случая в геймерской машине… …). Для этого "химичим" точно также, но уже в этой ветке реестра:
Code
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes Информация об альтернативных шрифтах, которые используются вместо тех которые не установлены в системе.
Программно (или рег-файлом) создаем нужные параметры со значениями, где (в данном ключе реестра - FontSubstitutes) параметр – это шрифт по умолчанию, а значение – это тот шрифт, который должен использоваться для подстановки. Например, раскрыв в редакторе реестра раздел FontSubstitutes, вы заметите, что шрифт Arial Cyr образуется из шрифта Arial с использованием таблицы преобразования 204.
Рег-файл (с именем: "вашеимя.reg") в этом случае выглядел бы так:
Code
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ FontSubstitutes] "Arial Cyr,0"="Arial,204"
А команда записи в реестр командой NB выглядела бы так:
В более щепетильных случаях (и, пожалуй, так будет правильнее) можно организовать сначала проверку на наличие того параметра значение которого вы собираетесь создать (или поменять, ежели оно есть). А вдруг это правило смертельно необходимо какой-то проге пользователя? Для этого логично использовать команду чтения значения реестра. И если таковой параметр уже есть (например, для этого шрифта уже правило создано) и Вы его менять не собираетесь, то можно предусмотреть для этого случая выбор другого правила. И так хоть до посинения, пока имя параметра или хотя бы его значение не окажется свободным.
ПРИМЕЧАНИЯ:
В системе Windows 98 нужные разделы реестра будут называться чуть иначе (без NT):
В системе Windows 95 шрифты для подстановки определяются не в Реестре, а в файле win.ini (раздел FontSubstitutes), что, в принципе, тоже самое.
В любом случае, после изменения правил подстановки или установки шрифтов необходимо перезагрузить компьютер (иначе программы не будут видеть новый шрифт), о чем можно известить пользователя в соответствующем сообщении или сделать это программно (средств для этого достаточно).
Изменения настроек шрифтов лучше делать после того, как сделаны региональные установки.
Если в папке "Шрифты" в панели управления отсутствуют в меню специфичные для неё пункты (например, "Установить новый шрифт"), то причина может быть одной из перечисленных:
* атрибут "Системный" не установлен на каталог FONTS; * файл FONTEXT.DLL отсутствует или повреждён; * файл DESKTOP.INI в каталоге WINDOWS\FONTS отсутствует или повреждён.
Для восстановления системного атрибута на каталоге FONTS перейдите в сеанс MS-DOS, в каталоге WINDOWS выполните команду ATTRIB FONTS +S и перезагрузите компьютер.
Для восстановления файлов FONTEXT.DLL и DESKTOP.INI их необходимо извлечь из инсталляционного комплекта с помощью программы EXTRACT. Кстати, DESKTOP.INI – весьма интересный инструмент! С его помощью можно управлять всеми файлами в папке как определенным типом файлов и делать разные другие вещи.
hpwDllCall v1.03 - плагин обеспечивающий вызов DLL для NeoBook. Возможно, его применение позволило бы средствами самой NB (без плагинов) установить шрифт в системную директорию. Но это лишь гипотеза. Сам плагин, если кому нужно, лежит здесь: http://www.neosoftware.com/neobook....&lid=13
там все очень вкусное что касается всех системных функций. Но вызывать функции системных dll-библиотек можно не только через плагин, а через RunDll32. Например, вызовем функцию показа инфы о винде из shell32.dll: rundll32 shell32.dll, ShellAboutA Безопасное извл. устройства: rundll32.exe shell32.dll, Control_RunDLL hotplug.dll Таким образом доступны сотни системных функций.
Добавлено (29 Январь 2010, 11:18) --------------------------------------------- так я не понял, ты решил проблему с установкой шрифта?
Правильно ли я понимаю, что их таким образом можно через Run вызвать и в NB? И где можно почитать об этом синтаксисе вызова через программу rundll32 функций библиотек? Т.е. где можно узать о том, как этим всем пользоваться? Они в каких-то своих переменных предоставляют информацию?
Quote (DEMBEL)
так я не понял, ты решил проблему с установкой шрифта?
Да, проблема со шрифтом полностью решена, слава богу! Поэтому я и подытожил собранные за два дня материалы и подробно описал решение для тех, кому может оно понадобиться.
Сейчас я доработал код, но по прежнему все 4 начертания устанавливаются по очереди и фиксируется факт этой установки, а пользователь может выбрать каким способом устанавливать шрифты - с копированием в системную папку или нет. Разница для него лишь в том, что при деинсталляции моей программы исчезнут и шрифты (если они находились в папке программы и были просто прописаны в реестре, а не скопированы в системную папку шрифтов). Т.е. оба варианта решения рабочие и позволяют любым программам на компьютере использовать установленный шрифт. В тексте я рассмотрел еще третье решение - через создание правила подстановки похожих шрифтов, но не проверял на практике, ибо это какая-то половинчатая мера (ну, кроме случаев особенного желания сэкономить на весе дистрибутива).
Успокаивает то, что можно контролировать шрифты жестко, без фокусов и сюрпризов.
Добавлено (29 Январь 2010, 13:04) --------------------------------------------- Однако! У другого тестера, у моего брательника, эта проблема тоже была, и тоже решена. НО! Есть другая фишка, тоже касается шрифтов - на кнопках в проекте не отображаются надписи! Вообще. Девственно чистые плашечки, а не кнопки. Работают, что надо делают, но надписей на них нет.
Кто-нибудь сталкивался с таким???
Не успел с одним разобраться, как новый фокус...
Как будто в "свойствах экрана\оформление\дополнительно" элемент "Рельефные объекты" выставлен с белым шрифтом, но там выставлен черный, я проверил. Давал инструкции, дистанционно.
Правильно ли я понимаю, что их таким образом можно через Run вызвать и в NB?
ну да
Quote (Вадим)
И где можно почитать об этом синтаксисе вызова через программу rundll32 функций библиотек?
чтобы посмотреть функции и параметры требуется "расковырять" библиотеку, есть такие "хакерские" программки, на подобных же сайтах можно имеющуюся инфу посмотреть, но ее не так много. Ну и потом, потребуется поэкспериментировать с вызовом функции и ее параметрами чтобы получить 100% рабочий вариант, не всегда удается. А синтаксис в этом случае простой
Да, я на эту тему обратил внимание, после твоего поста (и благодаря Информеру, слава Диме энд Юре!). Заинтересовало. И в сети попадалось. Мне кажется это тоже очень перспективная тема, для расширения возможностей NB. Но мне пока существующих хватает, поэтому шибко не вбуривался в тему установки чего либо через файл *.inf А вообще тема хорошая! Спасибо! Надо мне Windows поизучать, а то все как-то кусками, то там, то сям... Вот эта прога, rundll32, например, в книге "Недокументированные и малоизвестные возможности Windows XP" называется гениальной программой и почти забытой самими программистами Microsoft. В общем, матчасть, матчасть...
Добавлено (30 Январь 2010, 05:13) --------------------------------------------- Обсуждение проблемы отображения надписей на кнопках перенес в новую тему, поскольку тема эта не про шрифт, а, скорее, про объекты вообще (поскольку у тестера не отобразился еще и один чек-бокс, на что я не сразу обратил внимание). И, кроме того, шрифт на кнопках все равно должен быть системным, если я правильно понимаю.