@Linda-chan

Тег windows в блоге Linda-chan

Linda-chan

Вдруг вспомнила, что забыла вырубить автоматическую дефрагментацию дисков в XP, ну и пошла гуглить, как это сделать не через TweakUI (интересно же). А там – дебил-парад. На одном форуме народ срётся, кто идиоты: Гнусмус, который заявил, что их SSD настолько стремительны, что дефрагментация не имеет смысла, или Microsoft, которая заявила, что метаданные на ФС не резиновые, и если файлы будут слишком сильно фрагментированы, то могут случиться неприятные нежданчики. Рядом выяснять, Microsoft – это software vendor или всё же software developer. На другом форуме топикстартеру доказывают, что нет никакой автоматической дефрагментации, есть только prefetch, и то вряд ли (спойлер: автоматический запуск defrag.exe, очевидно, автоматической дефрагментацией не считается). На третьем предлагают удалить задачу из планировщика заданий, отмечая, что задача очень скрытая, поэтому никак её увидеть нельзя. На четвёртом у всех всё работает, а топикстартер – идиот. Но больше всего мне понравился ответ где-то на майкрософтовских форумах. Типа, я ничего не знаю о дефрагментации и о том, как её отключить, но попробуйте подождать, пока оно само собой не прекратится, вдруг поможет. Прямо чувствуется дух Ответов на Mail.ru, где иные трюкачи набивали себе рейтинг, отвечая «Не знаю» на все вопросы по списку.

Linda-chan

Зашла на Windows 7 шару из Хомеко XP, открыла свойства файла, увидела вкладку «Предыдущие версии». Как эта фича пролезла на XP? Oo

Linda-chan

cacls Byaka.exe /p Все:F

«Продолжить? (Y/N)». Да!

echo Y | cacls Byaka.exe /p Все:F

Полный игнор.

echo yes | cacls Byaka.exe /p Все:F

Та же история. Гуглим...

echo Y| cacls Byaka.exe /p Все:F

Сработало. Ахуенчик вообще! >_<
via https://stackoverflow.com/q...ile-with-auto-answer

Linda-chan

Гуглю, как использовать CommandLineToArgvW(). Натыкаюсь на статью Рэймонда Чена. Понимаю, что вечер будет томным =_=

Linda-chan

I want to write a language learning app for myself using Visual Studio 2017, C++ and the WindowsAPI (formerly known as Win32).

https://stackoverflow.com/q...d-write-utf-32-files

Linda-chan

Почти случайно узнала, что переменные окружения в Windows оказывают большее влияние на программы, чем казалось до этого. Скажем, раньше я считала, что всякие AppData, USERPROFILE, TEMP и прочие приходят откуда-то из внутренностей системы и отражают то, что там творится. И если их значение поменять, то на системные функции вроде SHGetSpecialFolderLocation() и GetTempPath() это не отразится. Однако, это не так: эти функции возвращают значение исходя из значения переменных. Так что модифицировать их значения нужно осторожно: можно, например, поменять путь к каталогу Windows и сделать невозможным запуск дочерних процессов. Кстати, прикол. В Windows есть две переменные, содержащие путь к временному каталогу: TEMP и TMP. При модификации первой GetTempPath() будет возвращать старое значение. Зато значение второй пойдёт в результат функции. Наверняка за этим стоит какая-нибудь история про совместимость.

Linda-chan

VB6 любит твипы. OLE любит химетрики. GDI любит дюймы. Чтобы получить размер картинки в пикселях в StdPicture, нужно всё это конвертировать в миллиметры, потом в дюймы, потом узнавать, что там с DPI у экрана, и результат округлить. Круто же.

Linda-chan

