Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
700aa08
软件设置内的贡献者列表添加了 PANDA-JSR
PANDAJSR Feb 14, 2026
bb4b8f4
Merge branch 'InkCanvasForClass:beta' into beta
PANDAJSR Feb 14, 2026
602fe48
Merge branch 'InkCanvasForClass:beta' into beta
PANDAJSR Mar 10, 2026
02991ce
设置窗口:新增可拖动区域
PANDAJSR Mar 10, 2026
95daed7
Merge branch 'InkCanvasForClass:beta' into beta
PANDAJSR Apr 5, 2026
92a466c
Merge branch 'InkCanvasForClass:beta' into beta
PANDAJSR Apr 7, 2026
c60effa
refactor: 新增 MainWindow 样式与图标资源字典
PANDAJSR Apr 7, 2026
4ad905d
refactor: MainWindow 接入资源字典并替换内联样式
PANDAJSR Apr 7, 2026
b00b845
refactor: MainWindow 接入资源字典并替换内联样式
PANDAJSR Apr 7, 2026
4354a34
Merge branch 'refactor/mainwindow' of https://github.com/PANDAJSR/icc…
PANDAJSR Apr 7, 2026
ccb2c3e
refactor: 提取 MainWindow UI 组件到 MainWindow_controls 目录
PANDAJSR Apr 7, 2026
72b9041
refactor: 完成 MainWindow XAML 到 UserControl 的完整提取
PANDAJSR Apr 7, 2026
ef8931c
refactor: extract ResourceDictionary styles to separate file
PANDAJSR Apr 8, 2026
ce49904
refactor: add IBoardCanvasController interface for canvas abstraction
PANDAJSR Apr 8, 2026
0e4601e
fix: load toolbar icon resources in ImageResizeHandles
PANDAJSR Apr 9, 2026
c0bcc33
refactor: initialize board canvas controller adapter
PANDAJSR Apr 9, 2026
3ed9f2c
refactor: route board interactions through canvas controller
PANDAJSR Apr 9, 2026
b8251b9
fix: use absolute pack URI for ImageResizeHandles resources
PANDAJSR Apr 9, 2026
1ba7ef0
fix: inline ImageResizeHandles styles to avoid runtime lookup failure
PANDAJSR Apr 9, 2026
203dae7
fix: disambiguate reflection calls in hardware fingerprint generation
PANDAJSR Apr 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 18 additions & 12 deletions Ink Canvas/Helpers/DeviceIdentifier.cs
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,10 @@ private static string GenerateHardwareFingerprint()
{
var searcherType = assembly.GetType("System.Management.ManagementObjectSearcher");
var searcher = Activator.CreateInstance(searcherType, "SELECT ProcessorId FROM Win32_Processor");
var getMethod = searcherType.GetMethod("Get");
var getMethod = GetPublicInstanceMethod(searcherType, "Get");
var enumerator = getMethod.Invoke(searcher, null);

var moveNextMethod = enumerator.GetType().GetMethod("MoveNext");
var moveNextMethod = GetPublicInstanceMethod(enumerator.GetType(), "MoveNext");
var currentProperty = enumerator.GetType().GetProperty("Current");

if ((bool)moveNextMethod.Invoke(enumerator, null))
Expand All @@ -143,7 +143,7 @@ private static string GenerateHardwareFingerprint()
hardwareInfo.Append(processorId?.ToString() ?? "");
}

