В Windows можно выбрать локаль для пользователя, и от неё будет форматироваться всякое вроде чисел и дат. А чтобы форматировать оные числа и даты, есть ряд функций вроде GetNumberFormat() и GetDateFormat(). Они позволяют отформатировать что-то, используя собственную маску, используя системную маску или то, чем системную маску переопределил пользователь в региональных настройках. Конкретно дата-время форматируются двумя разными функциями, которые выполняют свою работу хорошо, но всё же один нюанс остаётся за кадром: порядок следования. Ну, тоесть, я с детства знаю, что сначала идёт дата, а потом время: возможно, в школе так научили. Но вот есть программы вроде Notepad2, которые сначала вставляют время, а потом – дату. И в локали нет ничего на эту тему, только отдельный формат даты и отдельный формат времени. И как быть? Вообще, есть какие-то правила на сей счёт?
Тег windows в блоге Linda-chan
Я уже писала об этом, но всё равно для меня забавно, что в Windows свёртывание окна на панель задач осуществляется функцией CloseWindow(), а развёртывание обратно – функцией OpenIcon(). Я ещё могу понять название второй функции, помня, что ещё в первой Windows никакой панели задач не было, и свёртывались окна в иконку на рабочем столе, так что при развёртывании иконка... эээ... открывалась. Но вот название первой функции... Даже в её описании испокон веков пишут, что она сворачивает, но не уничтожает окно, а чтобы уничтожить, надо использовать другую функцию. Тоесть понимают, что название может конфузить.
Кажется, я поняла, почему Microsoft так фанатично проталкивает Метро (которые UWP или типа того) и новую панель управления на его основе, где открывается только одно окно, а чтобы настроить что-то, требующее донастройки в нескольких разных местах, требуется постоянно ходить туда-сюда через все менюшки и вложенные пункты. Дело не в мобильных устройствах, где у Microsoft всё давно протухло. Дело в том, что они тоже решили ориентироваться на современную аудиторию™. А современная аудитория что? Правильно, травмированная с самого рождения, обвешанная менталочками ещё обильнее, чем флажками и пронаунсами, а главное – поголовно состоит из аутистов и сдвгшников. Вот и хватает панические атаки, когда видит на экране больше чем одно окно. А Microsoft не хочет, чтобы пользователи хватали панические атаки при работе с виндой, так что – UWP, одно окно на всё и хождения туда-сюда между менюшками и вложенными пунктами. Несовременная аудитория, правда, страдает, но на то она и несовременная, чтобы не обращать внимание на то, что она там вякает.
Люблю новый Диспетчер задач в Windows. Там есть много вкладок с бессмысленной информацией. Например, «Автозагрузка», которая показывает даже не все автозагрузки текущего пользователя. Или «Ресурсы», где показывает, сколько «системных ресурсов» употребили рандомные программы, часть из которых даже не установлена на компьютере, а имеет только заглушку в меню Пуск. Или первая вкладка, в которой показаны некоторые программы с некоторыми подробностями и некоторой группировкой. Там список «Приложения» и список «Фоновые процессы», что вызывает вопросы к тому, как виндовые процессы превращаются в «фоновые». Не, скорее всего, там алгоритм как в старом Диспетчере задач, просто в одном списке выводится то, что нашлось по старому алгоритму, а в другом то, что на нашлось по нему, но всё равно чудно. И, разумеется, никто не добавил опции «Всегда, блять, открывать вкладку «Подробности» по умолчанию» =_=
Стряхнула пыль с подзабытого искусства писать апплеты панели управления Windows.
Оказалось, что в Windows Neptune (которая – провалившаяся попытка сделать Windows 2000 Media Center Edition) уже можно использовать полноцветные иконки в трее.
Оказалось, что Windows ME таки позволяет в трее использовать полноцветные иконки. А я и не знала, ведь в MSDN это, вроде как, никогда не документировалось, а ME у меня никогда не было даже на виртуалке. Судя по тому, что вышла она позднее Windows 2000, фича не попала ни в изначальный релиз, ни в сервиспаки.
Windows XP была первой системой, позволившей в трее использовать иконки выше шестнадцати цветов. В Windows 2000 такого всё ещё было нельзя, хотя казалось бы.
Есть очень специфический компьютер, на котором загрузка возможна только с единственного накопителя. Тоесть, ни второй диск, ни флэшка, ни сидюк, ни флоповод не работают в качестве загрузочного устройства. Нужно водрузить туда Windows 2000. Если поставить винду на другом компьютере и вернуть диск, то происходит BSOD 0x0000007B. Предлагайте ваши предложения.
Расширение для Проводника, возвращающее человеческую информацию о версии файла.
https://www.codeproject.com...ion-Tab-Shell-Extens
Дропнула (с тяжёлым сердцем) поддержку Windows 95 в своих программах. Если рантайм FreeBasic починят – верну.
Windows 3.1 had configuration options to let you change the color of the blue screen messages. I dimly recall being told that the critical error message was originally red, but it was changed to blue for readability, as well as to make it less dramatic. My guess is that Windows 3.1 left an escape hatch in case they needed to change the color again.
https://devblogs.microsoft....0220201-00/?p=106209
Less dramatic.
Заметила странность с DLL, собранными FreeBasic, в Windows 95. Допустим, у нас есть библиотека на FB, есть программа на VB6, которая её использует. Запускаем программу, она грузит библиотеку, всё хорошо. Теперь делаем ActiveX DLL на VB6, которая использует библиотеку, регистрируем через RegSvr32 в Windows 95. RegSvr32 грузит библиотеку, та грузит свои зависимости, в том числе FB библиотеку, а потом RegSvr32 получает от LoadLibraryEx() ошибку 0x45a. Даже если просто сказать RegSvr32 регистрировать FB библиотеку, то будет та же ошибка. Не понимаю, что происходит. В Windows 98 работает без проблем.
«COM, DCOM, OLE. Всё это разные лица одного ануса. Тоесть Януса».
Говорят, что шутники поначалу «NT» расшифровывали как «Nice Try».
RtlTimeToSecondsSince1970
Converts the specified 64-bit system time to the number of seconds since the beginning of January 1, 1970.
https://docs.microsoft.com/...metosecondssince1970
Remember, no Unixian.
Ранее я писала, как Win16 выдавала мне страшное сообщение об ошибке при попытке вызвать функцию из не найденной DLL в VB3. Я подумала и нашла источник проблемы. Есть в Windows такая функция SetErrorMode(), которая устанавливает глобально для задачи (процесса в Win32), как будут обрабатываться некоторые ошибки. Например, можно сказать, чтобы при возникновении необработанного исключения программа просто схлопывалась и не выдавала никаких «Память не может быть read». Есть там флаг SEM_NOOPENFILEERRORBOX, который именно на это и отвечает. Если установить его для задачи, то выдача страшных сообщений прекратится, пользователь не будет знать, что программа чего-то не нашла, а программа сама будет действовать альтернативно. Собственно, после установки этого флага, сообщения прекратились. А в Win32 он вроде как установлен по умолчанию (хотя, документация говорит обратное), но, как мне показалось, даже если его сбросить, никаких сообщений не появится.
There is a horrible non-obvious quirk of the AdjustTokenPrivileges function that is tripping us up: The function returns success even though it may have failed to do what you asked.
The function “succeeded” in the sense that it successfully attempted to adjust the privileges you requested, and it successfully reported the result of the adjustment attempt. But that doesn’t mean that the attempt actually accomplished what you asked it to do.
В Windows 3.xx, если VB3 программа пытается вызвать функцию из отсутствующей DLL, появляется то самое системно-модальное окно сообщения, поясняющее, что данной библиотеки не найдено. После этого (если не установить обработчик ошибок) уже VB рантайм вываливает ошибку «File not found» и схлопывается. В принципе, это происходит и при запуске такой программы в NT и 9x. А вот в VB6 такой фигни нет.