TomLabs.PixelBridge.Host 0.3.2

dotnet add package TomLabs.PixelBridge.Host --version 0.3.2
                    
NuGet\Install-Package TomLabs.PixelBridge.Host -Version 0.3.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TomLabs.PixelBridge.Host" Version="0.3.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TomLabs.PixelBridge.Host" Version="0.3.2" />
                    
Directory.Packages.props
<PackageReference Include="TomLabs.PixelBridge.Host" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TomLabs.PixelBridge.Host --version 0.3.2
                    
#r "nuget: TomLabs.PixelBridge.Host, 0.3.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package TomLabs.PixelBridge.Host@0.3.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TomLabs.PixelBridge.Host&version=0.3.2
                    
Install as a Cake Addin
#tool nuget:?package=TomLabs.PixelBridge.Host&version=0.3.2
                    
Install as a Cake Tool

TomLabs.PixelBridge.Host

The capturing side of PixelBridge, the channel that carries data out of World of Warcraft: it finds the game window, captures the strip the in-game PixelBridge addon draws, decodes and deduplicates it, and republishes every message on the local pipe \\.\pipe\tomlabs-pixelbridge for other programs (TomLabs.PixelBridge has the client).

Windows only at run time (user32/gdi32). The package targets plain net10.0, so check OperatingSystem.IsWindows() before starting it in a cross-platform app.

Run the bridge in your app

Several apps may want the bridge; only one captures. BridgeRuntime makes the first app the host and every later one a client of its pipe, and a client takes over within about 2 s when the host exits. Your consumers see the same snapshots and messages in both roles.

using TomLabs.PixelBridge;
using TomLabs.PixelBridge.Host;

var runtime = new BridgeRuntime(
    new BridgeRuntimeOptions { Name = "MyTool", Version = "1.0.0", Channels = [Channels.FoxieEvents, Channels.FoxieState] },
    () => new BridgeHost(new GameWindowLocator(), new GdiStripCapture(), () => new BridgeHostOptions(), loggerFactory.CreateLogger<BridgeHost>()),
    [new MyConsumer()],
    loggerFactory);
await runtime.RunAsync(cancellationToken);

sealed class MyConsumer : IBridgeConsumer
{
    public Task OnTickAsync(IReadOnlyList<BridgeMessage> fresh, BridgeSnapshot bridge, CancellationToken ct)
    {
        // bridge.Role (Host/Client), bridge.HostName, bridge.GameFound, bridge.Session, bridge.Status (channel 0) ...
        foreach (var message in fresh) Console.WriteLine($"#{message.Channel} {message.Kind} seq {message.Seq}");
        return Task.CompletedTask;
    }

    public Task StopAsync() => Task.CompletedTask;
}
  • GameWindowLocator finds retail, Classic, PTR, beta (WowB.exe) and WoW Forever clients by process name or by the GxWindowClass window class; pass extra process names for other builds.
  • BridgeHostOptions.CaptureMethod: Screen (BitBlt of the visible screen; works with every renderer) or Window (PrintWindow; works while the game is covered, not with every renderer). Read before every capture.
  • Logging goes through Microsoft.Extensions.Logging; pass nothing for no logs.
  • Lower level: BridgeHost.Tick(), BridgeLoop.RunAsync and PipeServer run a host without the election.

The protocol and the pipe lines are described in docs/protocol.md in the TomLabs.PixelBridge package.

Licence

MIT.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.3.2 66 11/6/2026
0.3.1 53 11/6/2026
0.3.0 108 10/30/2026