Skip to content

Instantly share code, notes, and snippets.

@unseensenpai
Created August 29, 2024 11:41
Show Gist options
  • Save unseensenpai/ff383bd4d6fa7fe596fa79f0df611e89 to your computer and use it in GitHub Desktop.
Save unseensenpai/ff383bd4d6fa7fe596fa79f0df611e89 to your computer and use it in GitHub Desktop.
WIA Device and Item Properties Dumper
namespace Dumper;
public class Dumper{
private static void LogAllProperties(Item item, Device device)
{
LogDeviceProperties(device);
LogItemProperties(item);
}
private static void LogItemProperties(Item item)
{
#region Item Logs
Logger.Info("--* ITEMS LOGS STARTING *--", "Dumper.LogItemProperties()");
foreach (WIA.Property prop in item.Properties)
{
if (prop.SubType == WiaSubType.RangeSubType)
{
Logger.Info($"Property Name: {prop.Name} - Id: {prop.PropertyID} : Value: {prop.get_Value()} Min: {prop.SubTypeMin} Max: {prop.SubTypeMax}", "Dumper.LogItemProperties()");
}
else
{
Logger.Info($"Property Name: {prop.Name} - Id: {prop.PropertyID} : Value: {prop.get_Value()} - Non Range Sub Type", "Dumper.LogItemProperties()");
}
if (prop.SubType == WiaSubType.ListSubType || prop.SubType == WiaSubType.FlagSubType)
{
StringBuilder propertyInfoBuilder = new();
Vector v = prop.SubTypeValues;
System.Collections.IEnumerator enumerator = v.GetEnumerator();
propertyInfoBuilder.Append(prop.Name);
propertyInfoBuilder.Append(" Possible Values: ");
while (enumerator.MoveNext())
{
propertyInfoBuilder.Append(enumerator.Current.ToString());
propertyInfoBuilder.Append(' ');
propertyInfoBuilder.Append(Environment.NewLine);
}
Logger.Info(propertyInfoBuilder.ToString(), "Dumper.LogItemProperties()");
}
}
Logger.Info("--* ITEMS LOGS ENDING *--", "Dumper.LogItemProperties()");
#endregion
}
private static void LogDeviceProperties(Device device)
{
#region Device Logs
Logger.Info("--* DEVICE LOGS STARTING *--", "Dumper.LogDeviceProperties");
foreach (WIA.Property prop in device.Properties)
{
Logger.Info($"Property Name: {prop.Name} - Id: {prop.PropertyID} : Value: {prop.get_Value()}", "Dumper.LogDeviceProperties");
if (prop.SubType == WiaSubType.ListSubType || prop.SubType == WiaSubType.FlagSubType)
{
StringBuilder propertyInfoBuilder = new();
Vector v = prop.SubTypeValues;
System.Collections.IEnumerator enumerator = v.GetEnumerator();
propertyInfoBuilder.Append(prop.Name);
propertyInfoBuilder.Append(" Possible Values: ");
while (enumerator.MoveNext())
{
propertyInfoBuilder.Append(enumerator.Current.ToString());
propertyInfoBuilder.Append(' ');
propertyInfoBuilder.Append(Environment.NewLine);
}
Logger.Info(propertyInfoBuilder.ToString(), "Dumper.LogDeviceProperties()");
}
}
Logger.Info("--* DEVICE LOGS ENDING *--", "Dumper.LogDeviceProperties");
#endregion
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment