Показаны сообщения с ярлыком winapi. Показать все сообщения
Показаны сообщения с ярлыком winapi. Показать все сообщения

вторник, 1 июня 2010 г.

Запись строк в реестр и Delphi

   Программируя в Delphi очень желательно записывать строковые данные в реестр в соответствии с документацией.

вторник, 11 мая 2010 г.

Обработка ошибок и GetLastError()

   Когда Вы вызываете функцию Windows, она проверяет переданные ей параметры, а затем пытается выполнить свою работу. Если Вы передали недопустимый параметр или если данную операцию нельзя выполнить по какой-то другой причине, она возвращает значение, свидетельствующее об ошибке.

понедельник, 3 мая 2010 г.

Маленькая особенность OutputDebugString

   Начиная с Windows 2000, все операционные системы Microsoft линейки NT целиком и полностью построены на Unicode. Все ключевые функции для создания окон, вывода текста, операций со строками и т.д. требуют Unicode-строк. Если какой-то функции Windows передается ANSI-строка, она сначала преобразуется в Unicode и лишь потом передается операционной системе.
   В реализации это выглядит так: для функции доступной через API может существовать две версии: Ansi (принимает строки ANSI) и Wide (принимает строки Unicode) - например CreateProcessA и CreateProcessW. И Ansi-версия является оболочкой (шлюзом) к Wide.

   Но оказывается есть и исключения...

четверг, 15 апреля 2010 г.

SHFileOperation и двойной бэкслеш в MS Vista+

   Код Windows Vista был значительно переработан по сравнению с XP. Я думаю, это хорошо - внутренние ошибки исправляются (а на их место приходят другие - но это уже совсем другая история :)).
   И внешние проявление внутренних переработок могут быть весьма многообразны и совершенно не очевидны.

   Здесь я расскажу об одной особенности функции SHFileOperation, которая проявляется на Висте и выше.

понедельник, 12 апреля 2010 г.

Deadlock при вызове CoRegisterClassObject в DllMain

   В процессе разработки одного плагина для браузера Chrome было замечено, вызов CoRegisterClassObject (ole32.dll) в точке входа динамической библиотеки (DLLMain) в Microsoft Windows Vista/7 приводит к зависанию потока.

   Эксперимент показал, что эта проблема может возникнуть не только с хромом.

воскресенье, 11 апреля 2010 г.

Особенность InitCommonControlsEx в Windows XP

   В Windows XP вызов функции DialogBoxParamW может сразу возвращать управление вместо отображения диалогового окна, при выполнении следующих условий:
  1. у исполняемого файла есть манифест с name="Microsoft.Windows.Common-Controls" в <assemblyIdentity>
  2. в таблице импорта нет ссылок на comctl32.dll

суббота, 10 апреля 2010 г.

CreateToolhelp32Snapshot и многопоточность

   В процессе поиска причины, по который программа аварийно завершается с ошибкой (другими словами просто вылетает), возникло предположение, что функция CreateToolhelp32Snapshot потоко-небезопасна.