var disposeMethod = searcher.GetType().GetMethod("Dispose");
var disposeMethod = GetPublicInstanceMethod(searcher.GetType(), "Dispose");
disposeMethod?.Invoke(searcher, null);
}
catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); }
Expand All @@ -153,10 +153,10 @@ private static string GenerateHardwareFingerprint()
{
var searcherType = assembly.GetType("System.Management.ManagementObjectSearcher");
var searcher = Activator.CreateInstance(searcherType, "SELECT SerialNumber FROM Win32_BaseBoard");
var getMethod = searcherType.GetMethod("Get");
var getMethod = GetPublicInstanceMethod(searcherType, "Get");
var enumerator = getMethod.Invoke(searcher, null);

var moveNextMethod = enumerator.GetType().GetMethod("MoveNext");
var moveNextMethod = GetPublicInstanceMethod(enumerator.GetType(), "MoveNext");
var currentProperty = enumerator.GetType().GetProperty("Current");

if ((bool)moveNextMethod.Invoke(enumerator, null))
Expand All @@ -167,7 +167,7 @@ private static string GenerateHardwareFingerprint()
hardwareInfo.Append(serialNumber?.ToString() ?? "");
}

var disposeMethod = searcher.GetType().GetMethod("Dispose");
var disposeMethod = GetPublicInstanceMethod(searcher.GetType(), "Dispose");
disposeMethod?.Invoke(searcher, null);
}
catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); }
Expand All @@ -177,10 +177,10 @@ private static string GenerateHardwareFingerprint()
{
var searcherType = assembly.GetType("System.Management.ManagementObjectSearcher");
var searcher = Activator.CreateInstance(searcherType, "SELECT SerialNumber FROM Win32_BIOS");
var getMethod = searcherType.GetMethod("Get");
var getMethod = GetPublicInstanceMethod(searcherType, "Get");
var enumerator = getMethod.Invoke(searcher, null);

var moveNextMethod = enumerator.GetType().GetMethod("MoveNext");
var moveNextMethod = GetPublicInstanceMethod(enumerator.GetType(), "MoveNext");
var currentProperty = enumerator.GetType().GetProperty("Current");

if ((bool)moveNextMethod.Invoke(enumerator, null))
Expand All @@ -191,7 +191,7 @@ private static string GenerateHardwareFingerprint()
hardwareInfo.Append(serialNumber?.ToString() ?? "");
}

var disposeMethod = searcher.GetType().GetMethod("Dispose");
var disposeMethod = GetPublicInstanceMethod(searcher.GetType(), "Dispose");
disposeMethod?.Invoke(searcher, null);
}
catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); }
Expand All @@ -201,10 +201,10 @@ private static string GenerateHardwareFingerprint()
{
var searcherType = assembly.GetType("System.Management.ManagementObjectSearcher");
var searcher = Activator.CreateInstance(searcherType, "SELECT SerialNumber FROM Win32_DiskDrive WHERE MediaType='Fixed hard disk media'");
var getMethod = searcherType.GetMethod("Get");
var getMethod = GetPublicInstanceMethod(searcherType, "Get");
var enumerator = getMethod.Invoke(searcher, null);

var moveNextMethod = enumerator.GetType().GetMethod("MoveNext");
var moveNextMethod = GetPublicInstanceMethod(enumerator.GetType(), "MoveNext");
var currentProperty = enumerator.GetType().GetProperty("Current");

if ((bool)moveNextMethod.Invoke(enumerator, null))
Expand All @@ -215,7 +215,7 @@ private static string GenerateHardwareFingerprint()
hardwareInfo.Append(serialNumber?.ToString() ?? "");
}

var disposeMethod = searcher.GetType().GetMethod("Dispose");
var disposeMethod = GetPublicInstanceMethod(searcher.GetType(), "Dispose");
disposeMethod?.Invoke(searcher, null);
}
catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); }
Expand All @@ -235,6 +235,12 @@ private static string GenerateHardwareFingerprint()
return hardwareInfo.ToString();
}

private static MethodInfo GetPublicInstanceMethod(Type type, string methodName)
{
if (type == null || string.IsNullOrEmpty(methodName)) return null;
return type.GetMethod(methodName, BindingFlags.Public | BindingFlags.Instance, null, Type.EmptyTypes, null);
}

/// <summary>
/// 基于硬件指纹生成25字符的设备ID
/// </summary>
Expand Down
Loading
Loading