1
z8018
2025-06-09 240971952b84d0ecfcf28116a337205531d0f885
1
已修改5个文件
已添加28个文件
2418 ■■■■■ 文件已修改
project/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.670.39694/CodeChunks.db 补丁 | 查看 | 原始文档 | blame | 历史
project/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.670.39694/SemanticSymbols.db 补丁 | 查看 | 原始文档 | blame | 历史
project/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json 75 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json 188 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/DownLoad/face-plugin.zip 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.670.39694/CodeChunks.db 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.670.39694/SemanticSymbols.db 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.734.62261/CodeChunks.db 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.734.62261/CodeChunks.db-shm 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.734.62261/CodeChunks.db-wal 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.734.62261/SemanticSymbols.db 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.734.62261/SemanticSymbols.db-shm 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.734.62261/SemanticSymbols.db-wal 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/.vs/FaceSdkX64/v17/DocumentLayout.backup.json 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/.vs/FaceSdkX64/v17/DocumentLayout.json 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/.vs/FaceSdkX64/v17/ResourceExplorer/settings.json 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64.sln 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Register/App.config 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Register/FaceSdkX64Register.csproj 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Register/FrmRegister.Designer.cs 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Register/FrmRegister.cs 501 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Register/FrmRegister.resx 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Register/MyOpaqueLayer.cs 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Register/OpaqueCommand.cs 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Register/Program.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Register/Properties/LoadingImg.gif 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Register/Properties/Resources.Designer.cs 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Register/Properties/Resources.resx 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Service/CHS_Capture.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Service/ConfigHelper.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Service/FaceSdkX64Service.csproj 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Service/HttpServer.cs 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/人脸识别插件/FaceSdkX64/FaceSdkX64Service/TH_Faces.cs 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
project/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.670.39694/CodeChunks.db
Binary files differ
project/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.670.39694/SemanticSymbols.db
Binary files differ
project/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json
@@ -3,6 +3,10 @@
  "WorkspaceRootPath": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\shensuogankongzhi\\project\\wcs\\wideseawcs_server\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|e:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\shensuogankongzhi\\project\\wcs\\wideseawcs_server\\wideseawcs_telescopicservice\\parametersservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|solutionrelative:wideseawcs_telescopicservice\\parametersservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
