MosswartMassacre/Unused/Decal.Adapter/LifetimeProxy.cs
2025-06-09 02:03:11 +02:00

72 lines
2 KiB
C#

using System;
using System.Runtime.InteropServices;
using Decal.Adapter.Support;
using Decal.Interop.Core;
using Microsoft.Win32;
namespace Decal.Adapter;
[ComVisible(true)]
[ComDefaultInterface(typeof(IDecalService))]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("DecalAdapter.Lifetime")]
[Guid("71A69713-6593-47EC-0001-0000000DECA1")]
public sealed class LifetimeProxy : MarshalByRefObject, IDecalService, IDecalDirectory, IDecalWindowsMessageSink
{
private CoreManager myLifetime;
public LifetimeProxy()
{
Util.WriteLine("Lifetime Proxy retrieving Lifetime manager");
myLifetime = CoreManager.Current;
Util.WriteLine("Lifetime Proxy ctor complete");
}
[ComRegisterFunction]
internal static void SelfRegister(Type t)
{
RegistryKey registryKey = Registry.LocalMachine.CreateSubKey("Software\\Decal\\Services").CreateSubKey("{71A69713-6593-47EC-0001-0000000DECA1}");
registryKey.SetValue("", "Decal .NET Lifetime Service", RegistryValueKind.String);
registryKey.SetValue("Enabled", true, RegistryValueKind.DWord);
RegistryKey registryKey2 = Registry.LocalMachine.CreateSubKey("Software\\Decal\\Surrogates").CreateSubKey("{71A69713-6593-47EC-0002-0000000DECA1}");
registryKey2.SetValue("", "Decal.Adapter Surrogate", RegistryValueKind.String);
registryKey2.SetValue("Enabled", true, RegistryValueKind.DWord);
}
[ComUnregisterFunction]
internal static void UnRegister(Type t)
{
}
void IDecalService.AfterPlugins()
{
}
void IDecalService.BeforePlugins()
{
}
void IDecalService.Initialize(DecalCore pDecal)
{
if (!RuntimePolicyHelper.LegacyV2RuntimeEnabledSuccessfully)
{
Util.WriteLine("Can't load v2 mixed-mode");
}
myLifetime.Initialize(pDecal);
}
void IDecalService.Terminate()
{
myLifetime.Terminate();
}
object IDecalDirectory.Lookup(string strName)
{
return null;
}
bool IDecalWindowsMessageSink.WindowMessage(int HWND, short uMsg, int wParam, int lParam)
{
return myLifetime.FireWindowMessage(HWND, uMsg, wParam, lParam);
}
}