Вчера всю ночь воевала с интересным глюком в своих программах. Короче, есть программа CloudIM, которая использует всякие дропбоксы в качестве транспорта. Когда приходит сообщение, в трее начинает мигать иконка, как других мессенджерах. Кроме того, есть одна утилита, которая запускает на фоне другие утилиты и каждый этап показывает мигающими иконками в трее. Всё это прекрасно мигало в Windows XP, но оказалось, что в Windows 7 просто показывается первый «кадр». Сначала думала, что это как-то связано с тем, что на машину с Нанами, где запускались эти проги, я хожу по RDP, но и с монитором ничего не изменилось. Потом предположила, что это специально сделано в системе, чтобы программы не раздражали пользователя. Короче, начала разбираться. Для начала сделала простую программу, которая показывает окошко и при этом выводит иконку в трэй, а при закрытии окна – убирает иконку. Так же в окне была кнопка, которая меняет иконку на следующую, а сами иконки программа брала из стандартных (те, что выводятся в окнах сообщений вроде красного крестика – их можно специально получить, чтобы в твоей программе они соответствовали тому, что выдаёт система). Что интересно, программа работала нормально. Даже если зажать кнопку энтером, иконки всё равно очень быстро менялись, так что борьбу системы с раздражителями я отбросила. Тогда перешла к натурным испытаниям. Взяла ресурсы у CloudIM и начала использовать иконки оттуда вместо системных. И тут с самонирисованными иконками всё сломалось. Если очень упростить картину, то сначала программа добавляет иконку в трэй через Shell_NotifyIcon() с параметром NIM_ADD. А когда нужно мигать, эта функция вызывается с параметром NIM_MODIFY и манипулятором нужной иконки. Сами иконки заранее грузятся из ресурсов через LoadImage() с указанием размера 16x16 (вдруг есть другие). Так же проверяется, что у нас за система, и если что-то до Windows 2000, иконки выбираются 16-цветные. В итоге программа загружает две иконки и попеременно рисует их в трее. Но, как я уже сказала, всегда рисовалась только первая, а вторая – никогда, хотя куча тестового кода показывала, что все вызовы происходят, и даже в самом окне иконки рисуются нормально. Попутно выяснилось, что если иконка грузится с диска функцией VB6 LoadPicture(), то всё рисуется нормально, а вот LoadImage() даёт такой сбой. Впрочем, потом оказалось, что если LoadImage() вызвать с параметром LR_LOADFROMFILE, то происходит та же проблема. Что-то было не так с самой LoadImage(). Я проверяла кучу кода, поскольку она вызывалась не напрямую, а через прослойки. Попутно попробовала LoadIcon() (она грузит только иконки и только размера 32x32, растягивая и сжимая всё, что не соответствует, если альтернатив нет). Попутно я попыталась не подписывать екзешник, ибо в описании Shell_NotifyIcon() что-то было про подпись, но, правда, в контексте идентификации иконки не по паре «манипулятор родительского окна – ID иконки», а по GUID. Но и это не помогло. Потом обратила внимание на сами иконки. Дело в том, что CloudIM использовала две иконки. В одной (первый кадр) был конвертик 16x16 в вариантах 16 цветов и 256. А во второй была пустота (конвертик появлялся и исчезал при анимации), поэтому там было два изображения: 16x16 и 32x32 с одним только прозрачным фоном. Почему такие размеры? Возможно, я хотела заюзать пустоту где-то ещё, но не стала. Но главное, я сделала обе картинки двухцветными. Чтобы пустота не занимала лишнее место. Вот где-то тут всё и ломалось. Windows 98 прекрасно чередовала 16-цветную картинку и 2-цвентую. Windows XP прекрасно чередовала 256-цветную картинку и 2-цветную. А вот Windows 7 сломалась. Вывела первую, а вторую рисовать отказалась, причём ошибок функция Shell_NotifyIcon() не возвращала никаких. Просто в трее оставалась старая иконка. После того, как я пустую иконку привела в соответствие, всё начало мигать как полагается. В принципе, я сразу подумала, что что-то не так с иконками, и даже заметила различия в форматах, но меня смутила вторая программа, где никаких пустых иконок не было, все иконки однозначно в одном формате, ибо кадры выглядят одинаково, только один залит тёмным цветом, а второй – светлым. Там даже все иконки 16-цветные! Это мне и подпортило отладку. Поэтому, разобравшись с первой программой, я перешла ко второй. Проверила тамошние иконки, потом добавила их в ресурсы тестовой программы. И внезапно оказалось, что всё прекрасно мигает! Я запустила ту самую программу, и оказалось, что там тоже всё прекрасно мигает! Секрет оказался в цветах самих иконок и в длине этапов, которые они обозначали. Как я уже сказала выше, на каждом этапе запускалась утилита, которая что-то делала, а иконка показывала, что она что-то делает. Первый этап, как правило, занимал больше всего времени, а последующие выполнялись заметно быстрее. На машине с Windows XP для утилит работы было больше, а на Windows 7 – заметно меньше. Поэтому последующие этапы на Windows 7 проходили быстро, часто – быстрее времени смены кадра, а оно было примерно 250 мс. с поправкой на тормоза. Тоесть по факту иконка мигала только на первом этапе, а на последующих появлялся первый кадр и исчезал. Что же не так с первым этапом? Если посмотреть на стандартную 16-цветную палитру, то можно заметить там пары цветов типа тёмно-зелёного и светло-зелёного. Все пары образуются подобными значениями в разных компонентах. Тоесть чисто по цифрам там всё сбалансировано. Просто глаз разные цвета воспринимает по-разному. И если отличие светло-зелёного от тёмно-зелёного видно сразу, то тёмно-синий от светло-синего отличается не так разительно и в зависимости от настроек дисплюя может вообще не бросаться в глаза. И по счастливому стечению обстоятельств первый этап обозначался именно синим цветом. Тоесть оно мигало, но это было не заметно. Кстати, пока я испытывала вторую утилиту, внимательно вглядываясь в иконки, я словила ещё один странный глюк. Неожиданно иконка одного из этапов не пропала и в трее образовалось две иконки, которые ещё и жили каждая своей жизнью, хотя иконка должна быть одна: программа не создавала никаких дополнительных. Правда, тут всё было ещё проще: увлёкшись, я прозевала запуск этой утилиты по планировщику, и он пришёлся как раз на тестовый запуск, а проверку, не запущена ли уже копия программы, я сделать забыла.

