Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Возможно ли в свойствах ярлыка поменять размер шрифта посредством cmd/vbs?

Ответить
Настройки темы
CMD/BAT - [решено] Возможно ли в свойствах ярлыка поменять размер шрифта посредством cmd/vbs?

Аватара для Anton04

Ветеран


Сообщения: 2070
Благодарности: 391


Конфигурация

Профиль | Отправить PM | Цитировать


Возможно ли в свойствах ярлыка поменять размер шрифта посредством cmd/vbs?

Например после установки "Far manager" появляется ярлык на рабочем столе, но по умолчанию там стоит 20 размер шрифта, а хочется (для примера) 28.

Интересует, в основном, решение на cmd, но на vbs то же пойдёт.

-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.


Отправлено: 12:57, 02-08-2011

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Например, так:
читать дальше »
Код: Выделить весь код
Option Explicit

Const SSFMOpenReadWrite = 1

Const strConsoleDataBlockSignature = "CC000000020000A0"
Const lngFontSizePosition          = 24


Dim objFSO
Dim objSpeechFileStream

Dim strLnkFileName
Dim lngConsoleDataBlockPosition

Dim arrContent


'strLnkFileName = "E:\Песочница\0063\Far2.lnk"
strLnkFileName = WScript.Arguments.Item(0)

Set objFSO                = WScript.CreateObject("Scripting.FileSystemObject")
Set objSpeechFileStream   = WScript.CreateObject("SAPI.spFileStream")

With objFSO
	If .FileExists(strLnkFileName) Then
		If UCase(.GetExtensionName(strLnkFileName)) = UCase("lnk") Then
			.GetFile(strLnkFileName).Copy strLnkFileName & ".bak", True
			
			With objSpeechFileStream
				.Open strLnkFileName, SSFMOpenReadWrite
				.Read arrContent, objFSO.GetFile(strLnkFileName).Size
				
				lngConsoleDataBlockPosition = InStr(ConvertByteArray2HexString(arrContent), strConsoleDataBlockSignature)
				
				If lngConsoleDataBlockPosition <> 0 Then
					.Seek lngConsoleDataBlockPosition \ 2 + Len(strConsoleDataBlockSignature) / 2 + lngFontSizePosition + 2
					.Write 28
				Else
					WScript.Echo "Can't find ConsoleDataBlock section in [" & strLnkFileName & "]"
				End If
				
				.Close()
			End With
		Else
			WScript.Echo "File [" & strLnkFileName & "] is not *.lnk file"
		End If
	Else
		WScript.Echo "File [" & strLnkFileName & "] not found"
	End If
End With

Set objSpeechFileStream   = Nothing
Set objFSO                = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
Function ConvertByteArray2HexString(arrByteArray)
	Dim i
	Dim strValue
	
	strValue = ""
	
	For i = 1 To LenB(arrByteArray)
		strValue = strValue & Right("00" & Hex(AscB(MidB(arrByteArray, i, 1))), 2)
	Next
	
	ConvertByteArray2HexString = strValue
End Function
'=============================================================================

Подразумевается, что в ярлыке задан TrueType шрифт.

Последний раз редактировалось Iska, 03-08-2011 в 08:18.

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:12, 03-08-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Для cmd, ежели кто восхочет реализовать:
1. Найти в файле ярлыка сигнатуру из восьми байт «CC 00 00 00 02 00 00 A0». Если она найдена — значит в ярлыке наличествует секция «ConsoleDataBlock».
2. От начала найденной сигнатуры отсчитать (8+24+3) байта: размер самой сигнатуры (8 байт) плюс смещение внутри секции поля «FontSize» после сигнатуры (24 байта) плюс смещение нужного байта внутри поля; размер самого поля «FontSize» — четыре байта, нас, для TrueType шрифта, интересует 2-й байт
читать дальше »
(вообще-то, правильно — 3-й и 2-й байты [именно в таком, обратном, порядке; 1-й и 0-й байты используются, совместно с 3-им и 2-м байтами, при задании размера растровых шрифтов], но, думаю, вряд ли кто-то будет задавать размер шрифта для консольных приложений свыше 256 пикселей).

3. Для байта, полученному по этому смещению, задать потребный размер TrueType шрифта.

Отправлено: 08:14, 03-08-2011 | #3


Аватара для Anton04

Ветеран


Сообщения: 2070
Благодарности: 391

Профиль | Отправить PM | Цитировать


Цитата Iska:
Например, так: »
Я так понимаю, что .Write 28 это желаемый размер шрифта? А strLnkFileName = "E:\Песочница\0063\Far2.lnk" это путь к ярлыку?

Спасибо попробую и отпишусь.

