سؤال

أنا في محاولة لجعل Outlook 2003 add-in باستخدام Visual Studio 2008 على ويندوز XP SP3 و Internet Explorer 7.

بلدي الإضافية باستخدام مجلد مخصص الصفحة الرئيسية التي يعرض بلدي النموذج المخصص الذي يلتف تحكم عرض Outlook.

أحصل COM استثناء مع 'استثناء من HRESULT:0xXXXXXXXX' الوصف في كل مرة عند محاولة تعيين خصائص المجلد من الأيتام والأطفال الضعفاء.رمز الخطأ هو رقم عشوائي في كل مرة مختلفة.فإنه ليس أول من الوصول إلى التحكم في خصائص قبل ذلك ، وعرض ViewXML يتم تعيين الخصائص بالفعل.التحكم يتم وضع علامة آمن للبرمجة.

أنا باستخدام قيمة CurrentFolder.FolderPath الملكية النشطة إكسبلورر ، والتي يبدو أن الحق واحد:

Outlook.Explorer currentExplorer = app.ActiveExplorer();
        if (currentExplorer != null)
        {
            ovcWrapper.Folder = currentExplorer.CurrentFolder.FolderPath;
        }

هذا هو أعلى من تتبع المكدس:

System.Runtime.InteropServices.COMException (0xXXXXXXXX): Exception from HRESULT: 0xXXXXXXXX
at Microsoft.Office.Interop.OutlookViewCtl.ViewCtlClass.set_Folder(String pVal)
at AxMicrosoft.Office.Interop.OutlookViewCtl.AxViewCtl.set_Folder(String value)..

يحدث هذا فقط إذا كان المجلد في غير PST الافتراضي.التغيير إلى مجلد داخل PST الافتراضي سوف تنتج استثناء.

يجب أن نؤكد أن كل شيء يعمل على ما يرام قبل أن أذهب إلى عطلة :).يبدو أن ويندوز XP تثبيت بعض التحديثات التي غيرت الأمان الافتراضية في Internet Explorer أو Outlook 2003 بينما كنت غائبا.

من جهة أخرى (ظاهري) مع Office 2007 برنامج Internet Explorer 6 ، دون أي تحديثات كل شيء يعمل على ما يرام.

هل كانت مفيدة؟

المحلول

بعد فترة من الوقت ، وأخيرا معرفة ما هو الحل:تغيير اسم وحدة التخزين الخارجية إلى شيء جديد.

أثناء بدء التشغيل من الدين ، الأحمال غير PST الافتراضي و يتغير اسمها (ليس اسم ملف pst ، ولكن اسم المجلد الجذر) إلى "وثائق".

هذا هو الكود:

session.AddStore("C:\\test.pst"); // loads existing or creates a new one, if there is none.
storage = session.Folders.GetLast(); // grabs root folder of the new fileStorage.

if (storage.Name != storageName) // if fileStorage is brand new, it has default name.
{
      storage.Name = "Documents";
      session.RemoveStore(storage); // to apply new fileStorage name, it have to be removed and added again.
      session.AddStore(storagePath);
 }

الحل هو عدم استخدام 'الوثائق' كاسم أي أكثر من ذلك ، ولكن شيئا جديدا.لا تتعلق المشكلة إلى اسم محدد.

نصائح أخرى

دوبري دان ، nency :)

أنا لا أعرف ما إذا كنت حقا يمكن أن تقدم "الرصاصة الفضية" حل إعطاء المعلومات هنا...ولكن هنا بعض الأفكار/ملاحظات لمحاولة الخروج:

بعد أن عملت مع Outlook على عدد قليل من المشاريع في الماضي ، أستطيع أن أقول لكم أنه هو الطيور مضحك في بعض الأحيان عندما يتعلق الأمر بإعطاء/منح حق الوصول إلى المستخدمين الخارجيين/العمليات.في بعض الأحيان يتطلب من المستخدم إلى يدويا تأكيد الوصول أو تسجيل الدخول لذا تأكد من أن لديك

app.Session.Logon() 

العناية في مكان ما.

الشيء الآخر أنا لاحظت هو استخدام app.ActiveExplorer() التأكد من أن هذه الدالة تعود بالضبط ما كنت أعتقد أنه هو ؛ فإنه يأخذ الأعلى نافذة على سطح مكتب المستخدم...وهو usualyy ولكن ليس دائما النافذة تحاول العمل مع ، حتى مجرد doublecheck.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top