Çağlar için, Delphi, Uygulama zamanlamaları sekmesini etkinleştirmek için çalışma zamanı temalarını etkinleştirmiştir. Ancak, bu sadece yürütülebilirler için çalışır. DLL'lerin, ana uygulamalarından tema (ve diğer) ayarlarının üstleneceği varsayılır.Windows Temasını Office Com eklentisine uygula
Maalesef, Microsoft Office orada iyi çalışmıyor. Onların 'temalı' görünümü, Windows'un kendi Ortak Kontrolleri ile değil, özel kontroller kullanılarak elde edilir.
MSDN makalesinde 830033 - How to apply Windows XP themes to Office COM add-ins Microsoft bu İzolasyon Aware hale bir DLL ana süreçten ayarlar göz ardı edilir, öyle ki bir bildirim nasıl uygulanacağını açıklar.Temelde, aşağıya iki aşamada gelir:
- (normal olarak kullanacağınızdan 1 aksine) 2 olan bir int-kaynak kimliği kullanarak, süreç içinde varsayılan tezahür kaynak ekleyin.
- ISOLATION_AWARE_ENABLED tanımını derleyin. ** Delphi'de mevcut değildir. **
Bence brcc32, tamsayılar veya tamsayı dizeleri olarak brcc32 kaynak kimliklerini alıp almadığından emin değilim. Asıl sorun (2) ile yatmaktadır. Varsayılan olarak, bu tanım birkaç DLL işlev bağını değiştirir.
Bu problemi Delphi'de kim çözdü? Bu rotayı daha fazla araştırmalı mıyım, aktivasyon bağlamlarını manuel olarak oluşturmaya çalışmalı mıyım yoksa bu problem için başka zarif çözümler var mı?
Hiçbir zarif çözüm bilmiyorum. WinSDK başlıklarındaki hızlı bakış, ActivateActCtx ve DeactivateActCtx öğelerinin önemli olduğunu gösteriyor - CommCtrl API işlevlerini yüklerken, LoadLibrary ve GetProcAddress çağrılarını tamamlıyor. WinSDK üstbilgileri tüm AFAICS kodlarını içerir, ancak çakışmaları önlemek için yeniden adlandırıldıkları için bazı deobfuscation (örn., IsolationAwarePrivatezltRgCebPnQQeRff, CommctrlIsolationAwarePrivatetRgCebPnQQeRff_pbZPgYQP_QYY, vb.) –
@ Hamry: Keşif için teşekkürler!Delphi RTL/VCL'nin aktivasyon bağlamları ile _anything_ yapmadığını ve tamamen oluşturulan bildirime bağlı olduğunu muhakeme ediyorum? –
Herhangi bir bilgim yok, sadece ipuçlarına yardımcı olmak için SDK başlıklarına baktım. –