Linda-chan

Программа, написанная для Windows 1.01 прекрасно стартует и работает в Windows 10.
https://www.transmissionzer...ing/win16-apps-in-c/

Linda-chan

Microsoft не успела прекратить поддержку Windows 7, а нам уже рекомендуют срочно отключить компы с ней от сети. А то мало ли, взорвётся ещё.
https://www.howtogeek.com/5...ws-7-system-in-2020/

Linda-chan

Постоянно забываю про то, как выкинуть запомненные пароли из кэша в Windows 7.
https://spydevices.ru/net_pass/

Linda-chan

Юзерс, бивээ! Сегодня заканчивается поддержка Windows 7. Это значит, что данная операционная система внезапно станет устаревшим дырявым гогном, физически не могущим существовать. Поэтому в течение всего дня компьютеры, на которых установлена Windows 7, будут взрываться, поскольку тоже устареют. Я рекомендую сохранять спокойствие, быть бдительными и ни в коем случае не подходить сегодня к домашним и рабочим ПК. Так же стоит приготовить огнетушитель.

Linda-chan

Когда-то у меня была Windows NT 3.51. Случилось диск от неё проверить в Windows NT 4. Это было большой ошибкой =_= Данные остались, но заставить загружаться систему мне так и не удалось.

Linda-chan

Кажется, делать chkdsk на диске с Windows 7 из Windows XP было не очень правильно. Хотя, кто знает...

Linda-chan

Рэймонд Чен поясняет, чем отличаются нынешние настройки безопасности файлов и прочих объектов от старых настроек. А именно – галочка про наследование настроек от родительских объектов. После чтения этой статьи, в частности, становится ясно, почему в WinFile (который старый File Manager), где используются диалоги настройки безопасности ещё от NT4, нет такой галочки. Так же становится понятна разница в установке безопасности средствами того же WinFile и Проводника. Короче, познавательно.
https://devblogs.microsoft....0200102-00/?p=103287

Linda-chan

Читаю исторический документ про библиотеку CTL3D (3D интерфейс для Windows 3.xx и NT 3.xx). Нашлось забавное.

Since there are a number of released applications that either don't do version checking or install CTL3D.DLL to the wrong directory, we have created a new version of CTL3D, CTL3DV2.DLLwhich applications link to with the CTL3DV2.LIB file. This new DLL name makes it impossible for older versions of CTL3D.DLL ( version 1.x) to effect applications using CTL3DV2.DLL.

MS борется с DLL Hell, пока не очень решительно.

CTL3DV2.DLL will not produce 3D effects unless it is running from either windows\system or the windows directory. This hopefully will encourage developers to correctly install CTL3DV2.DLL with their applications. When CTL3DV2.DLL is run from any other directory it will display the following message box:

MS наступает на грабли. Хотя, да, тогда правильно было все DLL кидать в SYSTEM, не забывая при этом проверять версию специально написанной для этого библиотекой.

Linda-chan

Как заставить панель управления показывать нормальное название скринсейвера, а не имя его екзешника:
https://stackoverflow.com/q...n-the-drop-down-list
Как всё же заставить панель управления показывать нормальное название скринсейвера, а не имя его екзешника:
https://stackoverflow.com/q...own-in-the-drop-down
Вот как раз столкнулась со вторым вариантом: всё есть, строка в ресурсах, файл в System32, а не работает. Оказалось, файл назывался DesktopScreenSaver.SCR. Переименовала в DesktopS.SCR, и тут же всё заработало как надо.

Linda-chan

В Нанами в калькуляторе есть вычислятор для ипотеки.

Linda-chan

Поборола в программе баг, который проявляется в Windows 98. Обратная совместимость at it's best!

Linda-chan

Нашла свой старый ноутбук. Первое впечатление от Windows 98: ЁПТВОЮМАТЬ ВОТ ЭТО ШРИФТЫ ПОЧЕМУ БУКВЫ ТАКИЕ ЧЁТКИЕ ЧТО ЭТО ЗА ШРИФТ ЭТО ЧЁ БЛЯ ТАЙМСНЬЮРОМАН КАК ТАКОЕ МОЖЕТ БЫТЬ ОХУЕТЬ ВЕРНИТЕ МНЕ НУЛЕВЫЕ!!!!!1111111111

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.