Опять немного ошибся... Возможна только временная регистрация, которая действует до момента её отмены или перезагрузки компьютера.Qwertiy писал(а):Немного ошибся... Нельзя стандартным перетаскиванием файла шрифта в Шрифты. А вот зарегистрировать шрифт в системе без копирования в Fonts возможно.Qwertiy писал(а):Дело в том, что без прав администратора это сделать нельзя.
Мне кажется, стоит всё-таки добавить регистрацию шрифтов на время работы UC. Это не занимает много времени (во всех смыслах), однако польза достаточно ощутима. Например, мне нравится шрифт Consolas и семейство DejaVu.
Необходимый код почти не будет отличаться от кода для модального запуска uncom.exe с регистрацией шрифтов до его запуска и её отменой после завершения:
Код: Выделить всё
Module All
Private Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long
Private Declare Function RemoveFontResource Lib "gdi32" Alias "RemoveFontResourceA" (ByVal lpFileName As String) As Long
Private Sub AddFonts()
Try
Dim FontPath As String = My.Computer.FileSystem.CombinePath(My.Application.Info.DirectoryPath, "Fonts")
For Each FontFile As String In Directory.GetFiles(FontPath)
AddFontResource(FontFile)
Next FontFile
Catch
End Try
End Sub
Private Sub RemoveFonts()
Try
Dim FontPath As String = My.Computer.FileSystem.CombinePath(My.Application.Info.DirectoryPath, "Fonts")
For Each FontFile As String In Directory.GetFiles(FontPath)
RemoveFontResource(FontFile)
Next FontFile
Catch
End Try
End Sub
Public Sub Main()
AddFonts()
Try
System.Diagnostics.Process.Start(My.Computer.FileSystem.CombinePath(My.Application.Info.DirectoryPath, "uncom.exe")).WaitForExit()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Не удалось запустить Unreal Commander")
End Try
RemoveFonts()
End Sub
End Module
PS: Надеюсь, Вы не против использования в этой программе значка UC. Просто она предназначена только для запуска UC, поэтому, т. к. некоторые программы (меню для флешек) извлекают значок из exe-файла, логично, чтобы он не отличался от значка UC.