Статьи с тегом «Разработка под Windows»
Статьи с тегом «Разработка под Windows» (31 шт.), от новых к старым.
-
Пул потоков Win32 — параллелизм через CreateThreadpoolWork без своих потоков
Не плодите ли вы CreateThread по всему нативному коду? Разбираем API пула потоков Win32, переработанный в Vista: четыре объекта work, timer, wait и io, групп...
-
Именованные каналы на практике — от проектирования до безопасности IPC в Windows
Практический разбор именованных каналов — стандартного IPC в Windows. По первоисточникам: выбор байтового режима и режима сообщений, сервер на несколько клие...
-
Приложение ломается после спящего режима — события питания Windows и устойчивое восстановление
Открыли ноутбук — соединения бизнес-приложения уже мертвы. Так бывает, когда логика не рассчитана на спящий режим. Разбираем цепочку уведомлений WM_POWERBROA...
-
DllMain и блокировка загрузчика — почему говорят «ничего не делайте при инициализации DLL»
Почему из DllMain нельзя вызывать LoadLibrary и синхронизироваться с другими потоками. По первоисточникам: как блокировка загрузчика сериализует все уведомле...
-
«Не отвечает»: как Windows определяет зависание и как проектировать так, чтобы оно не возникало
«Не отвечает» в Windows — это решение ОС: окно 5 секунд не извлекает сообщения, и система подменяет его фантомным окном. Разбираем критерий, типичные причины...
-
Буфер обмена и перетаскивание: OLE-передача данных в бизнес-приложениях
Таблица из Excel вставляется «криво», а после закрытия исходного приложения вставить уже нельзя — оба случая объясняются тем, что буфер обмена держит одно и ...
-
WPR/WPA на практике: как разбирать «весь ПК тормозит» по всей системе
«Весь ПК тормозит» и «долго загружается» — проблемы, которые Диспетчер задач не объясняет. Их разбирают по общесистемной ETW-трассировке: записывают через WP...
-
Завершение работы Windows со стороны приложения — уведомления, перезагрузка и отключение питания
Ночная перезагрузка Windows Update повредила данные измерений — такую аварию можно предотвратить на этапе проектирования. По первичным источникам: как приним...
-
Как продлить работу старых приложений в Windows: режим совместимости, шимы и Compatibility Administrator
Почему после включения режима совместимости снова запускается старое приложение. Разбираем шимы (перехват API), типичные исправления, развёртывание через Com...
-
ADR (Architecture Decision Record): как в небольшой команде сохранить, почему выбрали именно эту архитектуру
Код не объясняет, почему его написали именно так. Разбираем ADR (Architecture Decision Record): одно решение — один Markdown-файл. Шаблон, таблица «писать ил...
-
Версионирование схемы БД бизнес-приложения — практика миграций, чтобы у клиентов не оказалось «у каждого своя база»
Практическое руководство по версионированию схемы БД бизнес-приложения, которое стоит у множества клиентов. Разбираем PRAGMA user_version и последовательные ...
-
Если Microsoft Defender принял ваше Windows-приложение за вирус — ложные срабатывания и влияние на производительность
Разбираем штатный порядок действий, если Microsoft Defender ложно определяет ваше Windows-приложение как вредоносное. Как устроена современная антивирусная з...
-
Система без исходного кода и спецификаций: как сопровождать её, не останавливая работу
Практический порядок начала эксплуатации и сопровождения бизнес-системы, у которой нет ни исходного кода, ни спецификаций. От фиксации работающего окружения ...
-
MAX_PATH и ловушки путей и имён файлов в Windows — лимит 260 символов, зарезервированные имена, точка в конце, регистр
Разбираем ограничения путей и имён файлов — типичную причину ошибки «файл не найден». Из чего складывается MAX_PATH=260, как включить длинные пути через Long...
-
Значок в области уведомлений и toast в Windows-приложении: ошибки NotifyIcon и выбор AppNotification
Разбираем, как держать бизнес-приложение Windows в области уведомлений и показывать toast. Правильная работа с NotifyIcon, повторная регистрация после переза...
-
Как долго проработают приложения VB6 — поддержка среды выполнения и миграция на .NET
Как долго ещё проработают приложения на VB6? Среда выполнения поддерживается и в Windows 11, поддержка IDE уже закончилась. В статье — таблица выбора между п...
-
Японский календарь, праздники и даты закрытия в бизнес-приложениях — устойчивость к смене эры, JapaneseCalendar и расчёт рабочих дней
Разбираем обработку дат, характерную для японских бизнес-приложений: вывод по японскому календарю, расчёт рабочих дней без праздников и даты закрытия. Дальше...
-
Практическое руководство по Process Monitor (ProcMon) — за 10 минут находим «настройки не читаются» и ACCESS DENIED
Неисправности вроде «настройки поменял, а эффекта нет» разбирают в Process Monitor (ProcMon) по реальным обращениям к файлам и реестру. В статье — рабочие пр...
-
Когда Windows-приложение лучше не переводить в веб: таблица решений и разделение как рабочий вариант
У Windows-приложений со связью с оборудованием, локальной обработкой файлов и офлайн-режимом перевод в веб может увеличить затраты и ухудшить функции. Ниже —...
-
CSV — не «просто текст». Практика CSV в бизнес-приложениях на C# (кодировки, совместимость с Excel, защита от инъекций)
Разбираем типичные сбои ввода-вывода CSV в бизнес-приложениях — самописный разбор через Split(','), искажение текста в Excel из-за UTF-8 без BOM, потерю нача...
-
Как найти причину «тормозов» с PerfView и dotnet-trace — практика анализа производительности .NET
Когда бизнес-приложение тормозит или ЦП постоянно на максимуме, какой инструмент взять и на что смотреть. Разделение ролей PerfView и dotnet-trace, чтение сэ...
-
Журнал событий Windows и ETW: как вывести логи бизнес-приложения в стандартные механизмы ОС
Журнал событий и ETW — отдельный слой записей, который видят специалисты по эксплуатации и стандартные средства ОС. Разбираем, как разделить роли трёх механи...
-
Продление эксплуатации и миграция приложений VB6 / Access — таблица решений: оставить, обернуть или заменить
Как решить, оставить ли бизнес-приложение на VB6 или Access как есть, продлить ему эксплуатацию или заменить. Таблица решений собирает состояние рантайма, пр...
-
Что продумать перед заказом разработки Windows-приложения
Перед заказом разработки Windows-приложения разберём, что стоит прояснить: доработка существующего ПО, интеграция с оборудованием, COM/ActiveX, развёртывание...
-
Почему Windows показывает сообщение «Windows защитил ваш компьютер»
Разбираем на практике, почему при распространении Windows-приложения появляется предупреждение SmartScreen: подпись кода, сертификаты EV/OV, Azure Artifact S...
-
Безопасность автообновления: почему одного HTTPS недостаточно
Рассматриваем автообновление как границу доверия и с практической стороны разбираем подписанные метаданные, проверку на клиенте, разделение ключей, защиту от...
-
Минимальные требования к самописному логгеру и чек-лист интеграционных тестов
Чтобы диагностические логи собственного приложения заслуживали доверия, разбираем формат UTF-8 JSON Lines, обязательные поля, flush, ротацию, поведение при с...
-
Таблица решений: завершать приложение или продолжать после неожиданного исключения
Когда после неожиданного исключения приложение стоит завершать, а когда можно продолжать: порча состояния, внешние побочные эффекты, потоки и граница native-...
-
Что такое COM / ActiveX / OCX — различия и связь
Что такое COM, ActiveX и OCX: чем они отличаются, как связаны с OLE, где встречаются на практике и как к ним относиться сегодня.
-
Как вызвать Native AOT DLL на C# из C/C++
Как опубликовать библиотеку классов C# как нативную DLL через Native AOT и вызывать точки входа UnmanagedCallersOnly из C/C++: когда схема уместна, какие пат...
-
Как сегодня поступать с ActiveX / OCX: оставить, обернуть или заменить
Как выбрать, оставить, обернуть или заменить ActiveX / OCX, с учётом 32-бит/64-бит, регистрации, зависимости от браузера и поддержки вендора.