2013-07-10 8 views
9

IE BHO'yu EPM açıkken Win8'de (IE10 ve IE11 önizleme) çalıştırmaya çalışıyorum. Konuyla ilgili MS (http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons-cookies-metro-desktop.aspx) hakkında birkaç makale buldum, ancak bu çalışmanın nasıl yapılacağına dair hala gerçek örnekler sunmuyorlar. BHO'umu hem 32 hem de 64 bit olarak derledim, makalede belirtildiği gibi (CATID_AppContainerCompatible) kategoriyi ekledim ancak hala IE'den herhangi bir web tarayıcısı olamıyorum. Bu çalışmanın nasıl yapılacağı hakkında daha detaylı bir örnek gösterilebilir mi? IE en Etkin ve 32bit ve 64bit destekler olarak benim BHO'yu bkz Eklentileri Sayfa yönetmeIE EPO EPO (Gelişmiş Korumalı Mod)


HKCR 
{ 
    TestBHO.TestScript.1 = s 'TestScript Class' 
    { 
     CLSID = s '{051FB9EC-79EA-4F8E-9EC2-F1FF4462FB09}' 
    } 
    TestBHO.TestScript = s 'TestScript Class' 
    { 
     CLSID = s '{051FB9EC-79EA-4F8E-9EC2-F1FF4462FB09}' 
     CurVer = s 'TestBHO.TestScript.1' 
    } 
    NoRemove CLSID 
    { 
     ForceRemove {051FB9EC-79EA-4F8E-9EC2-F1FF4462FB09} = s 'TestScript Class' 
     { 
      ProgID = s 'TestBHO.TestScript.1' 
      VersionIndependentProgID = s 'TestBHO.TestScript' 
      ForceRemove 'Programmable' 
      InprocServer32 = s '%MODULE%' 
      { 
       val ThreadingModel = s 'Apartment' 
      } 
      'TypeLib' = s '{2D9CE0FA-2040-4A24-807E-0C0BF4E9ECE7}' 
      'Implemented Categories' = s '' 
      { 
       {59fb2056-d625-48d0-a944-1a85b5ab2640} = s '' 
        { 
        } 
      } 
     } 
    } 
} 

Not olduğunu, ancak DLL bile yüklü değildir: Burada

benim rgs dosyasının nasıl olduğunu.

+0

İlk olarak, EPM açık olmadığında beklediğiniz içeriği aldığınızı onaylamak için EPM'yi devre dışı bırakmayı denediniz mi? İkincisi, IE'nin Eklenti Yöneticisi eklentinizin yüklendiğini gösteriyor mu? Üçüncüsü, eklentinizin olayları alıp almadığını görmek için ne kadar spesifik olarak izliyorsunuz? – EricLaw

+0

1. Evet, EPM devre dışı bırakıldığında BHO beklendiği gibi davranıyor. 2. Eklenti Yöneticisine göre durum "Etkin" ve BHO "32 VE 64 bit" dir. 3. Beklediğim etkinlikleri aldığımı bildirmek için iki ileti kutusu ekledim. SetSite çağrıldığında ve diğeri DISPID_DOCUMENTCOMPLETE çağrıldığında diğeri. Yine, her iki olay da EPM'nin etkin olmadığı durumlarda beklendiği gibi çağrılır. – Shaish

cevap

5

DEFINE_GUID çağrısı yalnızca kodunuzdaki GUID değeri sabitini tanımlar, aslında nesnenizi COM bileşeni kategorisine (kayıt defterinde saklanır) kaydetmek için hiçbir şey yapmaz.

Sen OleView aracını kullanarak çeşitli kategoriler halinde tescil hangi nesnelerin görebilirsiniz http://msdn.microsoft.com/en-us/library/windows/desktop/ms692551(v=vs.85).aspx ve http://msdn.microsoft.com/en-us/library/windows/desktop/ms694322(v=vs.85).aspx

bakınız. Ayrıca, BHO'nuzun DLL'sini AppContainer ile okunabilir bir klasör (örn. \ Program Files \ klasörünün bir alt klasörü) ile yerleştirdiğinizden emin olun. Bunu yapamazsanız, DLL'niz Gelişmiş Korumalı Mod'da IE örneği tarafından yüklenmeyecektir.

+0

Evet, nesneyi o kategoriye kaydetmem gerektiğini anlıyorum. Orijinal rss dosyam nasıl göründüğüne bakın. Belki bunu yanlış anladım? (COM bileşeni kategorileriyle hiç çalışmadım). Ayrıca BHO'mın "LocalLow" klasörünün altında olduğundan emin oldum. Bu senin niyetin miydi? Ve başka bir soru, ATL bununla çalışmaz bir nedeni var mı? – Shaish

+0

E-postada dediğim gibi, DLL dosyanız Program Files klasörüne yerleştirildiğinde iyi çalışıyor. – EricLaw

+0

@Shaish Sorununuzu düzelttiniz mi? Yaptığınız gibi "Uygulanmış Kategoriler" ekleyerek, DLL'leri "Program Dosyaları" nın bir alt klasörüne yerleştirmek benim için çalıştı. – pyrho