Outlook 2003 проблема с обновлением настроек. Нужен совет.
От: Sproot_ Россия  
Дата: 27.03.05 07:46
Оценка:
Добрый час!

Итак, суть: мое приложение добавляет подписи(не цифровые, а те, что в письмо вставляются) для Outlook. т.е. Создаются файлы с подписями и информация об активной подписи добавляется в реестр. Версии до 2003 каждый раз лезли в реестр, чтобы узнать имя активной подписи, и проверяли соответствующие ключи для добавления подписи... однако в 2003 этого не происходит, видимо Outlook Хранит все параметры в памяти и загружает их только один раз при запуске приложения. Как сделать так, чтобы мои изменения в реестре Outlook 2003 всеже заметил?? может как то можно заставить Outlook перечитать настройки? или как установить активную подпись подругому?? может через COM?? вобщем, мне нужно менять активную подпись в Outlook 2003 даже если он запущен.

Буду очень признателен за любую помощь.
с уважением,
Павел.
Re: Outlook 2003 проблема с обновлением настроек. Нужен сове
От: EqWu Россия  
Дата: 28.03.05 09:23
Оценка: 3 (1)
Здравствуйте, Sproot_, Вы писали:

S_>Добрый час!


S_> Как сделать так, чтобы мои изменения в реестре Outlook 2003 всеже заметил?? может как то можно заставить Outlook перечитать настройки? или как установить активную подпись подругому?? может через COM?? вобщем, мне нужно менять активную подпись в Outlook 2003 даже если он запущен.


S_>Буду очень признателен за любую помощь.

S_>с уважением,
S_>Павел.

Активная подпись в Outlook2003 выставляется отдельно для каждого аккаунта.
Как я уже однажды писал:

Outlook 2003: user has a signature for each mail account (“New Signature” value in the account section under HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\PROFILE_NAME\9375CFF0413111d3B88A00104B2A6676\ACCOUNT_ID).

Путем некоторых наблюдений мною было установлено, что при обновлении параметров аккаунта (при создании и удалении — тоже)
Outlook (или апплет Mail из Панели управления) шлет бродкастингом служебные сообщения

Привожу кусок кода, который сообщает Outlook, что в аккаунтах поменялись те или иные параметры:


///////////////////////////////////////////////////////
///////    COutlookAccMan    ::    PostOutlookAccountMessage ///////
///////////////////////////////////////////////////////
// Purpose:
//    Posts notification message of accounts changes to Outlook (2002 and 2003)
//    This function registers message based on template:
//    "OlkAcctMgrNotif" + account_creation_tag + "_" + profile_name
//    If this is message about new account creation account_creation_tag = "Create", 
//    else account_creation_tag is empty 
//    profile_name - name of profile in which the changes occur
//    This message is posted as broadcast message (!!!)
// Parameters:
//    [in] strProfileName - profile name in which the changes occur
//    [in] dwAction - action code 
//                    0 - account creation (valid only if bCreationNotify is true)
//                    1 - account modification
//                    4 - accounts configuration modification (e.g. set default account)
//                    5 then 3 - account removal
//    [in] dwAccID - account id (as keys names under 9375CFF0413111d3B88A00104B2A6676 section)
//    [in] bCreationNotify - must be true if this message is notification about new account
// Return values:
//    TRUE - success
//    FALSE - error
///////////////////////////////////////////////////////
void OutlookAccMan::PostOutlookAccountMessage(LPCTSTR strProfileName, DWORD dwAction, DWORD dwAccID, 
                                              bool bCreationNotify)
{
    UINT uMsgId2002_3 = WM_NULL;
    CString msgName = _T("OlkAcctMgrNotif");

    if(bCreationNotify)
        msgName += _T("Create");

    msgName += _T("_");
    msgName += strProfileName;
        
    uMsgId2002_3 = RegisterWindowMessage(msgName);
    
    PostMessage(HWND_BROADCAST, uMsgId2002_3, (WPARAM)dwAction, (LPARAM)dwAccID);

    // if we work as Exchage client extention or as Outlook Addin
    // let Outlook to proceed messages
    /*
    MSG msg;
    DWORD dwFirstTick = GetTickCount();
    
    while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);

        if( (GetTickCount() - dwFirstTick) > 1000 )
            break;
    }
    */
}
Re[2]: Outlook 2003 проблема с обновлением настроек. Нужен с
От: Аноним  
Дата: 28.03.05 21:05
Оценка:
Здравствуйте, EqWu!

Ого! прям то, что надо!! это ж надо было такое заметить! Очень надеюсь, что это поможет... попробую сегодня дома(сейчас на работе), результат отпишу

В связи с приведенным кодом возникает вопрос — а профайл может быть отличным от Microsoft Outlook Internet Settings?? если да, то как его получать для текущего пользователя?
и то, что имя профайла с пробелами косяка не вызовет?

Огромное спасибище за помощь!
С уважением,
Павел.
Re[3]: Outlook 2003 проблема с обновлением настроек. Нужен с
От: Sproot_ Россия  
Дата: 28.03.05 21:13
Оценка:
Это был я... Забыл авторизоваться на работе...
Re[2]: Outlook 2003 проблема с обновлением настроек. Нужен с
От: Sproot_ Россия  
Дата: 29.03.05 10:28
Оценка:
Добрый час!

Да, действительно, сообщение такое шлется, проверил Spy-ем... но вот чето толку от него нету... както странно Outlook себя ведет...для программной установки активной подписи делаю все записи в реестре, шлю это сообщение, но реакция проявляется какимто случайным образом... то для одной учетной записи выставится подпись, то для другой, то вообще поставится на <нет>(чаще всего так и присходит). Вобщем, нужно чегото еще менять, что б Outlook поверил, что я сменил подпись... помониторю реестр... покачто я меняю только подключ New Signature во всех ключах учетных записей.
Если есть советы, то буду очень признателен.

С уважением,
Павел.
Re[3]: Outlook 2003 проблема с обновлением настроек. Нужен с
От: Sproot_ Россия  
Дата: 29.03.05 10:59
Оценка:
Ура!!!
Вроде победил!
Подозрительным стало то, что Outlook заменяет мои подписи на <нет> после программной установки активной подписи, т.е. бродкастовое сообщение действительно работает!!! (мое уважение к человеку подсказавшему это — безгранично!!). стал сравнивать, в чем отличие между моими записями в реестр и теми, что делает Outlook, оказывается, что Outlook добавляет в подкличи, отвечающие за активные подписи (например New Signature) два нулевых байта в конец... я решил тоже добавить... и сразу все заработало!! я так рад!!

Дружище, EqWu, мой тебе РЕСПЕКТ!!

Павел.
Re[3]: Outlook 2003 проблема с обновлением настроек. Нужен с
От: EqWu Россия  
Дата: 29.03.05 12:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, EqWu!


А>В связи с приведенным кодом возникает вопрос — а профайл может быть отличным от Microsoft Outlook Internet Settings?? если да, то как его получать для текущего пользователя?

А>и то, что имя профайла с пробелами косяка не вызовет?

Запусти апплет Mail в Панели управления, покопайся в нем — и сразу все поймешь.
При этом поглядывай в реестр (еще лучше — RegMon).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.