Oct 22, 2006 · Comments
COMПрограммированиеPowerShell
Наконец-то дописал .NET обертку для IShellLink (см. серию постов начиная с Shortcuts, shell and COM apartments.). Теперь можно создавать и редактировать ярлыки прямо из PowerShell. :-)
Вот ссылка на исходный код проекта. Немного позже, если дойдут руки, выложу ссылку на готовую инсталляцию.
Read On →
Oct 19, 2006 · Comments
Всякая всячина
Raymond Chen, оказывается, такой душка. :-) На месте Exchange Server team я бы уже начал писать ругательное письмо.
Oct 17, 2006 · Comments
ИнструментыПрограммирование
… причем, судя по всему, несбыточная. Хочу чтобы Visual C++, Platform SDK и WDK (бывший DDK) можно было использовать как отдельные кирпичики, из которых можно составить нужное окружение для сборки программ. Ведь по сути каждый их них это набор из компилятора, библиотек и подсистемы сборки (nmake, build или Visual Studio IDE). Выбрать бы из этой россыпи нужную версию компилятора и требуемый набор библиотек…
Казалось бы все должно быть довольно просто, однако кругом рассыпано столько граблей, что просто руки опускаются.
Read On →
Oct 13, 2006 · Comments
ПрограммированиеWindows
Как вы думаете, какой сообщение выведет нижеследующая программа, в случае если её запустить на Windows Vista 64 с правами обычного пользователя, т.е. пользователя, у которого нет прав на запись в каталог “C:\Program Files”?
#include <memory.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
FILE* f = NULL;
char cookie[] = { 'b', 'a', 'r', ' ' };
char data[sizeof(cookie)] = { 'f', 'o', 'o', ' ' };
f = fopen("C:\\Program Files\\foo.txt", "w");
if (f)
{
fwrite(cookie, sizeof(cookie), 1, f);
fclose(f);
}
f = fopen("C:\\Program Files\\foo.txt", "r");
if (f)
{
fread(data, sizeof(data), 1, f);
fclose(f);
}
if (0 == memcmp(data, cookie, sizeof(cookie)))
{
printf("Success!\n");
}
else
{
printf("Something went wrong!\n");
}
return 0;
}
Read On →
Oct 12, 2006 · Comments
Всякая всячина
Со вчерашнего дня у блога появилось зеркало на blogs.gotdotnet.ru. Тyда будут копироваться заметки, посвяшённые разработке софта вообще и программированию под Windows в частности.
Отдельное спасибо Александру Ложечкину за приглашение и помощь в создании зеркала.
Oct 11, 2006 · Comments
COMПрограммирование
Хочу поделиться рецептом победы над коварным IShellLinkDataList (см. предыдущие посты COM marshalling. и Shortcuts, shell and COM apartments.)
Итак, исходная задача: вызвать метод локального интерфейса (интерфейса, помеченного атрибутом [local]) удалённо.
Read On →
Oct 10, 2006 · Comments
ПрограммированиеSAL
Наткнулся сегодня на блог Александра Ложечкина и на его пост SAL - кое-что новое для С++ в частности. В двух словах SAL (Standard Annotation Language) - это способ дать компилятору немного больше информации о том, как та или иная функция использует переданные ей параметры: in/out аттрибуты, размеры буферов и т.п. Компилятор, используя эту информацию, может делать дополнительные проверки кода, находя, скажем, ошибки переполнение буфера. Более того, статические анализаторы кода, тот же PREfast, также могут использовать эту информацию, повышая тем самым эффективность и точность анализа.
Read On →
Oct 9, 2006 · Comments
COMПрограммированиеMicrosoft
Все-таки, наверное, Европейский Суд не зря судит Microsoft за недостаточно хорошую документацию. Пытаясь разобраться как, все таки, написать proxy для интерфейса IShellLinkDataList (см. предыдущие посты: COM Marshalling. и Shortcuts, shell and COM apartments.), перечитал уйму документации, пока не нашел толкового описания того, что я хочу сделать на сайте Dr. Dobb’s. Если попытаться описать весь процесс “метаний”, то выглядело это так:
Read On →
Oct 8, 2006 · Comments
WordPress
Добавил поддержку тэгов в блоге. Из многочисленных плагинов для WordPress выбрал Ultimate Tag Warrior как наиболее функциональный. Кроме того, этот плагин позволяет безболезненно мигрировать со встроенной поддержки категорий на тэги, что тоже немаловажно.
Oct 7, 2006 · Comments
COMПрограммирование
Продолжение истории про Shortcuts, shell and COM apartments.
Разбираясь с написанием proxy для интерфейса IShellLinkDataList, нашел несколько дельных статей в MSDN. Например, Standard Marshaling Architecture толково описывает как собственно происходит marshalling во время вызова и какие объекты задействованы при этом. В двух словах всё происходит так:
Read On →