|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Ну т.е. что надо: в программе кнопка <Адресная книга> или <Кому>. При нажатии открывается стандартный диалог "Выбор получателей". Здесь варианты: справа есть поля MailTo,CC,BCC либо например только поле MailTo либо правых полей вообще нет. (скриншоты приложил чтоб было понятно) При нажатии на кнопку <OK> возвращается например набор email (с именами) или несколько наборов соответствующих MailTo,CC и BCC или например набор номеров телефонов (или факсов) соответствующих выбранным контактам. В виндах эта техника используется например в Почта Windows (Outlook Express) для выбора MailTo,CC,BCC при создании мыла (верхний скрин) в Windows Fax and Scan (Microsoft Fax) для выбора номеров факсов (средний скрин), там же для выбора e-mail адреса(предполагается единственный адрес) куда слать мыло с уведомлением о доставке(нижний скрин). Начиная с Vista контакты хранятся в C:\Users\<Имя_пользователя>\Contacts В XP техника хранения немного иная, но диалоговые окна и принцип выбора такой же (можно еще выбрать "группу контактов"). И я вот думаю как в эту кухню влезть. Интересует именно вывод стандартного окна выбора контактов и возврат желаемого результата. Что-то подобное (выводить эти окна) в VB6 умела делать MSMAPI.OCX (Microsoft MAPI Controls 6.0), но применительно к .Net не вариант (да и в VB6 не стал бы ее "таскать" за прогой, когда-то очень давно игрался просто), да и не уверен что она реализует все желаемое (возврат номеров телефонов к примеру). Есть вот такие напр. ссылки Programming Windows Contacts Windows Address Book Но там не классические API а "интерфейсы", и их программировать не из C++ это задница. Причем не уверен что это то что надо, мне нужны не сами "контакты", а стандартные диалоги с возвратом результата. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2016, 01:08 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Ну в принципе авторЧто-то подобное (выводить эти окна) в VB6 умела делать MSMAPI.OCX (Microsoft MAPI Controls 6.0), Можно и без OCX: MAPIAddress function MapiRecipDesc structure Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.
Т.е. диалог выводится и набор To,CC,BCC возвращается. Однако телефоны и факсы так не выкопаешь. Плюс эта хрень зависит от наличия MAPI клиента на данном компе. Поэтому не вариант, по большому счету наверно вообще не то, т.к. MAPI клиент будет использовать свою адресную книгу а не Windows Contacts в общем случае. Должно быть что-то другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2016, 05:54 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Копать видимо надо в IAddrBook::Address Method и (возможно) в какой-то аналогичный интерфейс из Windows Address Book (не нашел). Везде "Don't use" (на это часто не стоит обращать внимания, штатный Windows Fax and Scan же как то вызывает эти диалоги в т.ч. и на 10-ке), но задница в том что примеров кот. можно было бы воспроизвести да хоть бы и на C++ нуль. Короче тяжелая эта задача, и не первый раз пытаюсь ее решить: Доступ к диалоговому окну Адресной Книги + выбор нестандартных полей: телефон, факс Дальше MAPI (что не есть решение) дело не двигается. Наверно сдамся. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2016, 18:38 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Дмитрий77и (возможно) в какой-то аналогичный интерфейс из Windows Address Book (не нашел). Сорри, имел ввиду: и (возможно) в какой-то аналогичный интерфейс из Windows Contacts (не нашел). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2016, 19:57 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Дмитрий77Копать видимо надо в IAddrBook::Address Method Это то что надо. Сделал на C++ (хотя с телефонами не знаю как вывести). 18649060 На .Net "интерфейсы" никак не переложить? Один раз делал на VB6 с миксерами громкости звука но это нечто очень громоздское и ужасное. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2016, 08:05 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Дмитрий77, Продолжайте, пожалуйста. Мне в феврале нечто подобное надо будет сделать ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2016, 16:04 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Cat2Дмитрий77, Продолжайте, пожалуйста. Мне в феврале нечто подобное надо будет сделать Вы отдыхаете, а человек работает в поте лица. Нечестно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2016, 16:12 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Дмитрий77На .Net "интерфейсы" никак не переложить? можно переложить. IWABObject - это обычный COM интерфейс PS "Интерфейсы" - это тоже API ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2016, 18:42 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Cat2Продолжайте, пожалуйста. Да пожалуйста. Дмитрий77Сделал на C++ (хотя с телефонами не знаю как вывести). Ну, на C уже сделал и с телефонами и факсами (с адресами, сайтами, женами и детьми - по желанию по тому же принципу - любые поля): Т.е. принципиально задача решена. 18650324 ИзопропилДмитрий77На .Net "интерфейсы" никак не переложить? можно переложить. IWABObject - это обычный COM интерфейс PS "Интерфейсы" - это тоже API API то API но одно дело "классические" API, которые задекларировать относительно просто, а другое дело вся эта IХрень. Это как однажды пытались(полгода назад вроде, местами успешно) ручками прописывать весь интерфейс с GUID-ами и прочей хренью? Но это ж тихо вешаться с непредсказуемым результатом. В данном случае мне кажется проще оформить из кода что написал на C dll со своими API и возвращать например массив структур Recipient {Имя;E-mail;To/CC/BCC;Телефон;Факс;...(?)} и количество элементов в этом массиве. Через Marshal.PtrToStructure парсить со сдвигом типа как сделал через mapi во втором посте. Вопрос Юникода еще остается открытым. Cat2Мне в феврале нечто подобное надо будет сделать Не хочешь поучавствовать раз тоже интерес есть? Принципиально то вопрос решен но вот рутины еще хватит. 1) М.б. интерфейсы умеешь делать? как Изопропил говорит. Я наверно пасс. 2) Ну или dll накидать. Я думаю справлюсь но буду спотыкаться на Юникоде, на структурах и на типах C-шных строк. Каша еще та будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2016, 20:16 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Дмитрий77Это как однажды пытались(полгода назад вроде, местами успешно) ручками прописывать весь интерфейс с GUID-ами и прочей хренью? Но это ж тихо вешаться с непредсказуемым результатом. tlb импортировать религия не позволила? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2016, 20:49 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Дмитрий77Не хочешь поучавствовать раз тоже интерес есть? Принципиально то вопрос решен но вот рутины еще хватит. В общем-то для моей задачи можно просто Outlook вызывать. Корпоративный стандарт. У кого другой почтовик - тот сам себе злобный Буратино ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2016, 21:10 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Cat2, Дмитрий77 пилит софтину "антикорпроативную" со всеми вытекающими. чтоб работала от XP до 10, дизайн окошек чтоб соответствовал версии винды, чтоб все устаревшие API поддерживались и т д. PS интересно, как с Lotus Domino его софтина взаимодействовать будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2016, 21:21 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Изопропилtlb импортировать религия не позволила? А ты уверен что есть tlb/ocx для wab32.dll? Как называется? Я обычно это проверяю через VB6 Project -> Referencies Если тупо выбрать wab32.dll, то он ругается. И ничего похожего на правду в списке не вижу. CatВ общем-то для моей задачи можно просто Outlook вызывать. Корпоративный стандарт. У кого другой почтовик - тот сам себе злобный Буратино Я лично Outlook недолюбливаю и у меня на рабочем Win8.1 стоит Почта Windows(последняя версия Outlook Express которая поставлялась с Вистой, она идет со всеми OS в залоченном виде (папка C:\Program Files\Windows Mail) при желании можно разлочить). Но это как бы мое мнение по поводу почтового клиента и к вопросу что рассматриваем не относится. У Outlook (Office) своя объектная модель, применимая только к нему. Есть MAPI, и могу сказать точно, что если Outllok (Office) суть дефолтный MAPI клиент на данном компе (и опять же не уверен что современные Outllok-и 2013 и т.п. поддерживают MAPI), то мой код во втором посте вызовет его адресную книгу, а не "Контакты Windows". Т.е. MAPI это нечто более общее. Что касается моего C++ кода, то его преимущество в том, что он будет работать и на скажем голой семерке-восьмерке где mail клиент вообще не установлен. Но папку "Контакты (Windows)" то никто не отменял. Вопрос конечно интересный, но в какие "контакты" будет лезть этот код, если MAPI клиент установлен, но он не Outlook Express (Почта Windows). Предполагаю что все-таки в Контакты Windows. Хотя не лишне проверить, установив тот же Outlook из офиса. А может кстати проверит кто? Надо чтоб на компе был установлен Outlook (office) и чтоб он был "по умолчанию". Далее запустить "Факсы и сканирование Windows". Создать новый факс и нажать на кнопку "Кому". Какие контакты вылезут? Outlook или Windows? Предполагаю что все-таки "Windows". В общем мне нужна та же модель реализации что в "Fax and Scan". Проверить это все не лишне, потому как мои клиенты (в отличии от меня) как раз Office(Outlook) многие думаю используют. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2016, 21:51 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Лично я собираюсь воспользоваться этим: https://msdn.microsoft.com/ru-ru/library/office/ff184631.aspx Что бы работало у всех можно в дистрибутив вставить Microsoft.Office.Interop.Outlook.dll из C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.Outlook ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2016, 22:24 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Дмитрий77А может кстати проверит кто? это уёбище из прошлого века знает только об Active Directory, контактах Windows и службе каталогов VerySign где добавить дополнительный LDAP - не нашёл Внешний вид - страшнее атомной войны. Не зря deprecated PS пользователи "контактов windows" вообще существуют? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2016, 22:31 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Изопропил, ты про tlb для интерфейсов wab32 обмолвился? просто так сказал или действительно есть? >знает только об ... контактах Windows ... Мне и нужны "Контакты Windows" - в примитиве сойдет, и лучше чем изобретать свою Адресную книгу. MAPI не подходит именно потому что лезет не обязательно в них (а например в тот же Outlook Office), а на новой голой системе вообще никуда не лезет и выводит ошибку за отсутствием MAPI-клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2016, 22:53 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Дмитрий77, действительно, у этого говна мамонта нет tlb (странно для такого нужного всем интерфейса) что скажешь на https://technet.microsoft.com/ru-ru/ms629733 ? XP - любой ценой поддержать хочешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2016, 23:12 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Изопропилчто скажешь на https://technet.microsoft.com/ru-ru/ms629733 ? скажу что невнимательно читаешь то о чем пишу выше Дмитрий77Дмитрий77Копать видимо надо в IAddrBook::Address Method Это то что надо. Сделал на C++ (хотя с телефонами не знаю как вывести). 18649060 Дмитрий77Ну, на C уже сделал и с телефонами и факсами (с адресами, сайтами, женами и детьми - по желанию по тому же принципу - любые поля): Т.е. принципиально задача решена. 18650324 Собственно я и использовал Windows Address Book -в точности ==ссылке что ты мне дал. ИзопропилДмитрий77Осталось разобраться с Юникодом а в чём проблема? да разобрался вроде в проекте C++ в General->Character Set надо поставить Use Unicode Character Set (в 2005-й студии по дефолту ANSI, а для C++ я 2013-ю использовать не рискую) Ну и плюс всякие правки LPSTR -> LPWSTR, "строка"->L"строка", .lpszA ->.lpszW, _A -> _W, флаг MAPI_UNICODE итд, короче заработало и в Юникоде, юникод-версия кода под спойлером Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118.
ИзопропилXP - любой ценой поддержать хочешь? а цена невелика, потому что этот код на XP работает, и на 8.1 тоже (про 10-ку даже не сомневаюсь). На XP из описания не работает вот это: Windows Contacts Но в это я даже особо и не лез, первое универсально и достаточно, и именно "Windows Address Book" отвечает за вывод стандартных диалогов. Так что думаю причешу код (что под спойлером) и сделаю из него dll с API, потом вставлю кнопки <Address Book> в свою прогу и этими своими API воспользуюсь, мест где надо вводить e-mail или телефон у меня в проге хватает, чего б не дополнить "стандартом". Пустячок а приятно. Особенно буржуям, которые к виндовым адресным книгам насколько я понял уважительно относятся (ну наверно тупые и в каменном веке с динозаврами живут, ток деньги почему-то они платят а не наши). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2016, 00:14 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
Дмитрий77, не боишься "These interfaces will be unavailable in the future."? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2016, 00:29 |
|
Доступ к адресной книге (контакты Windows)
|
|||
---|---|---|---|
#18+
ИзопропилДмитрий77, не боишься "These interfaces will be unavailable in the future."? Нет. У меня на это определенное чутье. Аргумент еще: этот механизм использует напр. Microsoft Fax (ничего больше там быть не может), они его с одной стороны никуда не уберут(недовольных много будет), да и переделывать с другой стороны не будут (кому нужны эти факсы). Ту же "Почту Windows" (Program Files\Windows Mail) зачем-то тянут во все OS(в залоченном виде), значит зачем-то надо, иначе м.б. "все загнется". Ну и папка "Контакты" вряд ли куда-то денется. В стиле MS про все говорить что deprecated, но при этом тянуть все что наработано за годы из системы в систему. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2016, 01:05 |
|
|
start [/forum/topic.php?fid=20&msg=39143125&tid=1400911]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 434ms |
0 / 0 |