← All posts tagged Win8

OCTAGRAM
far Win8 В Windows 7, если я изменил ярлык Far Manager, добавил ключ /w, чтоб ему размер можно было менять нормально, то запущенный через этот ярлык Far Manager ведёт себя как положено, а если создавать новые окна щелчком средней кнопки мыши по группе окон, то они создаются без /w почему–то, так что приходится добавлять Quick Launch панель и дальше как по старинке. А вот в Windows 8 модифицированный ярлык создаёт другую группу окон, и в этой другой группе новые окна создаются с /w. Это победа!
Хотя было бы лучше, если бы в Far это поведение было по умолчанию. Или программные интерфейсы консоли стали чуть ближе к изменяемым виртуальным терминалам POSIX.
OCTAGRAM
Windows криворукость Win8 Разобрался, от чего у меня постоянно сбивались клавиши переключения раскладки ( #2781221 ) в Windows 8, так что приходилось Панель управления постоянно держать открытой наготове. Оказывается, они сбиваются каждый раз при запросе UAC, когда затеняется Рабочий стол. Пытался поставить настройки переключения раскладки для всех пользователей и для стартового экрана, не помогло. Отключил затенение UAC, теперь не сбиваются.
OCTAGRAM
Windows Delphi WinRT thomgerdes.com

Один из немногочисленных пока обзоров Windows Runtime.

The first thing I noticed is that Windows is doing a lot to break the API down into Namespaces, and for the most part each metadata file describes one namespace. So my first reaction was to put the contents of each metadata file into one Delphi unit. This doesn't quite work though because of a few things: One metadata file may actually contain multiple namespaces, one namespace might be included in several metadata files, and there are circular dependancies between types in the various metadata files.
Не ожидал такого дерьма от Microsoft. Это же из C++, это должно быть похоронено, алё? Один файл – один модуль, имена одинаковые. Что опять за творчество восьмидесятых?

Generic Interfaces
Generics are used pretty heavily throughout WinRT. In the C++ language bindings, they end up translating down to a template class, and the pre-compiled headers actually have to parametrize every instance of a generic class. This is pretty ugly and it'd be much nicer to just declare the interface and have the compiler do the right thing. Delphi has a similar problem for similar reasons. Generic Interfaces are supported by the compiler, but the problem arises in that you cannot specify a GUID for parametrized instances of a given generic interface. So for now, I've had to create a unique interface for every parameterized interface in WinRT.

А вот про Generics в API не знал. Здесь WinRT лучше, чем IBM SOM. Однако,

But how do you go about assigning a GUID to the interfaces? The answer lies in RoGetParameterizedTypeInstanceIID.
Функция эта доступна только в Windows 8, из–за этого нельзя компилировать с других OS. Кстати, не проверял, но, может быть, было бы достаточно унаследовать GUID–интерфейс от не–GUID–ного generic interface. Ну или оставить generic interface as is, а получать его через Supported(), а GUID вычислять на целевой платформе.

Впрочем, компилятор следующей версии Delphi наверняка изменится в такую сторону, что эти workaround станут не нужны. Что нравилось в Delphi, так это сращивание с компонентными технологиями Windows до такой степени, что использовать их из Delphi удобнее, чем из C++ и C# от Microsoft. Это же и её минус как плохо переносимого ЯП. Я раньше думал, это Borland додумался TDateTime сделать из Double. Ан нет, это из COM пошло. Ну хоть проблема 2000 не грозит на время существования Солнечной Системы.

Плохо, что WinRT доступен только в Win8. Потребуется лет восемь, чтобы на нём можно было писать для массового пользователя. Лучше бы, наоборот, в 2001м году вместо .NET был бы выпущен WinRT, входил бы в обновления OS и был бы доступен везде, а .NET, наоборот, был бы доступен не ранее какой–нибудь версии Windows.