P.S. А можно чтобы путь к ярлыку указывался вне скрипта? например чтоб можно было применить в cmd: my.vbs "%ALLUSERSPROFILE%\Рабочий стол\FAR manager.lnk"

-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.


Отправлено: 10:02, 03-08-2011 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Anton04:
Я так понимаю, что .Write 28 это желаемый размер шрифта? »
Да.
Цитата Anton04:
А strLnkFileName = "E:\Песочница\0063\Far2.lnk" это путь к ярлыку? »
Да, но эта строка в скрипте закомментирована:
Код: Выделить весь код
'strLnkFileName = "E:\Песочница\0063\Far2.lnk"
Была оставлена «на пробу». А так путь к ярлыку берётся из первого параметра скрипта:
Код: Выделить весь код
strLnkFileName = WScript.Arguments.Item(0)
Т.е., в командной строке можно вызывать именно так, как Вы написали:
Цитата Anton04:
чтоб можно было применить в cmd: my.vbs "%ALLUSERSPROFILE%\Рабочий стол\FAR manager.lnk" »
Anton04, Вы хотите менять размер шрифта в ярлыке сразу после установки Far Manager'а?
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:06, 03-08-2011 | #5


Аватара для Anton04

Ветеран


Сообщения: 2070
Благодарности: 391

Профиль | Отправить PM | Цитировать


Цитата Iska:
Вы хотите менять размер шрифта в ярлыке сразу после установки Far Manager'а? »
Да конечно. А что это разве что-то меняет!? Я выбрал Фар как наиболее яркий пример...

P.S. Всё работает спасибо. Правда за-комментировал строку создания bak файла, т.к. мне не к чему.

-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.


Последний раз редактировалось Anton04, 31-08-2011 в 15:57.


Отправлено: 13:12, 03-08-2011 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Anton04, я не уверен, но, помнится, сразу после установки Far Manager'а в ярлыке указан растровый, не TrueType, шрифт. Скрипт надо будет менять.

Цитата Anton04:
комментировал строку создания bak файла, т.к. мне не к чему. »
На всякий случай: вдруг где что у меня не так .

Последний раз редактировалось Iska, 04-08-2011 в 00:32. Причина: Опечатка в знаке препинания

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:58, 03-08-2011 | #7


Аватара для Anton04

Ветеран


Сообщения: 2070
Благодарности: 391

Профиль | Отправить PM | Цитировать


Iska,

Так, посмотрел, чё-то не нравится мне этот шрифт "Lucida Console" хочу "Точечные шрифты" и размером 10х18.
Поможете реализовать?

-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.


Отправлено: 16:09, 31-08-2011 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Anton04, я попробую почитать документацию на эту тему в ближайшие пару дней.

P.S. Я предпочитаю Consolas из последних версий Windows 7. Помнится, вроде как его можно получить с сайта Microsoft и сравнительно честно пользовать и под старыми ОС. Не пробовали?

Отправлено: 18:22, 31-08-2011 | #9


Аватара для Anton04

Ветеран


Сообщения: 2070
Благодарности: 391

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: gif font.gif
(35.3 Kb, 12 просмотров)

Цитата Iska:
я попробую почитать документацию на эту тему в ближайшие пару дней. »
Буду ждать. Спасибо.

Цитата Iska:
Я предпочитаю Consolas из последних версий Windows 7. Помнится, вроде как его можно получить с сайта Microsoft и сравнительно честно пользовать и под старыми ОС. Не пробовали? »


Посмотрел, но он тоже не очень, больно режет глаз, я даже скриншот сделал для сравнения (в верху точечный в низу Consolas).

-------
Слабый всю жизнь идёт лёгкой дорогой, черта сильного выбрать трудный путь.
Будь осторожен в своих желаниях, ибо они иногда сбываются.


Отправлено: 11:09, 01-09-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Возможно ли в свойствах ярлыка поменять размер шрифта посредством cmd/vbs?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Размер шрифта в CHM-справке Belomor Программное обеспечение Windows 4 04-09-2011 19:46
CMD/BAT - [решено] Как создать ярлык и поменять его иконку или поменять иконку уже существующего ярлыка Centrinar Скриптовые языки администрирования Windows 6 04-09-2011 10:56
Интерфейс - Размер шрифта , помогите hutnet2 Microsoft Windows 2000/XP 2 06-07-2010 13:41
Интерфейс - [решено] найти объект в свойствах ярлыка поместить в контекстное меню emergency Microsoft Windows 2000/XP 5 27-10-2008 23:02
Изменение шрифта ярлыка на десктопе Koddy Microsoft Windows 2000/XP 11 10-03-2005 07:52




 
Переход