@@ -41,10 +45,6 @@
    {
      "AbsoluteMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\shensuogankongzhi\\project\\wcs\\wideseawcs_server\\wideseawcs_model\\models\\telescopic\\dt_parameters.cs||{8B382828-6202-11D1-8870-0000F87579D2}",
      "RelativeMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\telescopic\\dt_parameters.cs||{8B382828-6202-11D1-8870-0000F87579D2}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\shensuogankongzhi\\project\\wcs\\wideseawcs_server\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\shensuogankongzhi\\project\\wcs\\wideseawcs_server\\wideseawcs_tasks\\ssg\\alarmresetjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -338,23 +338,11 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 1,
          "SelectedChildIndex": 6,
          "Children": [
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "MaintenanceService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\MaintenanceService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\MaintenanceService.cs",
              "ToolTip": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\MaintenanceService.cs",
              "RelativeToolTip": "WIDESEAWCS_TelescopicService\\MaintenanceService.cs",
              "ViewState": "AgIAABIAAAAAAAAAAAAAAA0AAAA8AAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-04-07T08:11:35.497Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "DocumentIndex": 1,
              "Title": "ParametersService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\ParametersService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\ParametersService.cs",
@@ -367,7 +355,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "DocumentIndex": 4,
              "Title": "MaintenanceTeamService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\MaintenanceTeamService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\MaintenanceTeamService.cs",
@@ -379,7 +367,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "DocumentIndex": 6,
              "Title": "AlarmResetHsyServer.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\AlarmResetHsyServer.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\AlarmResetHsyServer.cs",
@@ -391,7 +379,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "DocumentIndex": 2,
              "Title": "IParametersService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IParametersService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IParametersService.cs",
@@ -403,7 +391,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "DocumentIndex": 5,
              "Title": "DepartmentService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\DepartmentService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\DepartmentService.cs",
@@ -415,7 +403,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "DocumentIndex": 7,
              "Title": "Dt_UnitCategory.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_UnitCategory.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_UnitCategory.cs",
@@ -427,7 +415,32 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "DocumentIndex": 0,
              "Title": "appsettings.json",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json",
              "ToolTip": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json",
              "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
              "WhenOpened": "2025-06-03T09:07:10.755Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "Title": "MaintenanceService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\MaintenanceService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\MaintenanceService.cs",
              "ToolTip": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\MaintenanceService.cs",
              "RelativeToolTip": "WIDESEAWCS_TelescopicService\\MaintenanceService.cs",
              "ViewState": "AgIAABIAAAAAAAAAAAAAAA0AAAA8AAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-04-07T08:11:35.497Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 8,
              "Title": "UnitCategoryServer.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\UnitCategoryServer.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\UnitCategoryServer.cs",
@@ -463,7 +476,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 8,
              "DocumentIndex": 9,
              "Title": "WIDESEAWCS_ITaskInfoService.csproj",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj",
@@ -488,18 +501,6 @@
            {
              "$type": "Document",
              "DocumentIndex": 10,
              "Title": "appsettings.json",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json",
              "ToolTip": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json",
              "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json",
              "ViewState": "AgIAABIAAAAAAAAAAADwvysAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
              "WhenOpened": "2025-06-03T09:07:10.755Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 9,
              "Title": "Dt_Parameters.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Parameters.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Parameters.cs",
project/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json
@@ -3,6 +3,10 @@
  "WorkspaceRootPath": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\shensuogankongzhi\\project\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\system\\sys_userfacecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\system\\sys_userfacecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\shensuogankongzhi\\project\\wcs\\wideseawcs_server\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
    },
@@ -338,11 +342,24 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 6,
          "SelectedChildIndex": 0,
          "Children": [
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "DocumentIndex": 0,
              "Title": "Sys_UserFaceController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_UserFaceController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_UserFaceController.cs",
              "ToolTip": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_UserFaceController.cs",
              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\System\\Sys_UserFaceController.cs",
              "ViewState": "AgIAAC8AAAAAAAAAAAAgwAAAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-06T07:20:39.768Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "ParametersService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\ParametersService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\ParametersService.cs",
@@ -350,12 +367,11 @@
              "RelativeToolTip": "WIDESEAWCS_TelescopicService\\ParametersService.cs",
              "ViewState": "AgIAALgAAAAAAAAAAAAqwM4AAAAVAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-19T09:19:36.589Z",
              "EditorCaption": ""
              "WhenOpened": "2025-05-19T09:19:36.589Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "DocumentIndex": 5,
              "Title": "MaintenanceTeamService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\MaintenanceTeamService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\MaintenanceTeamService.cs",
@@ -367,7 +383,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "DocumentIndex": 7,
              "Title": "AlarmResetHsyServer.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\AlarmResetHsyServer.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\AlarmResetHsyServer.cs",
@@ -379,7 +395,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "DocumentIndex": 3,
              "Title": "IParametersService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IParametersService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IParametersService.cs",
@@ -391,7 +407,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "DocumentIndex": 6,
              "Title": "DepartmentService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\DepartmentService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\DepartmentService.cs",
@@ -403,7 +419,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "DocumentIndex": 8,
              "Title": "Dt_UnitCategory.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_UnitCategory.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_UnitCategory.cs",
@@ -415,7 +431,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "DocumentIndex": 1,
              "Title": "appsettings.json",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json",
@@ -428,7 +444,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "DocumentIndex": 4,
              "Title": "MaintenanceService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\MaintenanceService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\MaintenanceService.cs",
@@ -440,7 +456,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 8,
              "DocumentIndex": 9,
              "Title": "UnitCategoryServer.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\UnitCategoryServer.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\UnitCategoryServer.cs",
@@ -452,7 +468,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 11,
              "DocumentIndex": 12,
              "Title": "AlarmResetJob.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\SSG\\AlarmResetJob.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\SSG\\AlarmResetJob.cs",
@@ -464,7 +480,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 12,
              "DocumentIndex": 13,
              "Title": "ISys_RoleService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ISystemServices\\ISys_RoleService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ISystemServices\\ISys_RoleService.cs",
@@ -476,7 +492,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 9,
              "DocumentIndex": 10,
              "Title": "WIDESEAWCS_ITaskInfoService.csproj",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj",
@@ -488,7 +504,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 15,
              "DocumentIndex": 16,
              "Title": "IAuthorizationRecordServer.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IAuthorizationRecordServer.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IAuthorizationRecordServer.cs",
@@ -500,7 +516,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 10,
              "DocumentIndex": 11,
              "Title": "Dt_Parameters.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Parameters.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Parameters.cs",
@@ -512,7 +528,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 17,
              "DocumentIndex": 18,
              "Title": "IAlarmResetHsyServer.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IAlarmResetHsyServer.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IAlarmResetHsyServer.cs",
@@ -524,7 +540,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 13,
              "DocumentIndex": 14,
              "Title": "ISys_RoleAuthService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ISystemServices\\ISys_RoleAuthService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ISystemServices\\ISys_RoleAuthService.cs",
@@ -536,7 +552,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 14,
              "DocumentIndex": 15,
              "Title": "IMaintenanceService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IMaintenanceService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IMaintenanceService.cs",
@@ -548,7 +564,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 16,
              "DocumentIndex": 17,
              "Title": "AuthorizationRecordServer.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\AuthorizationRecordServer.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\AuthorizationRecordServer.cs",
@@ -560,7 +576,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 18,
              "DocumentIndex": 19,
              "Title": "ISys_UserService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ISystemServices\\ISys_UserService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ISystemServices\\ISys_UserService.cs",
@@ -572,7 +588,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 19,
              "DocumentIndex": 20,
              "Title": "IUnitCategoryServer.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IUnitCategoryServer.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IUnitCategoryServer.cs",
@@ -584,7 +600,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 20,
              "DocumentIndex": 21,
              "Title": "ITeamCategoryServer.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\ITeamCategoryServer.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\ITeamCategoryServer.cs",
@@ -596,7 +612,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 21,
              "DocumentIndex": 22,
              "Title": "IMaintenanceTeamService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IMaintenanceTeamService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IMaintenanceTeamService.cs",
@@ -608,7 +624,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 22,
              "DocumentIndex": 23,
              "Title": "ILoginhsyService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\ILoginhsyService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\ILoginhsyService.cs",
@@ -620,7 +636,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 23,
              "DocumentIndex": 24,
              "Title": "IDepartmentService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IDepartmentService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IDepartmentService.cs",
@@ -632,7 +648,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 24,
              "DocumentIndex": 25,
              "Title": "IStockInfo_HtyService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_IWMSPart\\IStockInfo_HtyService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_IWMSPart\\IStockInfo_HtyService.cs",
@@ -644,7 +660,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 26,
              "DocumentIndex": 27,
              "Title": "LocationInfoController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\WMSPart\\LocationInfoController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\WMSPart\\LocationInfoController.cs",
@@ -656,7 +672,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 27,
              "DocumentIndex": 28,
              "Title": "RouterController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\BasicInfo\\RouterController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\BasicInfo\\RouterController.cs",
@@ -668,7 +684,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 32,
              "DocumentIndex": 33,
              "Title": "Sys_UserService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_UserService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_SystemServices\\Sys_UserService.cs",
@@ -680,7 +696,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 31,
              "DocumentIndex": 32,
              "Title": "Sys_MenuService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_MenuService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_SystemServices\\Sys_MenuService.cs",
@@ -692,7 +708,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 25,
              "DocumentIndex": 26,
              "Title": "IStockQuantityChangeRecordService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_IWMSPart\\IStockQuantityChangeRecordService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_IWMSPart\\IStockQuantityChangeRecordService.cs",
@@ -704,7 +720,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 29,
              "DocumentIndex": 30,
              "Title": "FaceDraw.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\FaceAI\\FaceDraw.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Common\\FaceAI\\FaceDraw.cs",
@@ -716,7 +732,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 28,
              "DocumentIndex": 29,
              "Title": "MaintenanceController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\MaintenanceController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\MaintenanceController.cs",
@@ -728,7 +744,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 30,
              "DocumentIndex": 31,
              "Title": "LocationInfoService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_WMSPart\\LocationInfoService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_WMSPart\\LocationInfoService.cs",
@@ -740,7 +756,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 33,
              "DocumentIndex": 34,
              "Title": "LoginhsyService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\LoginhsyService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\LoginhsyService.cs",
@@ -752,7 +768,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 34,
              "DocumentIndex": 35,
              "Title": "TaskService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
@@ -764,7 +780,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 35,
              "DocumentIndex": 36,
              "Title": "anime.min.js",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\wwwroot\\js\\anime.min.js",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\wwwroot\\js\\anime.min.js",
@@ -776,7 +792,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 36,
              "DocumentIndex": 37,
              "Title": "AlarmResetHsyController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\AlarmResetHsyController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\AlarmResetHsyController.cs",
@@ -788,7 +804,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 38,
              "DocumentIndex": 39,
              "Title": "Dt_AlarmResetHsy.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_AlarmResetHsy.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_AlarmResetHsy.cs",
@@ -800,7 +816,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 37,
              "DocumentIndex": 38,
              "Title": "BatchController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\BatchController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\BatchController.cs",
@@ -812,7 +828,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 39,
              "DocumentIndex": 40,
              "Title": "Sys_UserController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs",
@@ -824,7 +840,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 40,
              "DocumentIndex": 41,
              "Title": "UnitCategoryController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\UnitCategoryController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\UnitCategoryController.cs",
@@ -836,7 +852,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 42,
              "DocumentIndex": 43,
              "Title": "Sys_TenantController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_TenantController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_TenantController.cs",
@@ -848,7 +864,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 41,
              "DocumentIndex": 42,
              "Title": "Sys_RoleController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_RoleController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_RoleController.cs",
@@ -860,7 +876,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 43,
              "DocumentIndex": 44,
              "Title": "Dt_Maintenance.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Maintenance.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Maintenance.cs",
@@ -872,7 +888,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 44,
              "DocumentIndex": 45,
              "Title": "Dt_TeamCategory.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_TeamCategory.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_TeamCategory.cs",
@@ -884,7 +900,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 45,
              "DocumentIndex": 46,
              "Title": "ParametersController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\ParametersController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\ParametersController.cs",
@@ -896,7 +912,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 46,
              "DocumentIndex": 47,
              "Title": "TeamCategoryController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\TeamCategoryController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\TeamCategoryController.cs",
@@ -908,7 +924,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 47,
              "DocumentIndex": 48,
              "Title": "MaintenanceTeamController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\MaintenanceTeamController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\MaintenanceTeamController.cs",
@@ -920,7 +936,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 48,
              "DocumentIndex": 49,
              "Title": "TeamCategoryServer.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\TeamCategoryServer.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\TeamCategoryServer.cs",
@@ -932,7 +948,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 49,
              "DocumentIndex": 50,
              "Title": "Sys_User.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\System\\Sys_User.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\System\\Sys_User.cs",
@@ -944,7 +960,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 50,
              "DocumentIndex": 51,
              "Title": "Sys_DictionaryListController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryListController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryListController.cs",
@@ -956,7 +972,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 51,
              "DocumentIndex": 52,
              "Title": "Dt_AuthorizationRecord.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_AuthorizationRecord.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_AuthorizationRecord.cs",
@@ -968,7 +984,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 53,
              "DocumentIndex": 54,
              "Title": "AuthorizationRecordController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\AuthorizationRecordController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\AuthorizationRecordController.cs",
@@ -980,7 +996,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 52,
              "DocumentIndex": 53,
              "Title": "Dt_FaceRecognition.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_FaceRecognition.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_FaceRecognition.cs",
@@ -992,7 +1008,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 54,
              "DocumentIndex": 55,
              "Title": "DepartmentController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\DepartmentController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\DepartmentController.cs",
@@ -1004,7 +1020,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 55,
              "DocumentIndex": 56,
              "Title": "UserPermissions.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\System\\UserPermissions.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\System\\UserPermissions.cs",
@@ -1016,7 +1032,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 56,
              "DocumentIndex": 57,
              "Title": "FaceRecognitionController .cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\FaceRecognitionController .cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\FaceRecognitionController .cs",
@@ -1028,7 +1044,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 57,
              "DocumentIndex": 58,
              "Title": "IFaceRecognitionServer .cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IFaceRecognitionServer .cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IFaceRecognitionServer .cs",
@@ -1040,7 +1056,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 58,
              "DocumentIndex": 59,
              "Title": "Sys_Role.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\System\\Sys_Role.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\System\\Sys_Role.cs",
@@ -1052,7 +1068,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 59,
              "DocumentIndex": 60,
              "Title": "FaceRecognitionServer.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\FaceRecognitionServer.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\FaceRecognitionServer.cs",
@@ -1064,7 +1080,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 60,
              "DocumentIndex": 61,
              "Title": "LoginhsyController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\LoginhsyController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\LoginhsyController.cs",
@@ -1076,7 +1092,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 61,
              "DocumentIndex": 62,
              "Title": "Sys_Tenant.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\System\\Sys_Tenant.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\System\\Sys_Tenant.cs",
@@ -1088,7 +1104,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 62,
              "DocumentIndex": 63,
              "Title": "SSGTwoJob.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\SSG\\SSGTwoJob.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\SSG\\SSGTwoJob.cs",
@@ -1100,7 +1116,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 63,
              "DocumentIndex": 64,
              "Title": "SSGOneJob.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\SSG\\SSGOneJob.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\SSG\\SSGOneJob.cs",
@@ -1112,7 +1128,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 64,
              "DocumentIndex": 65,
              "Title": "StockQuantityChangeRecordController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\WMSPart\\StockQuantityChangeRecordController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\WMSPart\\StockQuantityChangeRecordController.cs",
@@ -1124,7 +1140,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 67,
              "DocumentIndex": 68,
              "Title": "ITaskService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
@@ -1136,7 +1152,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 66,
              "DocumentIndex": 67,
              "Title": "OHTJob.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTJob.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\OHT\\OHTJob.cs",
@@ -1148,7 +1164,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 65,
              "DocumentIndex": 66,
              "Title": "StockInfoDetailController.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\WMSPart\\StockInfoDetailController.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\WMSPart\\StockInfoDetailController.cs",
@@ -1160,7 +1176,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 68,
              "DocumentIndex": 69,
              "Title": "Dt_MaintenanceTeam.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_MaintenanceTeam.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_MaintenanceTeam.cs",
@@ -1172,7 +1188,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 69,
              "DocumentIndex": 70,
              "Title": "launchSettings.json",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Properties\\launchSettings.json",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Properties\\launchSettings.json",
@@ -1184,7 +1200,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 70,
              "DocumentIndex": 71,
              "Title": "Microsoft.Common.CurrentVersion.targets",
              "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets",
              "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets",
@@ -1194,7 +1210,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 71,
              "DocumentIndex": 72,
              "Title": "WebSocketSetup.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Filter\\WebSocketSetup.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Filter\\WebSocketSetup.cs",
@@ -1206,7 +1222,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 72,
              "DocumentIndex": 73,
              "Title": "WebSocketHostService.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Filter\\WebSocketHostService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Filter\\WebSocketHostService.cs",
@@ -1218,7 +1234,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 82,
              "DocumentIndex": 83,
              "Title": "Sys_DictionaryList.tsv",
              "DocumentMoniker": "E:\\ssg\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\wwwroot\\WIDESEAWCS_DB.DBSeed.Json\\Sys_DictionaryList.tsv",
              "RelativeDocumentMoniker": "..\\..\\..\\..\\..\\..\\ssg\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\wwwroot\\WIDESEAWCS_DB.DBSeed.Json\\Sys_DictionaryList.tsv",
@@ -1230,7 +1246,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 73,
              "DocumentIndex": 74,
              "Title": "DBSeed.cs",
              "DocumentMoniker": "C:\\Users\\Administrator\\AppData\\Local\\Temp\\.vsdbgsrc\\21701ff9ac1c4559ce6e7320e3be3c080710baae7b9b8389cc7919101855e43d\\DBSeed.cs",
              "ToolTip": "C:\\Users\\Administrator\\AppData\\Local\\Temp\\.vsdbgsrc\\21701ff9ac1c4559ce6e7320e3be3c080710baae7b9b8389cc7919101855e43d\\DBSeed.cs",
@@ -1240,7 +1256,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 74,
              "DocumentIndex": 75,
              "Title": "LoginInfo.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\LoginInfo.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Model\\LoginInfo.cs",
@@ -1252,7 +1268,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 76,
              "DocumentIndex": 77,
              "Title": "UserDTO.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\Telescopic\\UserDTO.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\Telescopic\\UserDTO.cs",
@@ -1264,7 +1280,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 81,
              "DocumentIndex": 82,
              "Title": "SpeedDTO.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\Telescopic\\SpeedDTO.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\Telescopic\\SpeedDTO.cs",
@@ -1276,7 +1292,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 75,
              "DocumentIndex": 76,
              "Title": "UpstreamIDTO.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\Telescopic\\UpstreamIDTO.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\Telescopic\\UpstreamIDTO.cs",
@@ -1288,7 +1304,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 77,
              "DocumentIndex": 78,
              "Title": "PaginationDTO.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\Telescopic\\PaginationDTO.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\Telescopic\\PaginationDTO.cs",
@@ -1300,7 +1316,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 78,
              "DocumentIndex": 79,
              "Title": "AddUserDTO.cs",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\System\\AddUserDTO.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\System\\AddUserDTO.cs",
@@ -1312,7 +1328,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 79,
              "DocumentIndex": 80,
              "Title": "Face.cs",
              "DocumentMoniker": "C:\\Users\\Administrator\\AppData\\Local\\Temp\\.vsdbgsrc\\b700ba3c32194731a3eaca4d8eaddd483d62abecc7fa3ee9e8c64e80596c22fa\\Face.cs",
              "ToolTip": "C:\\Users\\Administrator\\AppData\\Local\\Temp\\.vsdbgsrc\\b700ba3c32194731a3eaca4d8eaddd483d62abecc7fa3ee9e8c64e80596c22fa\\Face.cs",
@@ -1322,7 +1338,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 80,
              "DocumentIndex": 81,
              "Title": "index.html",
              "DocumentMoniker": "E:\\0.\u9879\u76EE\u96C6\\\u7F8E\u65B0\\ShenSuoGanKongZhi\\project\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\index.html",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\index.html",
project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/DownLoad/face-plugin.zip
Binary files differ
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.670.39694/CodeChunks.db
Binary files differ
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.670.39694/SemanticSymbols.db
Binary files differ
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.734.62261/CodeChunks.db
Binary files differ
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.734.62261/CodeChunks.db-shm
Binary files differ
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.734.62261/CodeChunks.db-wal
Binary files differ
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.734.62261/SemanticSymbols.db
Binary files differ
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.734.62261/SemanticSymbols.db-shm
Binary files differ
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/.vs/FaceSdkX64/CopilotIndices/17.14.734.62261/SemanticSymbols.db-wal
Binary files differ
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/.vs/FaceSdkX64/v17/DocumentLayout.backup.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,244 @@
{
  "Version": 1,
  "WorkspaceRootPath": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\facesdkx64register.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\facesdkx64register.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
    },
    {
      "AbsoluteMoniker": "D:0:0:{6D18B477-E291-4014-B992-9266DA280C6B}|FaceSdkX64Service\\FaceSdkX64Service.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64service\\th_faces.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{6D18B477-E291-4014-B992-9266DA280C6B}|FaceSdkX64Service\\FaceSdkX64Service.csproj|solutionrelative:facesdkx64service\\th_faces.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\frmregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\frmregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{6D18B477-E291-4014-B992-9266DA280C6B}|FaceSdkX64Service\\FaceSdkX64Service.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64service\\httpserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{6D18B477-E291-4014-B992-9266DA280C6B}|FaceSdkX64Service\\FaceSdkX64Service.csproj|solutionrelative:facesdkx64service\\httpserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{6D18B477-E291-4014-B992-9266DA280C6B}|FaceSdkX64Service\\FaceSdkX64Service.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64service\\chs_capture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{6D18B477-E291-4014-B992-9266DA280C6B}|FaceSdkX64Service\\FaceSdkX64Service.csproj|solutionrelative:facesdkx64service\\chs_capture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{A1CAC745-A3C3-42B5-9826-4358006B3CBD}|FaceSdkX64\\FaceSdkX64.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64\\frmfacecheck.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{A1CAC745-A3C3-42B5-9826-4358006B3CBD}|FaceSdkX64\\FaceSdkX64.csproj|solutionrelative:facesdkx64\\frmfacecheck.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|F:\\\u6D4B\u8BD5\\FaceSdkX64\\facesdkx64register\\frmregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\frmregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\properties\\resources.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\properties\\resources.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\properties\\resources.resx||{81828910-B8B3-4D2B-99A3-067027C180C1}",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\properties\\resources.resx||{81828910-B8B3-4D2B-99A3-067027C180C1}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\myopaquelayer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\myopaquelayer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\opaquecommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\opaquecommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{A1CAC745-A3C3-42B5-9826-4358006B3CBD}|FaceSdkX64\\FaceSdkX64.csproj|F:\\\u6D4B\u8BD5\\FaceSdkX64\\facesdkx64\\frmfacecheck.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
      "RelativeMoniker": "D:0:0:{A1CAC745-A3C3-42B5-9826-4358006B3CBD}|FaceSdkX64\\FaceSdkX64.csproj|solutionrelative:facesdkx64\\frmfacecheck.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
    },
    {
      "AbsoluteMoniker": "D:0:0:{A1CAC745-A3C3-42B5-9826-4358006B3CBD}|FaceSdkX64\\FaceSdkX64.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64\\facesdkx64.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|",
      "RelativeMoniker": "D:0:0:{A1CAC745-A3C3-42B5-9826-4358006B3CBD}|FaceSdkX64\\FaceSdkX64.csproj|solutionrelative:facesdkx64\\facesdkx64.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
    }
  ],
  "DocumentGroupContainers": [
    {
      "Orientation": 0,
      "VerticalTabListWidth": 256,
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 2,
          "Children": [
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "TH_Faces.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Service\\TH_Faces.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Service\\TH_Faces.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Service\\TH_Faces.cs",
              "RelativeToolTip": "FaceSdkX64Service\\TH_Faces.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAAB8AAABCAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-08T03:19:03.556Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "Title": "CHS_Capture.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Service\\CHS_Capture.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Service\\CHS_Capture.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Service\\CHS_Capture.cs",
              "RelativeToolTip": "FaceSdkX64Service\\CHS_Capture.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-08T03:18:57.128Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "Title": "FaceSdkX64Register.csproj",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FaceSdkX64Register.csproj",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\FaceSdkX64Register.csproj",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FaceSdkX64Register.csproj",
              "RelativeToolTip": "FaceSdkX64Register\\FaceSdkX64Register.csproj",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAApAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
              "WhenOpened": "2025-06-06T07:14:47.187Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "Title": "HttpServer.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Service\\HttpServer.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Service\\HttpServer.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Service\\HttpServer.cs",
              "RelativeToolTip": "FaceSdkX64Service\\HttpServer.cs",
              "ViewState": "AgIAABwAAAAAAAAAAAAQwCIAAAANAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-29T07:43:03.48Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 8,
              "Title": "Resources.Designer.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\Properties\\Resources.Designer.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\Properties\\Resources.Designer.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\Properties\\Resources.Designer.cs",
              "RelativeToolTip": "FaceSdkX64Register\\Properties\\Resources.Designer.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAAEYAAAAJAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-29T02:18:20.337Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 9,
              "Title": "Resources.resx",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\Properties\\Resources.resx",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\Properties\\Resources.resx",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\Properties\\Resources.resx",
              "RelativeToolTip": "FaceSdkX64Register\\Properties\\Resources.resx",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001005|",
              "WhenOpened": "2025-05-29T02:16:24.157Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 10,
              "Title": "MyOpaqueLayer.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\MyOpaqueLayer.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\MyOpaqueLayer.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\MyOpaqueLayer.cs",
              "RelativeToolTip": "FaceSdkX64Register\\MyOpaqueLayer.cs",
              "ViewState": "AgIAADsAAAAAAAAAAAAYwE0AAAA0AAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-29T02:12:52.072Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 13,
              "Title": "FaceSdkX64",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64\\FaceSdkX64.csproj",
              "RelativeDocumentMoniker": "FaceSdkX64\\FaceSdkX64.csproj",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64\\FaceSdkX64.csproj",
              "RelativeToolTip": "FaceSdkX64\\FaceSdkX64.csproj",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
              "WhenOpened": "2025-05-28T08:39:06.348Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "FrmRegister.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FrmRegister.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\FrmRegister.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FrmRegister.cs",
              "RelativeToolTip": "FaceSdkX64Register\\FrmRegister.cs",
              "ViewState": "AgIAAAgAAAAAAAAAAAAxwCgAAABCAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-28T07:25:57.103Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "Title": "App.config",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\App.config",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\App.config",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\App.config",
              "RelativeToolTip": "FaceSdkX64Register\\App.config",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|",
              "WhenOpened": "2025-06-05T01:57:45.621Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "Title": "FrmRegister.cs [\u8BBE\u8BA1]",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FrmRegister.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\FrmRegister.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FrmRegister.cs [\u8BBE\u8BA1]",
              "RelativeToolTip": "FaceSdkX64Register\\FrmRegister.cs [\u8BBE\u8BA1]",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-28T08:36:25.753Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "Title": "FrmFaceCheck.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64\\FrmFaceCheck.cs",
              "RelativeDocumentMoniker": "FaceSdkX64\\FrmFaceCheck.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64\\FrmFaceCheck.cs",
              "RelativeToolTip": "FaceSdkX64\\FrmFaceCheck.cs",
              "ViewState": "AgIAAAoCAAAAAAAAAAAvwAkCAAAbAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-28T06:42:06.783Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 11,
              "Title": "OpaqueCommand.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\OpaqueCommand.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\OpaqueCommand.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\OpaqueCommand.cs",
              "RelativeToolTip": "FaceSdkX64Register\\OpaqueCommand.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAAAuwBIAAAAUAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-29T02:23:19.143Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 12,
              "Title": "FrmFaceCheck.cs [\u8BBE\u8BA1]",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64\\FrmFaceCheck.cs",
              "RelativeDocumentMoniker": "FaceSdkX64\\FrmFaceCheck.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64\\FrmFaceCheck.cs [\u8BBE\u8BA1]",
              "RelativeToolTip": "FaceSdkX64\\FrmFaceCheck.cs [\u8BBE\u8BA1]",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-28T06:42:03.078Z"
            }
          ]
        }
      ]
    }
  ]
}
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/.vs/FaceSdkX64/v17/DocumentLayout.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,260 @@
{
  "Version": 1,
  "WorkspaceRootPath": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\facesdkx64register.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\facesdkx64register.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\facesdkx64register.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\facesdkx64register.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
    },
    {
      "AbsoluteMoniker": "D:0:0:{6D18B477-E291-4014-B992-9266DA280C6B}|FaceSdkX64Service\\FaceSdkX64Service.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64service\\th_faces.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{6D18B477-E291-4014-B992-9266DA280C6B}|FaceSdkX64Service\\FaceSdkX64Service.csproj|solutionrelative:facesdkx64service\\th_faces.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\frmregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\frmregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{6D18B477-E291-4014-B992-9266DA280C6B}|FaceSdkX64Service\\FaceSdkX64Service.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64service\\httpserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{6D18B477-E291-4014-B992-9266DA280C6B}|FaceSdkX64Service\\FaceSdkX64Service.csproj|solutionrelative:facesdkx64service\\httpserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{6D18B477-E291-4014-B992-9266DA280C6B}|FaceSdkX64Service\\FaceSdkX64Service.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64service\\chs_capture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{6D18B477-E291-4014-B992-9266DA280C6B}|FaceSdkX64Service\\FaceSdkX64Service.csproj|solutionrelative:facesdkx64service\\chs_capture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{A1CAC745-A3C3-42B5-9826-4358006B3CBD}|FaceSdkX64\\FaceSdkX64.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64\\frmfacecheck.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{A1CAC745-A3C3-42B5-9826-4358006B3CBD}|FaceSdkX64\\FaceSdkX64.csproj|solutionrelative:facesdkx64\\frmfacecheck.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|F:\\\u6D4B\u8BD5\\FaceSdkX64\\facesdkx64register\\frmregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\frmregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\properties\\resources.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\properties\\resources.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\properties\\resources.resx||{81828910-B8B3-4D2B-99A3-067027C180C1}",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\properties\\resources.resx||{81828910-B8B3-4D2B-99A3-067027C180C1}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\myopaquelayer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\myopaquelayer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64register\\opaquecommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{EB4DDD28-77FA-427F-A757-8C7C98A6665F}|FaceSdkX64Register\\FaceSdkX64Register.csproj|solutionrelative:facesdkx64register\\opaquecommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{A1CAC745-A3C3-42B5-9826-4358006B3CBD}|FaceSdkX64\\FaceSdkX64.csproj|F:\\\u6D4B\u8BD5\\FaceSdkX64\\facesdkx64\\frmfacecheck.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
      "RelativeMoniker": "D:0:0:{A1CAC745-A3C3-42B5-9826-4358006B3CBD}|FaceSdkX64\\FaceSdkX64.csproj|solutionrelative:facesdkx64\\frmfacecheck.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
    },
    {
      "AbsoluteMoniker": "D:0:0:{A1CAC745-A3C3-42B5-9826-4358006B3CBD}|FaceSdkX64\\FaceSdkX64.csproj|f:\\\u6D4B\u8BD5\\facesdkx64\\facesdkx64\\facesdkx64.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|",
      "RelativeMoniker": "D:0:0:{A1CAC745-A3C3-42B5-9826-4358006B3CBD}|FaceSdkX64\\FaceSdkX64.csproj|solutionrelative:facesdkx64\\facesdkx64.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
    }
  ],
  "DocumentGroupContainers": [
    {
      "Orientation": 0,
      "VerticalTabListWidth": 256,
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 0,
          "Children": [
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "Title": "FaceSdkX64Register",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FaceSdkX64Register.csproj",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\FaceSdkX64Register.csproj",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FaceSdkX64Register.csproj",
              "RelativeToolTip": "FaceSdkX64Register\\FaceSdkX64Register.csproj",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
              "WhenOpened": "2025-06-09T06:11:55.423Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "TH_Faces.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Service\\TH_Faces.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Service\\TH_Faces.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Service\\TH_Faces.cs",
              "RelativeToolTip": "FaceSdkX64Service\\TH_Faces.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAAB8AAABCAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-08T03:19:03.556Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "Title": "CHS_Capture.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Service\\CHS_Capture.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Service\\CHS_Capture.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Service\\CHS_Capture.cs",
              "RelativeToolTip": "FaceSdkX64Service\\CHS_Capture.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-06-08T03:18:57.128Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "FaceSdkX64Register.csproj",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FaceSdkX64Register.csproj",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\FaceSdkX64Register.csproj",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FaceSdkX64Register.csproj*",
              "RelativeToolTip": "FaceSdkX64Register\\FaceSdkX64Register.csproj*",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAApAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
              "WhenOpened": "2025-06-06T07:14:47.187Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "Title": "HttpServer.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Service\\HttpServer.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Service\\HttpServer.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Service\\HttpServer.cs",
              "RelativeToolTip": "FaceSdkX64Service\\HttpServer.cs",
              "ViewState": "AgIAABwAAAAAAAAAAAAQwCIAAAANAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-29T07:43:03.48Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 9,
              "Title": "Resources.Designer.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\Properties\\Resources.Designer.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\Properties\\Resources.Designer.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\Properties\\Resources.Designer.cs",
              "RelativeToolTip": "FaceSdkX64Register\\Properties\\Resources.Designer.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAAEYAAAAJAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-29T02:18:20.337Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 10,
              "Title": "Resources.resx",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\Properties\\Resources.resx",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\Properties\\Resources.resx",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\Properties\\Resources.resx",
              "RelativeToolTip": "FaceSdkX64Register\\Properties\\Resources.resx",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001005|",
              "WhenOpened": "2025-05-29T02:16:24.157Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 11,
              "Title": "MyOpaqueLayer.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\MyOpaqueLayer.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\MyOpaqueLayer.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\MyOpaqueLayer.cs",
              "RelativeToolTip": "FaceSdkX64Register\\MyOpaqueLayer.cs",
              "ViewState": "AgIAADsAAAAAAAAAAAAYwE0AAAA0AAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-29T02:12:52.072Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 14,
              "Title": "FaceSdkX64",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64\\FaceSdkX64.csproj",
              "RelativeDocumentMoniker": "FaceSdkX64\\FaceSdkX64.csproj",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64\\FaceSdkX64.csproj",
              "RelativeToolTip": "FaceSdkX64\\FaceSdkX64.csproj",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
              "WhenOpened": "2025-05-28T08:39:06.348Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "Title": "FrmRegister.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FrmRegister.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\FrmRegister.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FrmRegister.cs",
              "RelativeToolTip": "FaceSdkX64Register\\FrmRegister.cs",
              "ViewState": "AgIAAAgAAAAAAAAAAAAxwCgAAABCAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-28T07:25:57.103Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "Title": "App.config",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\App.config",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\App.config",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\App.config",
              "RelativeToolTip": "FaceSdkX64Register\\App.config",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|",
              "WhenOpened": "2025-06-05T01:57:45.621Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 8,
              "Title": "FrmRegister.cs [\u8BBE\u8BA1]",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FrmRegister.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\FrmRegister.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\FrmRegister.cs [\u8BBE\u8BA1]",
              "RelativeToolTip": "FaceSdkX64Register\\FrmRegister.cs [\u8BBE\u8BA1]",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-28T08:36:25.753Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "Title": "FrmFaceCheck.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64\\FrmFaceCheck.cs",
              "RelativeDocumentMoniker": "FaceSdkX64\\FrmFaceCheck.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64\\FrmFaceCheck.cs",
              "RelativeToolTip": "FaceSdkX64\\FrmFaceCheck.cs",
              "ViewState": "AgIAAAoCAAAAAAAAAAAvwAkCAAAbAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-28T06:42:06.783Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 12,
              "Title": "OpaqueCommand.cs",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\OpaqueCommand.cs",
              "RelativeDocumentMoniker": "FaceSdkX64Register\\OpaqueCommand.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64Register\\OpaqueCommand.cs",
              "RelativeToolTip": "FaceSdkX64Register\\OpaqueCommand.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAAAuwBIAAAAUAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-29T02:23:19.143Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 13,
              "Title": "FrmFaceCheck.cs [\u8BBE\u8BA1]",
              "DocumentMoniker": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64\\FrmFaceCheck.cs",
              "RelativeDocumentMoniker": "FaceSdkX64\\FrmFaceCheck.cs",
              "ToolTip": "F:\\\u6D4B\u8BD5\\FaceSdkX64\\FaceSdkX64\\FrmFaceCheck.cs [\u8BBE\u8BA1]",
              "RelativeToolTip": "FaceSdkX64\\FrmFaceCheck.cs [\u8BBE\u8BA1]",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2025-05-28T06:42:03.078Z"
            }
          ]
        }
      ]
    }
  ]
}
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/.vs/FaceSdkX64/v17/ResourceExplorer/settings.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
{
  "ShowEmptyProjects": false,
  "SelectedGroups": [],
  "ExpandedProjects": [],
  "EnableSpellChecker": true,
  "ColumnOrder": [
    "name",
    "type",
    "neutral-value",
    "neutral-comment"
  ],
  "VisibleColumnKeys": [
    "name",
    "neutral-value"
  ]
}
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64.sln
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.14.36109.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FaceSdkX64", "FaceSdkX64\FaceSdkX64.csproj", "{A1CAC745-A3C3-42B5-9826-4358006B3CBD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FaceSdkX64Register", "FaceSdkX64Register\FaceSdkX64Register.csproj", "{EB4DDD28-77FA-427F-A757-8C7C98A6665F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FaceSdkX64Service", "FaceSdkX64Service\FaceSdkX64Service.csproj", "{6D18B477-E291-4014-B992-9266DA280C6B}"
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "FacePlugin", "FacePlugin\FacePlugin.vdproj", "{967F0B76-B20B-D70C-BDE0-80E287558C7D}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Debug|x64 = Debug|x64
        Debug|x86 = Debug|x86
        Release|Any CPU = Release|Any CPU
        Release|x64 = Release|x64
        Release|x86 = Release|x86
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {A1CAC745-A3C3-42B5-9826-4358006B3CBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {A1CAC745-A3C3-42B5-9826-4358006B3CBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {A1CAC745-A3C3-42B5-9826-4358006B3CBD}.Debug|x64.ActiveCfg = Debug|Any CPU
        {A1CAC745-A3C3-42B5-9826-4358006B3CBD}.Debug|x64.Build.0 = Debug|Any CPU
        {A1CAC745-A3C3-42B5-9826-4358006B3CBD}.Debug|x86.ActiveCfg = Debug|Any CPU
        {A1CAC745-A3C3-42B5-9826-4358006B3CBD}.Debug|x86.Build.0 = Debug|Any CPU
        {A1CAC745-A3C3-42B5-9826-4358006B3CBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {A1CAC745-A3C3-42B5-9826-4358006B3CBD}.Release|Any CPU.Build.0 = Release|Any CPU
        {A1CAC745-A3C3-42B5-9826-4358006B3CBD}.Release|x64.ActiveCfg = Release|Any CPU
        {A1CAC745-A3C3-42B5-9826-4358006B3CBD}.Release|x64.Build.0 = Release|Any CPU
        {A1CAC745-A3C3-42B5-9826-4358006B3CBD}.Release|x86.ActiveCfg = Release|Any CPU
        {A1CAC745-A3C3-42B5-9826-4358006B3CBD}.Release|x86.Build.0 = Release|Any CPU
        {EB4DDD28-77FA-427F-A757-8C7C98A6665F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {EB4DDD28-77FA-427F-A757-8C7C98A6665F}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {EB4DDD28-77FA-427F-A757-8C7C98A6665F}.Debug|x64.ActiveCfg = Debug|x64
        {EB4DDD28-77FA-427F-A757-8C7C98A6665F}.Debug|x64.Build.0 = Debug|x64
        {EB4DDD28-77FA-427F-A757-8C7C98A6665F}.Debug|x86.ActiveCfg = Debug|x86
        {EB4DDD28-77FA-427F-A757-8C7C98A6665F}.Debug|x86.Build.0 = Debug|x86
        {EB4DDD28-77FA-427F-A757-8C7C98A6665F}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {EB4DDD28-77FA-427F-A757-8C7C98A6665F}.Release|Any CPU.Build.0 = Release|Any CPU
        {EB4DDD28-77FA-427F-A757-8C7C98A6665F}.Release|x64.ActiveCfg = Release|x64
        {EB4DDD28-77FA-427F-A757-8C7C98A6665F}.Release|x64.Build.0 = Release|x64
        {EB4DDD28-77FA-427F-A757-8C7C98A6665F}.Release|x86.ActiveCfg = Release|x86
        {EB4DDD28-77FA-427F-A757-8C7C98A6665F}.Release|x86.Build.0 = Release|x86
        {6D18B477-E291-4014-B992-9266DA280C6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {6D18B477-E291-4014-B992-9266DA280C6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {6D18B477-E291-4014-B992-9266DA280C6B}.Debug|x64.ActiveCfg = Debug|Any CPU
        {6D18B477-E291-4014-B992-9266DA280C6B}.Debug|x64.Build.0 = Debug|Any CPU
        {6D18B477-E291-4014-B992-9266DA280C6B}.Debug|x86.ActiveCfg = Debug|Any CPU
        {6D18B477-E291-4014-B992-9266DA280C6B}.Debug|x86.Build.0 = Debug|Any CPU
        {6D18B477-E291-4014-B992-9266DA280C6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {6D18B477-E291-4014-B992-9266DA280C6B}.Release|Any CPU.Build.0 = Release|Any CPU
        {6D18B477-E291-4014-B992-9266DA280C6B}.Release|x64.ActiveCfg = Release|Any CPU
        {6D18B477-E291-4014-B992-9266DA280C6B}.Release|x64.Build.0 = Release|Any CPU
        {6D18B477-E291-4014-B992-9266DA280C6B}.Release|x86.ActiveCfg = Release|Any CPU
        {6D18B477-E291-4014-B992-9266DA280C6B}.Release|x86.Build.0 = Release|Any CPU
        {967F0B76-B20B-D70C-BDE0-80E287558C7D}.Debug|Any CPU.ActiveCfg = Debug
        {967F0B76-B20B-D70C-BDE0-80E287558C7D}.Debug|x64.ActiveCfg = Debug
        {967F0B76-B20B-D70C-BDE0-80E287558C7D}.Debug|x64.Build.0 = Debug
        {967F0B76-B20B-D70C-BDE0-80E287558C7D}.Debug|x86.ActiveCfg = Debug
        {967F0B76-B20B-D70C-BDE0-80E287558C7D}.Debug|x86.Build.0 = Debug
        {967F0B76-B20B-D70C-BDE0-80E287558C7D}.Release|Any CPU.ActiveCfg = Release
        {967F0B76-B20B-D70C-BDE0-80E287558C7D}.Release|x64.ActiveCfg = Release
        {967F0B76-B20B-D70C-BDE0-80E287558C7D}.Release|x64.Build.0 = Release
        {967F0B76-B20B-D70C-BDE0-80E287558C7D}.Release|x86.ActiveCfg = Release
        {967F0B76-B20B-D70C-BDE0-80E287558C7D}.Release|x86.Build.0 = Release
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
    GlobalSection(ExtensibilityGlobals) = postSolution
        SolutionGuid = {29E4C756-E74A-4FA4-89BB-7F19037564AB}
    EndGlobalSection
EndGlobal
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Register/App.config
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="port" value="9298"/>
    </appSettings>
</configuration>
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Register/FaceSdkX64Register.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
    <ImplicitUsings>enable</ImplicitUsings>
    <BaseOutputPath>..\bin\</BaseOutputPath>
    <PlatformTarget>x86</PlatformTarget>
    <Platforms>AnyCPU;x64;x86</Platforms>
  </PropertyGroup>
  <ItemGroup>
    <None Remove="Properties\LoadingImg.gif" />
  </ItemGroup>
  <ItemGroup>
    <Content Include="Properties\LoadingImg.gif" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\FaceSdkX64Service\FaceSdkX64Service.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Compile Update="Properties\Resources.Designer.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>Resources.resx</DependentUpon>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Update="Properties\Resources.resx">
      <Generator>PublicResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
    </EmbeddedResource>
  </ItemGroup>
  <ItemGroup>
    <None Update="camera.ini">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="IdFaceSdk.dll">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="SmCameraPreview.dll">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Register/FrmRegister.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
namespace FaceSdkX64Register
{
    partial class FrmRegister
    {
        /// <summary>
        ///  Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        ///  Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows Form Designer generated code
        /// <summary>
        ///  Required method for Designer support - do not modify
        ///  the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            components = new System.ComponentModel.Container();
            pictureBox1 = new PictureBox();
            label1 = new Label();
            timer1 = new System.Windows.Forms.Timer(components);
            timer2 = new System.Windows.Forms.Timer(components);
            timer3 = new System.Windows.Forms.Timer(components);
            ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
            SuspendLayout();
            //
            // pictureBox1
            //
            pictureBox1.Location = new Point(23, 12);
            pictureBox1.Name = "pictureBox1";
            pictureBox1.Size = new Size(1280, 960);
            pictureBox1.TabIndex = 0;
            pictureBox1.TabStop = false;
            //
            // label1
            //
            label1.AutoSize = true;
            label1.Location = new Point(589, 29);
            label1.Name = "label1";
            label1.Size = new Size(63, 24);
            label1.TabIndex = 1;
            label1.Text = "label1";
            //
            // timer1
            //
            timer1.Tick += timer1_Tick;
            //
            // timer2
            //
            timer2.Tick += timer2_Tick;
            //
            // timer3
            //
            timer3.Tick += timer3_Tick;
            //
            // FrmRegister
            //
            AutoScaleDimensions = new SizeF(11F, 24F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(1331, 992);
            Controls.Add(label1);
            Controls.Add(pictureBox1);
            Name = "FrmRegister";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "人脸录入";
            Load += FrmRegister_Load;
            ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
            ResumeLayout(false);
            PerformLayout();
        }
        #endregion
        private PictureBox pictureBox1;
        private Label label1;
        private System.Windows.Forms.Timer timer1;
        private System.Windows.Forms.Timer timer2;
        private System.Windows.Forms.Timer timer3;
    }
}
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Register/FrmRegister.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,501 @@
using System;
using System.Configuration;
using System.Runtime.InteropServices;
using System.Text;
using FaceSdkX64Service;
namespace FaceSdkX64Register
{
    public partial class FrmRegister : Form
    {
        Int32 VIDEO_WIDTH = 640, VIDEO_HEIGHT = 480; // ç›¸æœºåˆ†è¾¨çއ
        Int32 nRotate = 0; /* ç›¸æœºå®‰è£…角度:0-正常安装,90-旋转90度安装,180-旋转180度安装,270-旋转270度安装 */
        Int32 nWidth = 0, nHeight = 0; // è§†é¢‘帧数据分辨率(相机正装时为相机分辨率,相机90度或270度倒装时为相机分辨率宽度对调)
        // ç•Œé¢æ˜¾ç¤ºåŠä¿å­˜å›¾è±¡çš„人脸大小相对原始SDK检测出的人脸大小的放大倍数
        float fExtendLeft = 0.15f, fExtendRight = 0.15f, fExtendTop = 0.15f, fExtendBottom = 0.20f; // ä¸º0表示不放大
        // å½©è‰²åŠçº¢å¤–相机 VID/PID é…ç½®ï¼ˆæœ‰é…ç½®åˆ™æ ¹æ®æŒ‡å®šçš„VID/PID打开相机,无配置则根据选择的相机编号打开相机)
        int nVid1 = 0, nPid1 = 0, nVid2 = 0, nPid2 = 0;
        IntPtr hCamColor = IntPtr.Zero, hCamGray = IntPtr.Zero; // ç›¸æœºå¯¹è±¡
        IntPtr hPreviewColor = IntPtr.Zero, hPreviewGray = IntPtr.Zero; // è§†é¢‘帧显示对角
        TH_Faces.FACE_DETECT_RESULT FaceColor, FaceColorExt; // SDK检测到的彩色图象原始人脸坐标,以及界面显示及保存图象的人脸坐标(在原始坐标基础上根据fExtend?变量放大)
        TH_Faces.FACE_DETECT_RESULT FaceGray, FaceGrayExt; // SDK检测到的红外图象原始人脸坐标,以及界面显示及保存图象的人脸坐标(在原始坐标基础上根据fExtend?变量放大)
        Boolean bSdkInit = false, bCamColorReady = false, bCamGrayReady = false, bFramesReady = false; // çŠ¶æ€æ ‡è¯†
        IntPtr pFrameColor, pFrameGray; // ä¿å­˜å½©è‰²ç›¸æœºå’Œçº¢å¤–相机的图象帧数据
        IntPtr pFrameTemp, pFrameTemp2; // ä¸´æ—¶å›¾è±¡å¸§æ•°æ®ç¼“冲区
        OpaqueCommand oc;
        bool loading = false;
        public FrmRegister()
        {
            InitializeComponent();
            oc = new OpaqueCommand();
            CheckForIllegalCrossThreadCalls = false; // å…è®¸è·¨çº¿ç¨‹è°ƒç”¨æŽ§ä»¶ã€
        }
        private void FrmRegister_Load(object sender, EventArgs e)
        {
            loading = true;
            timer3.Enabled = true; // å¯åŠ¨å®šæ—¶å™¨ï¼Œå®šæ—¶æ˜¾ç¤ºåŠé€æ˜Žè’™æ¿å±‚
            Task.Run(() =>
            {
                try
                {
                    int i, nCameraNum = CHS_Capture.SmCameraGetCount(); // æ£€æµ‹è¿žæŽ¥çš„相机个数
                    // è¯»ç›¸æœºé…ç½®æ–‡ä»¶ camera.ini ï¼ˆæ˜¯å¦æ‰“开指定 VID/PID çš„相机)
                    string val;
                    StringBuilder sb = new StringBuilder(256);
                    ConfigHelper.GetPrivateProfileString("common", "vid1", "0", sb, 255, "./camera.ini"); // è¯»å½©è‰²ç›¸æœºçš„VID
                    try
                    {
                        val = sb.ToString();
                        nVid1 = Convert.ToInt32(val, 16);
                    }
                    catch
                    {
                        nVid1 = 0;
                    }
                    ConfigHelper.GetPrivateProfileString("common", "pid1", "0", sb, 255, "./camera.ini"); // è¯»å½©è‰²ç›¸æœºçš„PID
                    try
                    {
                        val = sb.ToString();
                        nPid1 = Convert.ToInt32(val, 16);
                    }
                    catch
                    {
                        nPid1 = 0;
                    }
                    ConfigHelper.GetPrivateProfileString("common", "vid2", "0", sb, 255, "./camera.ini"); // è¯»çº¢å¤–相机的VID
                    try
                    {
                        val = sb.ToString();
                        nVid2 = Convert.ToInt32(val, 16);
                    }
                    catch
                    {
                        nVid2 = 0;
                    }
                    ConfigHelper.GetPrivateProfileString("common", "pid2", "0", sb, 255, "./camera.ini"); // è¯»çº¢å¤–相机的PID
                    try
                    {
                        val = sb.ToString();
                        nPid2 = Convert.ToInt32(val, 16);
                    }
                    catch
                    {
                        nPid2 = 0;
                    }
                    if (nVid1 <= 0 || nPid1 <= 0) nVid1 = 0;
                    if (nVid2 <= 0 || nPid2 <= 0) nVid2 = 0;
                    if (nCameraNum == 0)
                    {
                        label1.Text = "没有检测到相机,请检查相机连接是否正常!";
                        label1.ForeColor = Color.Red;
                        return;
                    }
                    // SDK初始化
                    int ret = TH_Faces.IdFaceSdkInit();
                    if (ret < 0)
                    {
                        label1.Text = "算法初始化失败, è¯·æ’入加密狗 !";
                        label1.ForeColor = Color.Red;
                        IntPtr pRunCode = Marshal.AllocHGlobal(35 + 1);
                        TH_Faces.IdFaceSdkGetRunCode(pRunCode);
                        MessageBox.Show("SDK初始化失败 !\n\n设备运行码: " + Marshal.PtrToStringAnsi(pRunCode));
                        Marshal.FreeHGlobal(pRunCode);
                        return;
                    }
                    // æŽˆæƒæ˜¯å¦æ”¯æŒæ´»ä½“检测
                    ret = TH_Faces.IdFaceSdkGetLiveFaceStatus();
                    if (ret != 1)
                    {
                        TH_Faces.IdFaceSdkUninit();
                        label1.Text = "活体检测授权未开通,请联系供应商 !";
                        label1.ForeColor = Color.Red;
                        return;
                    }
                    bSdkInit = true;
                    // åˆ†é…å½©è‰²å¸§ç¼“冲区、红外帧缓冲区及临时帧数据缓冲区
                    pFrameColor = Marshal.AllocHGlobal(VIDEO_WIDTH * VIDEO_HEIGHT * 3);
                    pFrameGray = Marshal.AllocHGlobal(VIDEO_WIDTH * VIDEO_HEIGHT * 3);
                    pFrameTemp = Marshal.AllocHGlobal(VIDEO_WIDTH * VIDEO_HEIGHT * 3);
                    pFrameTemp2 = Marshal.AllocHGlobal(VIDEO_WIDTH * VIDEO_HEIGHT * 3);
                    // åˆ†é…å½©è‰²åŽŸå§‹äººè„¸åæ ‡ç©ºé—´ã€å½©è‰²æ”¾å¤§äººè„¸åæ ‡ç©ºé—´ã€çº¢å¤–åŽŸå§‹äººè„¸åæ ‡ç©ºé—´ã€çº¢å¤–æ”¾å¤§äººè„¸åæ ‡ç©ºé—´
                    FaceColor = new TH_Faces.FACE_DETECT_RESULT();
                    FaceColorExt = new TH_Faces.FACE_DETECT_RESULT();
                    FaceGray = new TH_Faces.FACE_DETECT_RESULT();
                    FaceGrayExt = new TH_Faces.FACE_DETECT_RESULT();
                    Start();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("初始化相机失败: " + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    loading = false;
                }
            });
        }
        private void Start()
        {
            if (nRotate == 90 || nRotate == 270)
            {
                nWidth = VIDEO_HEIGHT;
                nHeight = VIDEO_WIDTH;
            }
            else
            {
                nWidth = VIDEO_WIDTH;
                nHeight = VIDEO_HEIGHT;
            }
            // æ‰“开彩色相机
            if (nVid1 > 0) hCamColor = CHS_Capture.SmCameraOpenEx(nVid1, nPid1, VIDEO_WIDTH, VIDEO_HEIGHT);
            hCamColor = CHS_Capture.SmCameraOpen(0, VIDEO_WIDTH, VIDEO_HEIGHT);
            // åˆ›å»ºå½©è‰²å¸§æ˜¾ç¤ºå¯¹è±¡
            hPreviewColor = CHS_Capture.SmCameraPreviewCreate(nWidth, nHeight, pictureBox1.Handle);
            bCamColorReady = (hCamColor != IntPtr.Zero);
            bCamGrayReady = (hCamGray != IntPtr.Zero);
            bFramesReady = false;
            // å¯åŠ¨å®šæ—¶å™¨
            //timer1.Interval = 40;
            //timer2.Interval = 200;
            //timer1.Enabled = true;
            //timer2.Enabled = true;
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            int ret;
            // å¦‚果彩色相机已打开,读取彩色视频帧
            if (bCamColorReady)
            {
                if (nRotate == 90 || nRotate == 270)
                {
                    // ç›¸æœºæ—‹è½¬90度或270度,先读到临时缓冲区
                    ret = CHS_Capture.SmCameraGetFrame(hCamColor, pFrameTemp, 1, 0);
                    // å°†ä¸´æ—¶ç¼“冲区中的图象数据旋转后放入 pFrameColor ç¼“冲区
                    if (ret == 0) TH_Faces.RotateRgb24Data(pFrameTemp, VIDEO_WIDTH, VIDEO_HEIGHT, nRotate, 0, pFrameColor);
                }
                // ç›´æŽ¥è¯»å–视频帧数据到 pFrameColor ç¼“冲区
                else ret = CHS_Capture.SmCameraGetFrame(hCamColor, pFrameColor, 1, 0);
                if (ret == 2) // ç›¸æœºå·²æ–­å¼€è¿žæŽ¥ï¼Œåˆ™å…³é—­ç›¸æœº
                {
                    CHS_Capture.SmCameraClose(hCamColor);
                    hCamColor = IntPtr.Zero;
                    bCamColorReady = false;
                    label1.Text = "彩色相机已断开";
                    label1.ForeColor = Color.Red;
                }
            }
            // å¦‚果红外相机已打开,读取红外视频帧
            if (bCamGrayReady)
            {
                if (nRotate == 90 || nRotate == 270)
                {
                    // ç›¸æœºæ—‹è½¬90度或270度,先读到临时缓冲区
                    ret = CHS_Capture.SmCameraGetFrame(hCamGray, pFrameTemp, 1, 0);
                    // å°†ä¸´æ—¶ç¼“冲区中的图象数据旋转后放入 pFrameGray ç¼“冲区
                    if (ret == 0) TH_Faces.RotateRgb24Data(pFrameTemp, VIDEO_WIDTH, VIDEO_HEIGHT, nRotate, 0, pFrameGray);
                }
                // ç›´æŽ¥è¯»å–视频帧数据到 pFrameGray ç¼“冲区
                else ret = CHS_Capture.SmCameraGetFrame(hCamGray, pFrameGray, 1, 0);
                if (ret == 2) // ç›¸æœºå·²æ–­å¼€è¿žæŽ¥ï¼Œåˆ™å…³é—­ç›¸æœº
                {
                    CHS_Capture.SmCameraClose(hCamGray);
                    hCamGray = IntPtr.Zero;
                    bCamGrayReady = false;
                    label1.Text = "红外相机已断开";
                    label1.ForeColor = Color.Red;
                }
            }
            bFramesReady = (bCamColorReady || bCamGrayReady);
            // æ˜¾ç¤ºå½©è‰²å¸§å›¾è±¡
            if (bCamColorReady) CHS_Capture.SmCameraPreviewFace(hPreviewColor, pFrameColor, FaceColorExt.rcFace.left, FaceColorExt.rcFace.top, FaceColorExt.rcFace.right, FaceColorExt.rcFace.bottom, 3, Color.Green.ToArgb());
            // æ˜¾ç¤ºçº¢å¤–帧图象
            if (bCamGrayReady) CHS_Capture.SmCameraPreviewFace(hPreviewGray, pFrameGray, FaceGrayExt.rcFace.left, FaceGrayExt.rcFace.top, FaceGrayExt.rcFace.right, FaceGrayExt.rcFace.bottom, 3, Color.Green.ToArgb());
        }
        private void timer2_Tick(object sender, EventArgs e)
        {
            if (bFramesReady)
            {
                // å¯¹å½©è‰²å’Œçº¢å¤–帧图象分别检测人脸
                int nNum1 = 0, nNum2 = 0;
                if (bCamColorReady) nNum1 = TH_Faces.IdFaceSdkDetectFace(pFrameColor, nWidth, nHeight, ref FaceColor);
                if (bCamGrayReady) nNum2 = TH_Faces.IdFaceSdkDetectFace(pFrameGray, nWidth, nHeight, ref FaceGray);
                if (nNum1 < 1)
                { // å½©è‰²é•œå¤´æœªæ£€æµ‹åˆ°äººè„¸ï¼Œæ¸…除彩色人脸坐标
                    FaceColor.rcFace.left = FaceColor.rcFace.right = 0;
                    FaceColor.rcFace.top = FaceColor.rcFace.bottom = 0;
                    FaceColorExt = FaceColor;
                }
                else
                { // å½©è‰²é•œå¤´æ£€æµ‹åˆ°äººè„¸ï¼Œæ›´æ–°å½©è‰²äººè„¸æ”¾å¤§åæ ‡
                    int w = FaceColor.rcFace.right - FaceColor.rcFace.left, h = FaceColor.rcFace.bottom - FaceColor.rcFace.top;
                    int left = FaceColor.rcFace.left - (int)(w * fExtendLeft), right = FaceColor.rcFace.right + (int)(w * fExtendRight), top = FaceColor.rcFace.top - (int)(h * fExtendTop), bottom = FaceColor.rcFace.bottom + (int)(h * fExtendBottom);
                    if (left < 0) left = 0;
                    if (right >= nWidth) right = nWidth - 1;
                    if (top < 0) top = 0;
                    if (bottom >= nHeight) bottom = nHeight - 1;
                    FaceColorExt.rcFace.left = left;
                    FaceColorExt.rcFace.top = top;
                    FaceColorExt.rcFace.right = right;
                    FaceColorExt.rcFace.bottom = bottom;
                }
                if (nNum2 < 1)
                { // çº¢å¤–镜头未检测到人脸,清除红外人脸坐标
                    FaceGray.rcFace.left = FaceGray.rcFace.right = 0;
                    FaceGray.rcFace.top = FaceGray.rcFace.bottom = nHeight;
                    FaceGrayExt = FaceGray;
                }
                else
                { // çº¢å¤–镜头检测到人脸,更新红外人脸放大坐标
                    int w = FaceGray.rcFace.right - FaceGray.rcFace.left, h = FaceGray.rcFace.bottom - FaceGray.rcFace.top;
                    int left = FaceGray.rcFace.left - (int)(w * fExtendLeft), right = FaceGray.rcFace.right + (int)(w * fExtendRight), top = FaceGray.rcFace.top - (int)(h * fExtendTop), bottom = FaceGray.rcFace.bottom + (int)(h * fExtendBottom);
                    if (left < 0) left = 0;
                    if (right >= nWidth) right = nWidth - 1;
                    if (top < 0) top = 0;
                    if (bottom >= nHeight) bottom = nHeight - 1;
                    FaceGrayExt.rcFace.left = left;
                    FaceGrayExt.rcFace.top = top;
                    FaceGrayExt.rcFace.right = right;
                    FaceGrayExt.rcFace.bottom = bottom;
                }
                if (nNum1 > 0 || nNum2 > 0) // è‡³å°‘有一个相机能检测到人脸时,进行活体判别
                {
                    int nLiveFace = 0;
                    if ((bCamColorReady == true && nNum1 < 1) || (bCamGrayReady == true && nNum2 < 1))
                    { // ä¸¤ä¸ªç›¸æœºéƒ½æ‰“开了,但是只有一个相机能检测到人脸时,自动判为非活体
                        label1.Text = "确认为非活体 !";
                        label1.ForeColor = Color.Red;
                    }
                    else
                    {
                        int nScore = 0;
                        if (nNum1 > 0 && nNum2 > 0) nLiveFace = TH_Faces.IdFaceSdkLiveFaceDetectEx(nWidth, nHeight, pFrameColor, ref FaceColor, (IntPtr)0, ref FaceGray, ref nScore);
                        else if (nNum1 > 0) nLiveFace = TH_Faces.IdFaceSdkLiveFaceDetectEx(nWidth, nHeight, pFrameColor, ref FaceColor, IntPtr.Zero, ref FaceGray, ref nScore);
                        else nLiveFace = TH_Faces.IdFaceSdkLiveFaceDetectEx(nWidth, nHeight, IntPtr.Zero, ref FaceColor, pFrameGray, ref FaceGray, ref nScore);
                        if (nLiveFace == 1)
                        {
                            label1.Text = "确认为活体,分数 " + nScore.ToString();
                            label1.ForeColor = Color.Green;
                            if (nScore > 80)
                            {
                                string strTimeFlag = System.DateTime.Now.ToString("yyyyMMddHHmmss");
                                string strFolder = Environment.CurrentDirectory + "\\Record";
                                if (System.IO.Directory.Exists(strFolder) == false)
                                    System.IO.Directory.CreateDirectory(strFolder);
                                string strFileName = strFolder + "\\" + strTimeFlag + "_" + nLiveFace.ToString() + "_1.jpg";
                                if (nNum1 > 0)
                                {
                                    IntPtr ptrFileName = Marshal.StringToHGlobalAnsi(strFileName);
                                    TH_Faces.CropImage(pFrameColor, nWidth, nHeight, pFrameTemp2, FaceColorExt.rcFace.left, FaceColorExt.rcFace.top, FaceColorExt.rcFace.right - FaceColorExt.rcFace.left, FaceColorExt.rcFace.bottom - FaceColorExt.rcFace.top, 0);
                                    TH_Faces.SaveJpegFile(ptrFileName, pFrameTemp2, FaceColorExt.rcFace.right - FaceColorExt.rcFace.left, FaceColorExt.rcFace.bottom - FaceColorExt.rcFace.top, 24, 90);
                                }
                                timer1.Enabled = false; // åœæ­¢å®šæ—¶å™¨ï¼Œé¿å…è¿žç»­æ£€æµ‹
                                timer2.Enabled = false;
                                //MessageBox.Show("活体检测成功,分数 " + nScore.ToString() + ",人脸图片已保存到 Record ç›®å½•下!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                // é‡Šæ”¾èµ„源
                                Stop();
                                Release();
                                this.Hide(); // éšè—å½“前窗口
                                int port = 9298;
                                string? portStr = ConfigurationManager.AppSettings.Get("port");
                                if (!string.IsNullOrEmpty(portStr) && int.TryParse(portStr, out int tempPort))
                                {
                                    port = tempPort; // ä»Žé…ç½®æ–‡ä»¶è¯»å–端口号
                                }
                                DateTime startTime = DateTime.Now;
                                Task.Run(() =>
                                {
                                    while (true) // ç­‰å¾…10秒钟
                                    {
                                        if (DateTime.Now - startTime > TimeSpan.FromSeconds(60))
                                        {
                                            Environment.Exit(0); // é€€å‡ºåº”用程序
                                        }
                                    }
                                });
                                HttpServer httpServer = new HttpServer(port, strFileName); // å¯åЍHTTP服务,提供人脸图片访问
                                foreach (var item in Directory.GetFiles(strFolder))
                                {
                                    File.Delete(item);
                                }
                                Environment.Exit(0); // é€€å‡ºåº”用程序
                            }
                        }
                        else if (nLiveFace == 0)
                        {
                            label1.Text = "未确认为活体,分数 " + nScore.ToString();
                            label1.ForeColor = Color.Magenta;
                        }
                        else
                        {
                            label1.Text = "活体检测失败,接口返回 " + nLiveFace.ToString();
                            label1.ForeColor = Color.Red;
                        }
                    }
                    //if (bSaveFace) // æ˜¯å¦ä¿å­˜äººè„¸å›¾ç‰‡ï¼Œæ¯å¸§äººè„¸å›¾ç‰‡éƒ½ä¿å­˜ä¼šå ç”¨è¾ƒå¤§ç£ç›˜ç©ºé—´
                    //{
                    //    string strTimeFlag = System.DateTime.Now.ToString("yyyyMMddHHmmss");
                    //    string strFolder = Environment.CurrentDirectory + "\\Record";
                    //    if (System.IO.Directory.Exists(strFolder) == false)
                    //        System.IO.Directory.CreateDirectory(strFolder);
                    //    // ä¿å­˜å½©è‰²äººè„¸å›¾ç‰‡
                    //    if (nNum1 > 0)
                    //    {
                    //        string strFileName = strFolder + "\\" + strTimeFlag + "_" + nLiveFace.ToString() + "_1.jpg";
                    //        IntPtr ptrFileName = Marshal.StringToHGlobalAnsi(strFileName);
                    //        TH_Faces.CropImage(pFrameColor, nWidth, nHeight, pFrameTemp2, FaceColorExt.rcFace.left, FaceColorExt.rcFace.top, FaceColorExt.rcFace.right - FaceColorExt.rcFace.left, FaceColorExt.rcFace.bottom - FaceColorExt.rcFace.top, 0);
                    //        TH_Faces.SaveJpegFile(ptrFileName, pFrameTemp2, FaceColorExt.rcFace.right - FaceColorExt.rcFace.left, FaceColorExt.rcFace.bottom - FaceColorExt.rcFace.top, 24, 90);
                    //    }
                    //    // ä¿å­˜çº¢å¤–人脸图片
                    //    if (nNum2 > 0)
                    //    {
                    //        string strFileName = strFolder + "\\" + strTimeFlag + "_" + nLiveFace.ToString() + "_2.jpg";
                    //        IntPtr ptrFileName = Marshal.StringToHGlobalAnsi(strFileName);
                    //        TH_Faces.CropImage(pFrameGray, nWidth, nHeight, pFrameTemp2, FaceGrayExt.rcFace.left, FaceGrayExt.rcFace.top, FaceGrayExt.rcFace.right - FaceGrayExt.rcFace.left, FaceGrayExt.rcFace.bottom - FaceGrayExt.rcFace.top, 0);
                    //        TH_Faces.SaveJpegFile(ptrFileName, pFrameTemp2, FaceGrayExt.rcFace.right - FaceGrayExt.rcFace.left, FaceGrayExt.rcFace.bottom - FaceGrayExt.rcFace.top, 24, 90);
                    //    }
                    //}
                }
                else
                { // ä¸¤ä¸ªç›¸æœºå‡æœªæ£€æµ‹åˆ°äººè„¸ï¼Œåˆ™æç¤ºç”¨æˆ·æ­£è§†ç›¸æœº
                    label1.Text = "请正视相机 !";
                    label1.ForeColor = Color.Red;
                }
                bFramesReady = false;
            }
        }
        void Stop()
        {
            bCamColorReady = bCamGrayReady = false;
            bFramesReady = false;
            // å…³é—­å½©è‰²ç›¸æœº
            if (hCamColor != IntPtr.Zero)
            {
                CHS_Capture.SmCameraClose(hCamColor);
                hCamColor = IntPtr.Zero;
            }
            // å…³é—­çº¢å¤–相机
            if (hCamGray != IntPtr.Zero)
            {
                CHS_Capture.SmCameraClose(hCamGray);
                hCamGray = IntPtr.Zero;
            }
            // é”€æ¯å½©è‰²å¸§æ˜¾ç¤ºå¯¹è±¡
            if (hPreviewColor != IntPtr.Zero)
            {
                CHS_Capture.SmCameraPreviewDestroy(hPreviewColor);
                hPreviewColor = IntPtr.Zero;
            }
            // é”€æ¯çº¢å¤–帧显示对象
            if (hPreviewGray != IntPtr.Zero)
            {
                CHS_Capture.SmCameraPreviewDestroy(hPreviewGray);
                hPreviewGray = IntPtr.Zero;
            }
        }
        void Release()
        {
            Marshal.FreeHGlobal(pFrameColor);
            Marshal.FreeHGlobal(pFrameGray);
            Marshal.FreeHGlobal(pFrameTemp);
            Marshal.FreeHGlobal(pFrameTemp2);
            if (bSdkInit)
            {
                bSdkInit = false;
                // SDK反初始化,释放SDK资源
                TH_Faces.IdFaceSdkUninit();
            }
        }
        private void timer3_Tick(object sender, EventArgs e)
        {
            if (!loading)
            {
                loading = false;
                oc.HideOpaqueLayer(); // éšè—åŠé€æ˜Žè’™æ¿å±‚
                timer3.Enabled = false; // åœæ­¢å®šæ—¶å™¨
                timer1.Interval = 40;
                timer2.Interval = 200;
                timer1.Enabled = true;
                timer2.Enabled = true;
                label1.Visible = true; // éšè—æç¤ºä¿¡æ¯
            }
            else
            {
                label1.Visible = false; // éšè—æç¤ºä¿¡æ¯
                oc.ShowOpaqueLayer(this, 255, true);
            }
        }
    }
}
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Register/FrmRegister.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="timer2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>139, 17</value>
  </metadata>
  <metadata name="timer3.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>261, 17</value>
  </metadata>
</root>
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Register/MyOpaqueLayer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,138 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaceSdkX64Register
{
    [ToolboxBitmap(typeof(MyOpaqueLayer))]
    public class MyOpaqueLayer : System.Windows.Forms.Control
    {
        private bool _transparentBG = true;//是否使用透明
        private int _alpha = 125;//设置透明度
        private System.ComponentModel.Container components = new System.ComponentModel.Container();
        public MyOpaqueLayer()
            : this(125, true)
        {
        }
        public MyOpaqueLayer(int Alpha, bool IsShowLoadingImage)
        {
            SetStyle(System.Windows.Forms.ControlStyles.Opaque, true);
            base.CreateControl();
            this._alpha = Alpha;
            if (IsShowLoadingImage)
            {
                //Image.FromFile(@"C:\Users\Administrator\Desktop\5-121204193R0-50.gif");
                PictureBox pictureBox_Loading = new PictureBox();
                //pictureBox_Loading.BackColor = Color.Transparent;
                //pictureBox_Loading.BackColor = System.Drawing.Color.White;
                Image image = Image.FromStream(new MemoryStream(Properties.Resources.LoadingImg));//v1.10
                pictureBox_Loading.Image = image;
                pictureBox_Loading.Name = "pictureBox_Loading";
                pictureBox_Loading.Size = new System.Drawing.Size(48, 48);
                pictureBox_Loading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
                Point Location = new Point(this.Location.X + (this.Width - pictureBox_Loading.Width) / 2, this.Location.Y + (this.Height - pictureBox_Loading.Height) / 2);//居中
                pictureBox_Loading.Location = Location;
                pictureBox_Loading.Anchor = AnchorStyles.None;
                this.Controls.Add(pictureBox_Loading);
            }
        }
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (!((components == null)))
                {
                    components.Dispose();
                }
            }
            base.Dispose(disposing);
        }
        /// <summary>
        /// è‡ªå®šä¹‰ç»˜åˆ¶çª—体
        /// </summary>
        /// <param name="e"></param>
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            float vlblControlWidth;
            float vlblControlHeight;
            Pen labelBorderPen;
            SolidBrush labelBackColorBrush;
            if (_transparentBG)
            {
                //v1.10
                Color drawColor = Color.FromArgb(125, 0, 0, 1); //Color.FromArgb(this._alpha, this.BackColor);
                labelBorderPen = new Pen(drawColor, 0);
                labelBackColorBrush = new SolidBrush(drawColor);
            }
            else
            {
                labelBorderPen = new Pen(this.BackColor, 0);
                labelBackColorBrush = new SolidBrush(this.BackColor);
            }
            base.OnPaint(e);
            vlblControlWidth = this.Size.Width;
            vlblControlHeight = this.Size.Height;
            e.Graphics.DrawRectangle(labelBorderPen, 0, 0, vlblControlWidth, vlblControlHeight);
            e.Graphics.FillRectangle(labelBackColorBrush, 0, 0, vlblControlWidth, vlblControlHeight);
        }
        protected override CreateParams CreateParams//v1.10
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x00000020; //0x20;  // å¼€å¯ WS_EX_TRANSPARENT,使控件支持透明
                return cp;
            }
        }
        /*
         * [Category("myOpaqueLayer"), Description("是否使用透明,默认为True")]
         * ä¸€èˆ¬ç”¨äºŽè¯´æ˜Žä½ è‡ªå®šä¹‰æŽ§ä»¶çš„属性(Property)。
         * Category用于说明该属性属于哪个分类,Description自然就是该属性的含义解释。
         */
        [Category("MyOpaqueLayer"), Description("是否使用透明,默认为True")]
        public bool TransparentBG
        {
            get
            {
                return _transparentBG;
            }
            set
            {
                _transparentBG = value;
                this.Invalidate();
            }
        }
        [Category("MyOpaqueLayer"), Description("设置透明度")]
        public int Alpha
        {
            get
            {
                return _alpha;
            }
            set
            {
                _alpha = value;
                this.Invalidate();
            }
        }
    }
}
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Register/OpaqueCommand.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FaceSdkX64Register
{
    public class OpaqueCommand
    {
        private MyOpaqueLayer m_OpaqueLayer = null;//半透明蒙板层
        /// <summary>
        /// æ˜¾ç¤ºé®ç½©å±‚
        /// </summary>
        /// <param name="control">控件</param>
        /// <param name="alpha">透明度</param>
        /// <param name="isShowLoadingImage">是否显示图标</param>
        public void ShowOpaqueLayer(Control control, int alpha, bool isShowLoadingImage = true)
        {
            try
            {
                if (m_OpaqueLayer == null)
                {
                    this.m_OpaqueLayer = new MyOpaqueLayer(alpha, isShowLoadingImage);
                    control.Controls.Add(this.m_OpaqueLayer);
                    this.m_OpaqueLayer.Dock = DockStyle.Fill;
                    this.m_OpaqueLayer.BringToFront();
                }
                this.m_OpaqueLayer.Enabled = true;
                this.m_OpaqueLayer.Visible = true;
            }
            catch(Exception ex) { }
        }
        /// <summary>
        /// éšè—é®ç½©å±‚
        /// </summary>
        public void HideOpaqueLayer()
        {
            try
            {
                if (this.m_OpaqueLayer != null)
                {
                    this.m_OpaqueLayer.Visible = false;
                    this.m_OpaqueLayer.Enabled = false;
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message);
            }
        }
    }
}
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Register/Program.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
namespace FaceSdkX64Register
{
    internal static class Program
    {
        /// <summary>
        ///  The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            // To customize application configuration such as set high DPI settings or default font,
            // see https://aka.ms/applicationconfiguration.
            ApplicationConfiguration.Initialize();
            Application.Run(new FrmRegister());
        }
    }
}
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Register/Properties/LoadingImg.gif
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Register/Properties/Resources.Designer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
//------------------------------------------------------------------------------
// <auto-generated>
//     æ­¤ä»£ç ç”±å·¥å…·ç”Ÿæˆã€‚
//     è¿è¡Œæ—¶ç‰ˆæœ¬:4.0.30319.42000
//
//     å¯¹æ­¤æ–‡ä»¶çš„æ›´æ”¹å¯èƒ½ä¼šå¯¼è‡´ä¸æ­£ç¡®çš„行为,并且如果
//     é‡æ–°ç”Ÿæˆä»£ç ï¼Œè¿™äº›æ›´æ”¹å°†ä¼šä¸¢å¤±ã€‚
// </auto-generated>
//------------------------------------------------------------------------------
namespace FaceSdkX64Register.Properties {
    using System;
    /// <summary>
    ///   ä¸€ä¸ªå¼ºç±»åž‹çš„资源类,用于查找本地化的字符串等。
    /// </summary>
    // æ­¤ç±»æ˜¯ç”± StronglyTypedResourceBuilder
    // ç±»é€šè¿‡ç±»ä¼¼äºŽ ResGen æˆ– Visual Studio çš„工具自动生成的。
    // è‹¥è¦æ·»åŠ æˆ–ç§»é™¤æˆå‘˜ï¼Œè¯·ç¼–è¾‘ .ResX æ–‡ä»¶ï¼Œç„¶åŽé‡æ–°è¿è¡Œ ResGen
    // (以 /str ä½œä¸ºå‘½ä»¤é€‰é¡¹),或重新生成 VS é¡¹ç›®ã€‚
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    public class Resources {
        private static global::System.Resources.ResourceManager resourceMan;
        private static global::System.Globalization.CultureInfo resourceCulture;
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resources() {
        }
        /// <summary>
        ///   è¿”回此类使用的缓存的 ResourceManager å®žä¾‹ã€‚
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        public static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FaceSdkX64Register.Properties.Resources", typeof(Resources).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        /// <summary>
        ///   é‡å†™å½“前线程的 CurrentUICulture å±žæ€§ï¼Œå¯¹
        ///   ä½¿ç”¨æ­¤å¼ºç±»åž‹èµ„源类的所有资源查找执行重写。
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        public static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
        /// <summary>
        ///   æŸ¥æ‰¾ System.Byte[] ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        public static byte[] LoadingImg {
            get {
                object obj = ResourceManager.GetObject("LoadingImg", resourceCulture);
                return ((byte[])(obj));
            }
        }
    }
}
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Register/Properties/Resources.resx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <data name="LoadingImg" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>LoadingImg.gif;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>
</root>
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Service/CHS_Capture.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace FaceSdkX64Service
{
    // ç›¸æœºå–帧及帧图象显示组件
    public class CHS_Capture
    {
        // è¿”回相机个数
        [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraGetCount", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern int SmCameraGetCount();
        // æ‰“开相机(根据相机索引号 nDeviceId)
        [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraOpen", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern IntPtr SmCameraOpen(int nDeviceId, int nWidth, int nHeight);
        // æ‰“开相机(根据相机VID+PIC)
        [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraOpenEx", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern IntPtr SmCameraOpenEx(int nVid, int nPid, int nWidth, int nHeight);
        // ä»Žæ‰“开的相机提取一帧视频数据
        [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraGetFrame", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern int SmCameraGetFrame(IntPtr hCamera, IntPtr pFrameBuf, int bMirror, int bFlip);
        // å…³é—­ç›¸æœº
        [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraClose", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern void SmCameraClose(IntPtr hCamera);
        // åˆ›å»ºè§†é¢‘帧显示对象(nWidth * nHeight ä¸ºè§†é¢‘帧的分辨率,hWnd ä¸ºæ˜¾ç¤ºçª—口句柄)
        [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraPreviewCreate", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern IntPtr SmCameraPreviewCreate(int nWidth, int nHeight, IntPtr hWND);
        // æ˜¾ç¤ºè§†é¢‘帧
        [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraPreview", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern void SmCameraPreview(IntPtr hCameraPreview, IntPtr pFrame);
        // æ˜¾ç¤ºè§†é¢‘帧及人脸框(weight为边框的厚度)
        [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraPreviewFace", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern void SmCameraPreviewFace(IntPtr hCameraPreview, IntPtr pFrame, int left, int top, int right, int bottom, int weight, int color);
        // é‡Šæ”¾è§†é¢‘帧显示对象
        [DllImport("SmCameraPreview.dll", EntryPoint = "SmCameraPreviewDestroy", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern void SmCameraPreviewDestroy(IntPtr hCameraPreivew);
    }
}
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Service/ConfigHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace FaceSdkX64Service
{
    public class ConfigHelper
    {
        [DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileString", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern long GetPrivateProfileString(string section, string key, string defval, StringBuilder value, int size, string filename);
    }
}
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Service/FaceSdkX64Service.csproj
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Service/HttpServer.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using static FaceSdkX64Service.TH_Faces;
namespace FaceSdkX64Service
{
    public class HttpServer
    {
        private string ImgPath = string.Empty;
        HttpListener listener;
        public HttpServer(int port, string imgPath)
        {
            ImgPath = imgPath;
            listener = new HttpListener();
            listener.Prefixes.Add($"http://+:{port}/");
            listener.Start();
            HttpListenerContext httpListenerContext = listener.GetContext();
            GetConnect(httpListenerContext);
            listener.Stop(); //关闭HttpListener
        }
        private void GetConnect(HttpListenerContext context)
        {
            try
            {
                // ç­‰å¾…客户端连接
                if (!context.Request.IsWebSocketRequest)
                {
                    if (context == null) return;
                    var request = context.Request;
                    var response = context.Response;
                    response.StatusCode = 200;
                    response.ContentType = "text/plain; charset=utf-8";
                    response.Headers.Add("Access-Control-Allow-Origin", "*"); // å…è®¸è·¨åŸŸè®¿é—®
                    using (var stream = response.OutputStream)
                    {
                        // æŠŠå¤„理信息返回到客户端
                        if (string.IsNullOrEmpty(ImgPath))
                        {
                            stream.Write(new byte[0], 0, 0);
                        }
                        else
                        {
                            string base64 = ImageToBase64(ImgPath); // å°†å›¾ç‰‡è½¬æ¢ä¸ºBase64字符串
                            byte[] buffer = Encoding.UTF8.GetBytes(base64);
                            stream.Write(buffer, 0, buffer.Length);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
        private string ImageToBase64(string imagePath)
        {
            try
            {
                byte[] imageBytes = System.IO.File.ReadAllBytes(imagePath);
                return Convert.ToBase64String(imageBytes);
            }
            catch (Exception ex)
            {
                return string.Empty;
            }
        }
    }
}
project/ÈËÁ³Ê¶±ð²å¼þ/FaceSdkX64/FaceSdkX64Service/TH_Faces.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,210 @@
using System.Runtime.InteropServices;
namespace FaceSdkX64Service
{
    public class TH_Faces // äººè„¸æ£€æµ‹åŠè¯†åˆ«SDK接口,可参见 IdFaceSdk.h(内含所有接口的功能、参数、返回值的具体描述)
    {
        #region ç»“构体定义
        public struct RECT
        {
            public Int32 left;
            public Int32 top;
            public Int32 right;
            public Int32 bottom;
        };
        public struct POINT
        {
            public Int32 x;
            public Int32 y;
        };
        // äººè„¸æ£€æµ‹è¿”回的人脸坐标参数
        public struct FACE_DETECT_RESULT
        {
            public RECT rcFace;//coordinate of face
            public POINT ptLeftEye;//coordinate of left eye
            public POINT ptRightEye;//coordinate of right eye
            public POINT ptMouth;//coordinate of mouth
            public POINT ptNose;//coordinate of nose
            public Int32 nAngleYaw, nAnglePitch, nAngleRoll;//value of face angle
            public Int32 nQuality;//quality of face(from 0 to 100)
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]
            public Byte[] FaceData;
        };
        // äººè„¸è´¨é‡æ£€æµ‹è¿”回的人脸质量参数
        public struct FACE_QUALITY_LEVEL
        {
            public Int32 nHalf; // äººè„¸å®Œæ•´æ€§: 0-正常,1-人脸不太完整,2-人脸非常不完整
            public Int32 nSmall; // äººè„¸å¤§å°ï¼š0-正常,1-人脸较小,2-人脸太小
            public Int32 nPosture; // å§¿æ€ï¼š0-正常,1-偏头较多,2-偏头太多
            public Int32 nMask; // è„¸éƒ¨é®æŒ¡: 0-正常,1-人脸有遮挡,2-人脸遮挡太多
            public Int32 nFaceMask; // å£ç½©ï¼š0-正常,1-有戴口罩,2-确认戴口罩
            public Int32 nHat; // å¸½å­ï¼š0-正常,1-有戴帽,2-帽子遮挡脸部
            public Int32 nGlasses; // çœ¼é•œ: 0-正常,1-有戴眼镜,2-确认戴眼镜
            public Int32 nGape; // å¼ å˜´: 0-正常,1-张嘴,2-张大嘴
            public Int32 nBlur; // æ¨¡ç³Šåº¦ï¼š0-正常,1-较模糊,2-太模糊
            public Int32 nBright; // è„¸éƒ¨æ›å…‰åº¦ï¼š0-正常,1-太暗,2-过爆
            public Int32 nLight; // å…‰æºæ–¹å‘: 0-正常,1-侧光,2-顶光, 3-逆光
        };
        #endregion
        #region åˆå§‹åŒ–及基本功能
        // è¿”回SDK版本号(随时可调用)
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkVer", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkVer();
        // è¿”回设备运行码
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkGetRunCode", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkGetRunCode([Out] IntPtr pStrRunCode);
        // SDK初始化,成功返回0(后面除辅助接口外的所有功能接口都必须是SDK初始化成功后才有用)
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkInit", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkInit();
        // SDK反初始化(后面除辅助接口外的所有功能接口在调用反初始化后均不可用,除非再次初始化)
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkUninit", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern void IdFaceSdkUninit();
        // è®¾ç½®æ£€æµ‹å¤§å°ï¼ˆé’ˆå¯¹é«˜åˆ†è¾¨çŽ‡ä¸”äººè„¸å æ¯”è¾ƒå°æ—¶è®¾ç½®æ£€æµ‹å¤§å°ï¼Œé€šå¸¸ä¸å¿…è°ƒç”¨ï¼‰
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkSetDetectSize", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern void IdFaceSdkSetDetectSize(Int32 nDetectSize);
        // è¿”回特征码大小
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkFeatureSize", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkFeatureSize();
        // è¿”回当前的授权是否支持活体检测
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkGetLiveFaceStatus", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkGetLiveFaceStatus();
        #endregion
        #region å•人脸检测
        // æ£€æµ‹æœ€å¤§äººè„¸
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkDetectFace", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkDetectFace(IntPtr pImage, Int32 nWidth, Int32 nHeight, ref FACE_DETECT_RESULT Face);
        #endregion
        #region å¤šäººè„¸æ£€æµ‹å¹¶æå–特征
        // æ£€æµ‹å¤šäººè„¸åŒæ—¶æå–各人脸的特征(nMaxFace è¡¨ç¤ºæœ€å¤šè¦æ£€æµ‹çš„人脸个数,Faces å¿…须按最大人脸个数分配人脸坐标空间, pFeatures å¿…须按最大人脸个数分配特征码空间,pFeatures å‚æ•°ä¼  0 æ—¶åˆ™åªæ£€æµ‹äººè„¸ä¸æç‰¹å¾ï¼‰
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkFaceFeature", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkFaceFeature(IntPtr pImage, Int32 nWidth, Int32 nHeight, Int32 nMaxFace, [Out] FACE_DETECT_RESULT[] Faces, [Out] IntPtr pFeatures);
        #endregion
        #region äººè„¸è´¨é‡æ£€æµ‹
        // æ£€æµ‹äººè„¸è´¨é‡ï¼ˆéœ€è¾“入人脸检测返回的人脸坐标)
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkFaceQualityLevel", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkFaceQualityLevel(IntPtr pImage, Int32 nWidth, Int32 nHeight, ref FACE_DETECT_RESULT Face, ref FACE_QUALITY_LEVEL FaceQualityLevel);
        #endregion
        #region SDK特征提取
        // æå–人脸特征(需输入人脸检测返回的人脸坐标,pFeature需分配不小于一个人脸特征的空间)
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkFeatureGet", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkFeatureGet(IntPtr pImage, Int32 nWidth, Int32 nHeight, ref FACE_DETECT_RESULT Face, [Out] IntPtr pFeature);
        #endregion
        #region ä¸€å¯¹ä¸€æ¯”对(1:1,多用于人证核验)
        // ä¸¤ä¸ªäººè„¸ç‰¹å¾æ¯”对出相似度
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkFeatureCompare", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Byte IdFaceSdkFeatureCompare(IntPtr pFeature1, IntPtr pFeature2);
        #endregion
        #region ä¸€å¯¹å¤šæ¯”对(1:N,多用于服务器识别)
        // åˆ›å»ºä¸€å¯¹å¤šäººè„¸æ¯”对列表
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkListCreate", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern IntPtr IdFaceSdkListCreate(Int32 nMaxFeatureNum);
        // å‘人脸比对列表中增加/插入模板的人脸特征
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkListInsert", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkListInsert(IntPtr hList, [In, Out] ref Int32 nPos, IntPtr pFeatures, Int32 nFeatureNum);
        // ä»Žäººè„¸æ¯”对列表中删除部分人脸特征
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkListRemove", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkListRemove(IntPtr hList, Int32 nPos, Int32 nFeatureNum);
        // æ¸…空人脸比对列表中的所有人脸特征
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkListClearAll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern void IdFaceSdkListClearAll(IntPtr hList);
        // ä¸€å¯¹å¤šäººè„¸æ¯”对,返回参与比对的特征数,pnScores éœ€åˆ†é…ä¸å°äºŽæ¨¡æ¿ç‰¹å¾æ•°çš„空间,调用后将输出与每个模板特征比对的结果(特征相似度)
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkListCompare", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkListCompare(IntPtr hList, IntPtr pFeature, Int32 nPosBegin, Int32 nFeatureNum, [Out] IntPtr pnScores);
        // é”€æ¯ä¸€å¯¹å¤šç‰¹å¾æ¯”对列表
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkListDestroy", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern void IdFaceSdkListDestroy(IntPtr hList);
        #endregion
        #region æ´»ä½“检测
        // æ´»ä½“检测(返回1表示活体),需传入人脸检测返回的人脸坐标,pImageColor ä¸Ž pImageBW å‡æœ‰æ•ˆåˆ™è¿›è¡ŒåŒç›®æ´»ä½“检测,如 pImageBW ä¸º 0 åˆ™è¿›è¡Œå½©è‰²å•目活体检测,pImageColor ä¸º 0 åˆ™è¿›è¡Œçº¢å¤–双目活体检测
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkLiveFaceDetect", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkLiveFaceDetect(Int32 nWidth, Int32 nHeight, IntPtr pImageColor, ref FACE_DETECT_RESULT FaceColor, IntPtr pImageBW, ref FACE_DETECT_RESULT FaceBW);
        // æ´»ä½“检测并输出活检分数(可根据活检分数是否达到阈值判别是否为活体),需传入人脸检测返回的人脸坐标,pImageColor ä¸Ž pImageBW å‡æœ‰æ•ˆåˆ™è¿›è¡ŒåŒç›®æ´»ä½“检测,如 pImageBW ä¸º 0 åˆ™è¿›è¡Œå½©è‰²å•目活体检测,pImageColor ä¸º 0 åˆ™è¿›è¡Œçº¢å¤–双目活体检测
        [DllImport("IdFaceSdk.dll", EntryPoint = "IdFaceSdkLiveFaceDetectEx", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 IdFaceSdkLiveFaceDetectEx(Int32 nWidth, Int32 nHeight, IntPtr pImageColor, ref FACE_DETECT_RESULT FaceColor, IntPtr pImageBW, ref FACE_DETECT_RESULT FaceBW, ref Int32 nScore);
        #endregion
        #region è¾…助接口
        // è¯»å›¾è±¡æ–‡ä»¶åˆ°RGB24图象数据缓冲区,支持BMP、JPG、PNG图象文件,pRgbBuf å¿…须分配足够的缓冲区(不小于 nWidth * nHeight * 3),如不知道图象分辨率可将此参数传 0 åˆ™æœ¬æ¬¡è°ƒç”¨åªè¿”回图象分辨率,然后分配足够的缓冲区再次调用读出图象数据
        [DllImport("IdFaceSdk.dll", EntryPoint = "ReadImageFile", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 ReadImageFile(IntPtr filename, [Out] IntPtr pRgbBuf, Int32 nBufSize, ref Int32 nWidth, ref Int32 nHeight, Int32 nDepth);
        // è¯»å›¾è±¡æ–‡ä»¶æ•°æ®åˆ°RGB图象数据缓冲区,支持BMP、JPG、PNG图象文件,pRgbBuf å¿…须分配足够的缓冲区(不小于 nWidth * nHeight * 3),如不知道图象分辨率可将此参数传 0 åˆ™æœ¬æ¬¡è°ƒç”¨åªè¿”回图象分辨率,然后分配足够的缓冲区再次调用读出图象数据
        [DllImport("IdFaceSdk.dll", EntryPoint = "ReadImageFileData", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 ReadImageFileData(IntPtr pFileData, Int32 nFileDataSize, [Out] IntPtr pRgbBuf, Int32 nBufSize, ref Int32 nWidth, ref Int32 nHeight, Int32 nDepth);
        // æ—‹è½¬RGB24图象数据,nDegree为旋转角度(支持0、90、180、270),nMirror为0表示不镜象,为1表示左右镜象
        [DllImport("IdFaceSdk.dll", EntryPoint = "RotateRgb24Data", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 RotateRgb24Data(IntPtr pSrc, Int32 nWidth, Int32 nHeight, Int32 nDegree, Int32 nMirror, [Out] IntPtr pDst);
        // ä»ŽRGB24图象数据裁剪出小图
        // è¾“入参数:
        //           pSrc ---- åŽŸå›¾æ•°æ®ï¼ˆRGB24格式)
        //           nSrcWidth ---- åŽŸå›¾å®½åº¦
        //           nSrcHeight ---- åŽŸå›¾é«˜åº¦
        //           nLeft ---- è£å‰ªåŒºåŸŸå·¦ä¸Šè§’X坐标
        //           nTop ---- è£å‰ªåŒºåŸŸå·¦ä¸Šè§’Y坐标
        //           nWidth ---- è£å‰ªåŒºåŸŸå®½åº¦
        //           nHeight ---- è£å‰ªåŒºåŸŸé«˜åº¦
        //           nRate ---- è£å‰ªå›¾è±¡ç¼©å°å€æ•°ï¼ˆ0-不缩小,1-宽高缩小至原来的1/2,2-宽高缩小至原来的1/3,...)
        // è¾“出参数:
        //           pDst ---- å°å›¾æ•°æ®(RGB24格式,调用前需分析足够的缓冲区)
        // è¿”回值:
        //        0 ---- æˆåŠŸ
        //       -1 ---- å‚数错误
        // å¤‡æ³¨ï¼šè£å‰ªåŽçš„图象分辨率为:宽度 = nWidth / (nRate + 1), é«˜åº¦ = nHeight / (nRate + 1)
        [DllImport("IdFaceSdk.dll", EntryPoint = "CropImage", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 CropImage(IntPtr pSrc, Int32 nSrcWidth, Int32 nSrcHeight, [Out] IntPtr pDst, int nLeft, int nTop, int nWidth, int nHeight, int nRate);
        // å°†RGB24图象数据保存为JPEG文件
        [DllImport("IdFaceSdk.dll", EntryPoint = "SaveJpegFile", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 SaveJpegFile(IntPtr filename, IntPtr pRgbData, Int32 nWidth, Int32 nHeight, Int32 nDepth, Int32 nQuality);
        // å°†RGB24图象数据保存为JPEG文件数据
        [DllImport("IdFaceSdk.dll", EntryPoint = "SaveJpegFileData", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
        public static extern Int32 SaveJpegFileData(IntPtr pRgbData, Int32 nWidth, Int32 nHeight, Int32 nDepth, Int32 nQuality, [Out] IntPtr pFileDataBuf, Int32 nBufSize, ref Int32 nFileDataSize);
        #endregion
    }
}