Итак, суть: мое приложение добавляет подписи(не цифровые, а те, что в письмо вставляются) для Outlook. т.е. Создаются файлы с подписями и информация об активной подписи добавляется в реестр. Версии до 2003 каждый раз лезли в реестр, чтобы узнать имя активной подписи, и проверяли соответствующие ключи для добавления подписи... однако в 2003 этого не происходит, видимо Outlook Хранит все параметры в памяти и загружает их только один раз при запуске приложения. Как сделать так, чтобы мои изменения в реестре Outlook 2003 всеже заметил?? может как то можно заставить Outlook перечитать настройки? или как установить активную подпись подругому?? может через COM?? вобщем, мне нужно менять активную подпись в Outlook 2003 даже если он запущен.
Буду очень признателен за любую помощь.
с уважением,
Павел.
Re: Outlook 2003 проблема с обновлением настроек. Нужен сове
Здравствуйте, 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 проблема с обновлением настроек. Нужен с
Да, действительно, сообщение такое шлется, проверил Spy-ем... но вот чето толку от него нету... както странно Outlook себя ведет...для программной установки активной подписи делаю все записи в реестре, шлю это сообщение, но реакция проявляется какимто случайным образом... то для одной учетной записи выставится подпись, то для другой, то вообще поставится на <нет>(чаще всего так и присходит). Вобщем, нужно чегото еще менять, что б Outlook поверил, что я сменил подпись... помониторю реестр... покачто я меняю только подключ New Signature во всех ключах учетных записей.
Если есть советы, то буду очень признателен.
С уважением,
Павел.
Re[3]: Outlook 2003 проблема с обновлением настроек. Нужен с
Ура!!!
Вроде победил!
Подозрительным стало то, что Outlook заменяет мои подписи на <нет> после программной установки активной подписи, т.е. бродкастовое сообщение действительно работает!!! (мое уважение к человеку подсказавшему это — безгранично!!). стал сравнивать, в чем отличие между моими записями в реестр и теми, что делает Outlook, оказывается, что Outlook добавляет в подкличи, отвечающие за активные подписи (например New Signature) два нулевых байта в конец... я решил тоже добавить... и сразу все заработало!! я так рад!!
Дружище, EqWu, мой тебе РЕСПЕКТ!!
Павел.
Re[3]: Outlook 2003 проблема с обновлением настроек. Нужен с
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, EqWu!
А>В связи с приведенным кодом возникает вопрос — а профайл может быть отличным от Microsoft Outlook Internet Settings?? если да, то как его получать для текущего пользователя? А>и то, что имя профайла с пробелами косяка не вызовет?
Запусти апплет Mail в Панели управления, покопайся в нем — и сразу все поймешь.
При этом поглядывай в реестр (еще лучше — RegMon).