Разница в час при синхронизации Outlook и Windows Moble

Категории: Мобильное, Программы
Тэги: ,

Если возникла такая проблема, то виной всему американский февральский day-light-saving time shift.
Решение доступно на сайте Microsoft.
Там патч для Outllok, патч для Windows Mobile и пара полезных рекомендаций.
Мне помогло.

Отключение синхронизации времени для виртуальных машин MS Virtual PC 2007

Категории: Программы
Тэги: , ,

В отличие от VMWare у MS Virtual PC настройки для отключения синхронизации времени с хостовой машиной нет. Тем не менее фича это довольно полезная, например, для ситуаций когда ОС на виртуальной машине перестала функционировать в следствие истечения срока лицензии.
С подсказки Ben Armstrong, решить эту проблему оказалось довольно просто.
Для начала стоит открыть .vmc файл в каком-нибудь текстовом редакторе, например Notepad++.
Далее найти в этом файле конструкцию вида:

<integration> 
    <microsoft> 
        <mouse> 
            <allow type="boolean">true</allow> 
        </mouse>
        ...
    </microsoft> 
</integration>

И заменить на:

<integration> 
    <microsoft> 
        <mouse> 
            <allow type="boolean">true</allow> 
        </mouse> 
        <components> 
            <host_time_sync> 
                <enabled type="boolean">false</enabled> 
            </host_time_sync> 
        </components>
        ...
    </microsoft> 
</integration>

Сохранить файл, и запустить виртуальную машину, выставить нужное время и перегрузиться.

Прекращение подачи видеосигнала на дисплей

Категории: Программы, Разработка ПО
Тэги: , , ,

В связи с особенностями работы монитора при подключении второго источника изображения при активном первом, написал небольшую программку, которая посылает сообщение, прекращающее выдачу видеосигнала на дисплей. Сообщение идентично тому, что посылается при отключении дисплея в режиме PowerSaving.

За все отвечает системное сообщение WM_SYSCOMMAND с параметрами SC_MONITORPOWER и 2. LPARAM со значением 2 соответствует отключению дисплея. Значение параметра -1 – включает дисплей, 1 – вводит дисплей в режим Stand By (в основном актуально для ноутбуков).

Код получился крайне незамысловатый:

static class Program
{
    [DllImport("user32.dll")]
    static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
 
    static IntPtr SC_MONITORPOWER = new IntPtr(0xF170);
    const uint WM_SYSCOMMAND = 0x0112;
    static IntPtr MONITOR_OFF = new IntPtr(2);
    static IntPtr HWND_BROADCAST = new IntPtr(0xffff);
 
    [STAThread]
    static void Main()
    {
        SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF);
    }
}

foobar2000 и Logitech SetPoint

Категории: Железяки, Программы
Тэги: , ,

Тем у кого не работает связка foobar2000 + Logitech SetPoint, а именно, есть проблемы с назначением мультимедийных клавиш клавиатуры на действия в foobar такие как Play/Pause, Next, Previous, предлагаю универсальное лекарство.

Открываем файл %ProgramFiles%\Logitech\SetPoint\players.ini и дополняем его секции следующим образом:

  1. [Players]
    Foobar2000=wac,foobar2000.exe,{97E27FAA-C0B3-4b8e-A693-ED7881E99FC1},xxx,xxx,xxx,xxx,xxx,xxx,xxx,0,1,Foobar2000

    {97E27FAA-C0B3-4b8e-A693-ED7881E99FC1} – имя класса окна, это имя проверенно для foobar версии 0.9.6, в последующих версиях имя класса окна можно узнать, например с помощью утилиты Spy++, поставляемой с Microsoft Visual Studio.

  2. [Players.Run] 
    Foobar2000=path,<Disk>:\Program Files\foobar2000\

    Тут, понятно, указывается путь к папке, куда foobar был установлен.

  3. [Players.Display]
    Foobar2000=Foobar2000
  4. [Players.Seek]
    Foobar2000=key,F,,1,1
  5. [Players.Rewind]
    Foobar2000=key,R,,1,1

После внесения всех изменений, сохраняем файл и пересапускаем и SetPoint и foobar.

UDP [30.12.2009]: Как верно заметили в коментах, не всегда это решение работает, но есть ещё один способ.
Открываем файл %APPDATA%\Logitech\SetPoint\user.xml и правим там значение аттрибута Silent, у устройства с классом KeyboardDevice, каждой нужной кнопки (в моем случае это Play) с 0 на 1:

<Device DisplayName="##" Class="KeyboardDevice" Model="##" NumberOfButtons="##" ConnectionID="">
    <Button Number="##" Name="Play">
        <Param IconLoc="" Type=""/>
        <Trigger Class="ButtonPress">
            <Param Button="##" FirstRepeatDelay="0" RepeatDelay="0" Silent="1" Type="0"/> <!-- Править тут -->
            <TriggerState Name="ButtonDownUp" HandlerSet="MM PLAY">
                <Handler Class="MMPlayer">
                    <Param Action="PLAY" OSDText="Play/Pause"/>
                </Handler>
            </TriggerState>
        </Trigger>
    </Button>
</Device>

Microsoft Vitual PC и Microsoft Hyper-V

Категории: Программы
Тэги: , , ,

В Microsoft Server 2008 (в его 64-битной версии) появилась роль “Hyper-V Manager”. Это решение на тему виртуализации от Microsoft.

Вопрос в том, как быть с VPC созданными на предыдущих версиях средств виртуализации от Microsoft таких как Virtual Server 2005 и Virtual PC 2007.

Сначала надо пояснить о какой совместимости идёт речь.

В случае совместимости виртуальных жёстких дисков (VHD), ситуация следующая: не смотря на то, что формат жёстких дисков к переходу на Hyper-V не поменялся, и совместимость вперед VMC->Hyper-V скорее всего проблем не вызовет, особенности обратной совместимости не позволят беззаботно “таскать” жесткие диски из среды в среду. Более того, Hyper-V->VMC в большинстве случаев, к сожалению, не взлетит.
Случай с 64-битными виртуальными машинами однозначен – ни VS2005, ни VPC2007 64-битные ОС не поддерживают. В случае 32-битных систем, проблема в APIC (Advanced Programmable Interrupt Controllers) Architecture. Hyper-V поддерживает I/O APIC, который  предназначен для хранения траблиц машрутизации прерываний от периферийных устройств, и ОС, установленная на Hyper-V, инициализирует HAL для своего I/O APIC. Такая ОС запущенная на VS2005 или VPC2007, которые I/O API не поддерживают, попросту не загрузится.

Если же мы говорим о совместимости  кофигурационных файлов виртуальных машин, то  ситуация упрощается. В Hyper-V старый формат файлов попросту не поддержвивается. Предлагается, создав новую машину, указать ей в качестве основного жёсткого диска тот, что приехал из старого клиента.

Понятно, что в большинстве случаев лицензионную ОС придется реактивировать, так как оборудование сменилось.

Однако не все так плохо, как кажется на первый взгляд. Существует утилита, способная мигрировать существующую виртуальную машину на Hyper-V сервер: VMC to Hyper-V Import. Правда от реактивации ОС это всё-равно не спасет.

И последнее, все вышеперечисленное было опробовано и работает для Windows машин, а вот ни одна из пяти Virtual PC машин с Linux на Hyper-V так и не взлетела.

Подробнее про виртуализацию от Microsoft можно почитать в блоге: John Howard – Hyper-V and virtualization blog.