Version OScar
This commit is contained in:
BIN
InstaladorUtilerias/Debug/InstaladorUtilerias.msi
Normal file
BIN
InstaladorUtilerias/Debug/InstaladorUtilerias.msi
Normal file
Binary file not shown.
BIN
InstaladorUtilerias/Debug/setup.exe
Normal file
BIN
InstaladorUtilerias/Debug/setup.exe
Normal file
Binary file not shown.
6850
InstaladorUtilerias/InstaladorUtilerias.vdproj
Normal file
6850
InstaladorUtilerias/InstaladorUtilerias.vdproj
Normal file
File diff suppressed because it is too large
Load Diff
BIN
InstaladorUtilerias/Release/ADSUtilerias.msi
Normal file
BIN
InstaladorUtilerias/Release/ADSUtilerias.msi
Normal file
Binary file not shown.
BIN
InstaladorUtilerias/Release/Release.zip
Normal file
BIN
InstaladorUtilerias/Release/Release.zip
Normal file
Binary file not shown.
BIN
InstaladorUtilerias/Release/setup.exe
Normal file
BIN
InstaladorUtilerias/Release/setup.exe
Normal file
Binary file not shown.
BIN
InstaladorUtilerias/UtileriasExtrasChecador.rar
Normal file
BIN
InstaladorUtilerias/UtileriasExtrasChecador.rar
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,9 @@
|
||||
cd /d %~dp0
|
||||
if /i "%PROCESSOR_IDENTIFIER:~0,3%"=="X86" (
|
||||
echo system is x86, but new sdk is x64, so no copy or register
|
||||
) else (
|
||||
echo system is x64, new sdk is x64, copy and register.
|
||||
copy .\*.dll %windir%\System32\
|
||||
regsvr32 %windir%\System32\zkemkeeper.dll
|
||||
)
|
||||
pause
|
||||
@@ -0,0 +1,52 @@
|
||||
cd /d %~dp0
|
||||
if /i "%PROCESSOR_IDENTIFIER:~0,3%"=="X86" (
|
||||
echo system is x86, new sdk is x64
|
||||
del %windir%\System32\commpro.dll
|
||||
del %windir%\System32\comms.dll
|
||||
del %windir%\System32\rscagent.dll
|
||||
del %windir%\System32\rscomm.dll
|
||||
del %windir%\System32\tcpcomm.dll
|
||||
del %windir%\System32\usbcomm.dll
|
||||
del %windir%\System32\usbstd.dll
|
||||
del %windir%\System32\zkemkeeper.dll
|
||||
del %windir%\System32\zkemsdk.dll
|
||||
del %windir%\System32\plcommpro.dll
|
||||
del %windir%\System32\plcomms.dll
|
||||
del %windir%\System32\plrscagent.dll
|
||||
del %windir%\System32\plrscomm.dll
|
||||
del %windir%\System32\pltcpcomm.dll
|
||||
regsvr32 %windir%\System32\zkemkeeper.dll -u
|
||||
) else (
|
||||
echo system is x64, new sdk is x64, delete all
|
||||
del %windir%\System32\commpro.dll
|
||||
del %windir%\System32\comms.dll
|
||||
del %windir%\System32\rscagent.dll
|
||||
del %windir%\System32\rscomm.dll
|
||||
del %windir%\System32\tcpcomm.dll
|
||||
del %windir%\System32\usbcomm.dll
|
||||
del %windir%\system32\usbstd.dll
|
||||
del %windir%\System32\zkemkeeper.dll
|
||||
del %windir%\System32\zkemsdk.dll
|
||||
del %windir%\System32\plcommpro.dll
|
||||
del %windir%\System32\plcomms.dll
|
||||
del %windir%\System32\plrscagent.dll
|
||||
del %windir%\System32\plrscomm.dll
|
||||
del %windir%\System32\pltcpcomm.dll
|
||||
regsvr32 %windir%\System32\zkemkeeper.dll -u
|
||||
del %windir%\SysWOW64\commpro.dll
|
||||
del %windir%\SysWOW64\comms.dll
|
||||
del %windir%\SysWOW64\rscagent.dll
|
||||
del %windir%\SysWOW64\rscomm.dll
|
||||
del %windir%\SysWOW64\tcpcomm.dll
|
||||
del %windir%\SysWOW64\usbcomm.dll
|
||||
del %windir%\SysWOW64\usbstd.dll
|
||||
del %windir%\SysWOW64\zkemkeeper.dll
|
||||
del %windir%\SysWOW64\zkemsdk.dll
|
||||
del %windir%\SysWOW64\plcommpro.dll
|
||||
del %windir%\SysWOW64\plcomms.dll
|
||||
del %windir%\SysWOW64\plrscagent.dll
|
||||
del %windir%\SysWOW64\plrscomm.dll
|
||||
del %windir%\SysWOW64\pltcpcomm.dll
|
||||
regsvr32 %windir%\SysWOW64\zkemkeeper.dll -u
|
||||
)
|
||||
pause
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,295 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.IO;
|
||||
|
||||
namespace Sample
|
||||
{
|
||||
public class BitmapFormat
|
||||
{
|
||||
public struct BITMAPFILEHEADER
|
||||
{
|
||||
public ushort bfType;
|
||||
public int bfSize;
|
||||
public ushort bfReserved1;
|
||||
public ushort bfReserved2;
|
||||
public int bfOffBits;
|
||||
}
|
||||
|
||||
public struct MASK
|
||||
{
|
||||
public byte redmask;
|
||||
public byte greenmask;
|
||||
public byte bluemask;
|
||||
public byte rgbReserved;
|
||||
}
|
||||
|
||||
public struct BITMAPINFOHEADER
|
||||
{
|
||||
public int biSize;
|
||||
public int biWidth;
|
||||
public int biHeight;
|
||||
public ushort biPlanes;
|
||||
public ushort biBitCount;
|
||||
public int biCompression;
|
||||
public int biSizeImage;
|
||||
public int biXPelsPerMeter;
|
||||
public int biYPelsPerMeter;
|
||||
public int biClrUsed;
|
||||
public int biClrImportant;
|
||||
}
|
||||
|
||||
/*******************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>RotatePic
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>תͼƬ<CDBC><C6AC>Ŀ<EFBFBD><C4BF><EFBFBD>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ͼƬ<CDBC>밴<EFBFBD><EBB0B4>ָ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>ͬ
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>BmpBuf---<2D><>תǰ<D7AA><C7B0>ָ<EFBFBD><D6B8><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>ResBuf---<2D><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD>
|
||||
*********************************************/
|
||||
public static void RotatePic(byte[] BmpBuf, int width, int height, ref byte[] ResBuf)
|
||||
{
|
||||
int RowLoop = 0;
|
||||
int ColLoop = 0;
|
||||
int BmpBuflen = width * height;
|
||||
|
||||
try
|
||||
{
|
||||
for (RowLoop = 0; RowLoop < BmpBuflen; )
|
||||
{
|
||||
for (ColLoop = 0; ColLoop < width; ColLoop++)
|
||||
{
|
||||
ResBuf[RowLoop + ColLoop] = BmpBuf[BmpBuflen - RowLoop - width + ColLoop];
|
||||
}
|
||||
|
||||
RowLoop = RowLoop + width;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//ZKCE.SysException.ZKCELogger logger = new ZKCE.SysException.ZKCELogger(ex);
|
||||
//logger.Append();
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>StructToBytes
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>StructObj---<2D><>ת<EFBFBD><D7AA><EFBFBD>Ľṹ<C4BD><E1B9B9>
|
||||
* Size---<2D><>ת<EFBFBD><D7AA><EFBFBD>Ľṹ<C4BD><E1B9B9><EFBFBD>Ĵ<EFBFBD>С
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3>ṹ<EFBFBD><E1B9B9>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*********************************************/
|
||||
public static byte[] StructToBytes(object StructObj, int Size)
|
||||
{
|
||||
int StructSize = Marshal.SizeOf(StructObj);
|
||||
byte[] GetBytes = new byte[StructSize];
|
||||
|
||||
try
|
||||
{
|
||||
IntPtr StructPtr = Marshal.AllocHGlobal(StructSize);
|
||||
Marshal.StructureToPtr(StructObj, StructPtr, false);
|
||||
Marshal.Copy(StructPtr, GetBytes, 0, StructSize);
|
||||
Marshal.FreeHGlobal(StructPtr);
|
||||
|
||||
if (Size == 14)
|
||||
{
|
||||
byte[] NewBytes = new byte[Size];
|
||||
int Count = 0;
|
||||
int Loop = 0;
|
||||
|
||||
for (Loop = 0; Loop < StructSize; Loop++)
|
||||
{
|
||||
if (Loop != 2 && Loop != 3)
|
||||
{
|
||||
NewBytes[Count] = GetBytes[Loop];
|
||||
Count++;
|
||||
}
|
||||
}
|
||||
|
||||
return NewBytes;
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetBytes;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//ZKCE.SysException.ZKCELogger logger = new ZKCE.SysException.ZKCELogger(ex);
|
||||
//logger.Append();
|
||||
|
||||
return GetBytes;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>GetBitmap
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>ΪͼƬ
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>buffer---ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>
|
||||
* nWidth---ͼƬ<CDBC>Ŀ<EFBFBD><C4BF><EFBFBD>
|
||||
* nHeight---ͼƬ<CDBC>ĸ߶<C4B8>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD>
|
||||
*********************************************/
|
||||
public static void GetBitmap(byte[] buffer, int nWidth, int nHeight, ref MemoryStream ms)
|
||||
{
|
||||
int ColorIndex = 0;
|
||||
ushort m_nBitCount = 8;
|
||||
int m_nColorTableEntries = 256;
|
||||
byte[] ResBuf = new byte[nWidth * nHeight*2];
|
||||
|
||||
try
|
||||
{
|
||||
BITMAPFILEHEADER BmpHeader = new BITMAPFILEHEADER();
|
||||
BITMAPINFOHEADER BmpInfoHeader = new BITMAPINFOHEADER();
|
||||
MASK[] ColorMask = new MASK[m_nColorTableEntries];
|
||||
|
||||
int w = (((nWidth + 3) / 4) * 4);
|
||||
|
||||
//ͼƬͷ<C6AC><CDB7>Ϣ
|
||||
BmpInfoHeader.biSize = Marshal.SizeOf(BmpInfoHeader);
|
||||
BmpInfoHeader.biWidth = nWidth;
|
||||
BmpInfoHeader.biHeight = nHeight;
|
||||
BmpInfoHeader.biPlanes = 1;
|
||||
BmpInfoHeader.biBitCount = m_nBitCount;
|
||||
BmpInfoHeader.biCompression = 0;
|
||||
BmpInfoHeader.biSizeImage = 0;
|
||||
BmpInfoHeader.biXPelsPerMeter = 0;
|
||||
BmpInfoHeader.biYPelsPerMeter = 0;
|
||||
BmpInfoHeader.biClrUsed = m_nColorTableEntries;
|
||||
BmpInfoHeader.biClrImportant = m_nColorTableEntries;
|
||||
|
||||
//<2F>ļ<EFBFBD>ͷ<EFBFBD><CDB7>Ϣ
|
||||
BmpHeader.bfType = 0x4D42;
|
||||
BmpHeader.bfOffBits = 14 + Marshal.SizeOf(BmpInfoHeader) + BmpInfoHeader.biClrUsed * 4;
|
||||
BmpHeader.bfSize = BmpHeader.bfOffBits + ((((w * BmpInfoHeader.biBitCount + 31) / 32) * 4) * BmpInfoHeader.biHeight);
|
||||
BmpHeader.bfReserved1 = 0;
|
||||
BmpHeader.bfReserved2 = 0;
|
||||
|
||||
ms.Write(StructToBytes(BmpHeader, 14), 0, 14);
|
||||
ms.Write(StructToBytes(BmpInfoHeader, Marshal.SizeOf(BmpInfoHeader)), 0, Marshal.SizeOf(BmpInfoHeader));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><D4B0><EFBFBD>Ϣ
|
||||
for (ColorIndex = 0; ColorIndex < m_nColorTableEntries; ColorIndex++)
|
||||
{
|
||||
ColorMask[ColorIndex].redmask = (byte)ColorIndex;
|
||||
ColorMask[ColorIndex].greenmask = (byte)ColorIndex;
|
||||
ColorMask[ColorIndex].bluemask = (byte)ColorIndex;
|
||||
ColorMask[ColorIndex].rgbReserved = 0;
|
||||
|
||||
ms.Write(StructToBytes(ColorMask[ColorIndex], Marshal.SizeOf(ColorMask[ColorIndex])), 0, Marshal.SizeOf(ColorMask[ColorIndex]));
|
||||
}
|
||||
|
||||
//ͼƬ<CDBC><C6AC>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
RotatePic(buffer, nWidth, nHeight, ref ResBuf);
|
||||
|
||||
byte[] filter = null;
|
||||
if (w - nWidth > 0)
|
||||
{
|
||||
filter = new byte[w - nWidth];
|
||||
}
|
||||
for (int i = 0; i < nHeight; i++)
|
||||
{
|
||||
ms.Write(ResBuf, i * nWidth, nWidth);
|
||||
if (w - nWidth > 0)
|
||||
{
|
||||
ms.Write(ResBuf, 0, w - nWidth);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// ZKCE.SysException.ZKCELogger logger = new ZKCE.SysException.ZKCELogger(ex);
|
||||
// logger.Append();
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>WriteBitmap
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>ΪͼƬ
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>buffer---ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>
|
||||
* nWidth---ͼƬ<CDBC>Ŀ<EFBFBD><C4BF><EFBFBD>
|
||||
* nHeight---ͼƬ<CDBC>ĸ߶<C4B8>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD>
|
||||
*********************************************/
|
||||
public static void WriteBitmap(byte[] buffer, int nWidth, int nHeight)
|
||||
{
|
||||
int ColorIndex = 0;
|
||||
ushort m_nBitCount = 8;
|
||||
int m_nColorTableEntries = 256;
|
||||
byte[] ResBuf = new byte[nWidth * nHeight];
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
BITMAPFILEHEADER BmpHeader = new BITMAPFILEHEADER();
|
||||
BITMAPINFOHEADER BmpInfoHeader = new BITMAPINFOHEADER();
|
||||
MASK[] ColorMask = new MASK[m_nColorTableEntries];
|
||||
int w = (((nWidth + 3) / 4) * 4);
|
||||
//ͼƬͷ<C6AC><CDB7>Ϣ
|
||||
BmpInfoHeader.biSize = Marshal.SizeOf(BmpInfoHeader);
|
||||
BmpInfoHeader.biWidth = nWidth;
|
||||
BmpInfoHeader.biHeight = nHeight;
|
||||
BmpInfoHeader.biPlanes = 1;
|
||||
BmpInfoHeader.biBitCount = m_nBitCount;
|
||||
BmpInfoHeader.biCompression = 0;
|
||||
BmpInfoHeader.biSizeImage = 0;
|
||||
BmpInfoHeader.biXPelsPerMeter = 0;
|
||||
BmpInfoHeader.biYPelsPerMeter = 0;
|
||||
BmpInfoHeader.biClrUsed = m_nColorTableEntries;
|
||||
BmpInfoHeader.biClrImportant = m_nColorTableEntries;
|
||||
|
||||
//<2F>ļ<EFBFBD>ͷ<EFBFBD><CDB7>Ϣ
|
||||
BmpHeader.bfType = 0x4D42;
|
||||
BmpHeader.bfOffBits = 14 + Marshal.SizeOf(BmpInfoHeader) + BmpInfoHeader.biClrUsed * 4;
|
||||
BmpHeader.bfSize = BmpHeader.bfOffBits + ((((w * BmpInfoHeader.biBitCount + 31) / 32) * 4) * BmpInfoHeader.biHeight);
|
||||
BmpHeader.bfReserved1 = 0;
|
||||
BmpHeader.bfReserved2 = 0;
|
||||
|
||||
Stream FileStream = File.Open("finger.bmp", FileMode.Create, FileAccess.Write);
|
||||
BinaryWriter TmpBinaryWriter = new BinaryWriter(FileStream);
|
||||
|
||||
TmpBinaryWriter.Write(StructToBytes(BmpHeader, 14));
|
||||
TmpBinaryWriter.Write(StructToBytes(BmpInfoHeader, Marshal.SizeOf(BmpInfoHeader)));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><D4B0><EFBFBD>Ϣ
|
||||
for (ColorIndex = 0; ColorIndex < m_nColorTableEntries; ColorIndex++)
|
||||
{
|
||||
ColorMask[ColorIndex].redmask = (byte)ColorIndex;
|
||||
ColorMask[ColorIndex].greenmask = (byte)ColorIndex;
|
||||
ColorMask[ColorIndex].bluemask = (byte)ColorIndex;
|
||||
ColorMask[ColorIndex].rgbReserved = 0;
|
||||
|
||||
TmpBinaryWriter.Write(StructToBytes(ColorMask[ColorIndex], Marshal.SizeOf(ColorMask[ColorIndex])));
|
||||
}
|
||||
|
||||
//ͼƬ<CDBC><C6AC>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
RotatePic(buffer, nWidth, nHeight, ref ResBuf);
|
||||
|
||||
//дͼƬ
|
||||
//TmpBinaryWriter.Write(ResBuf);
|
||||
byte[] filter = null;
|
||||
if (w - nWidth > 0)
|
||||
{
|
||||
filter = new byte[w - nWidth];
|
||||
}
|
||||
for (int i = 0; i < nHeight; i++)
|
||||
{
|
||||
TmpBinaryWriter.Write(ResBuf, i * nWidth, nWidth);
|
||||
if (w - nWidth > 0)
|
||||
{
|
||||
TmpBinaryWriter.Write(ResBuf, 0, w - nWidth);
|
||||
}
|
||||
}
|
||||
|
||||
FileStream.Close();
|
||||
TmpBinaryWriter.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//ZKCE.SysException.ZKCELogger logger = new ZKCE.SysException.ZKCELogger(ex);
|
||||
//logger.Append();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,246 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{52584845-7921-48B8-B3D0-F88912DC4F74}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Demo</RootNamespace>
|
||||
<AssemblyName>Demo</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\..\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<OutputPath>..\..\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\..\x64\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<OutputPath>..\..\x64\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TRAIL|AnyCPU' ">
|
||||
<OutputPath>bin\TRAIL\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TRAIL|x86' ">
|
||||
<OutputPath>bin\x86\TRAIL\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TRAIL|x64' ">
|
||||
<OutputPath>bin\x64\TRAIL\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TRAIL_ASYNC|AnyCPU' ">
|
||||
<OutputPath>bin\TRAIL_ASYNC\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TRAIL_ASYNC|x86' ">
|
||||
<OutputPath>bin\x86\TRAIL_ASYNC\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TRAIL_ASYNC|x64' ">
|
||||
<OutputPath>bin\x64\TRAIL_ASYNC\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ASYNC|AnyCPU' ">
|
||||
<OutputPath>bin\ASYNC\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ASYNC|x86' ">
|
||||
<OutputPath>bin\x86\ASYNC\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ASYNC|x64' ">
|
||||
<OutputPath>bin\x64\ASYNC\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GOLD|AnyCPU' ">
|
||||
<OutputPath>bin\GOLD\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GOLD|x86' ">
|
||||
<OutputPath>bin\x86\GOLD\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GOLD|x64' ">
|
||||
<OutputPath>bin\x64\GOLD\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'STD_IMAGE|AnyCPU' ">
|
||||
<OutputPath>bin\STD_IMAGE\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'STD_IMAGE|x86' ">
|
||||
<OutputPath>bin\x86\STD_IMAGE\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'STD_IMAGE|x64' ">
|
||||
<OutputPath>bin\x64\STD_IMAGE\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="libzkfpcsharp, Version=1.0.0.1, Culture=neutral, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\lib\x86\libzkfpcsharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="BitmapFormat.cs" />
|
||||
<Compile Include="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@@ -0,0 +1,77 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo2", "Demo2.csproj", "{52584845-7921-48B8-B3D0-F88912DC4F74}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
ASYNC|Any CPU = ASYNC|Any CPU
|
||||
ASYNC|x64 = ASYNC|x64
|
||||
ASYNC|x86 = ASYNC|x86
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
GOLD|Any CPU = GOLD|Any CPU
|
||||
GOLD|x64 = GOLD|x64
|
||||
GOLD|x86 = GOLD|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
STD_IMAGE|Any CPU = STD_IMAGE|Any CPU
|
||||
STD_IMAGE|x64 = STD_IMAGE|x64
|
||||
STD_IMAGE|x86 = STD_IMAGE|x86
|
||||
TRAIL_ASYNC|Any CPU = TRAIL_ASYNC|Any CPU
|
||||
TRAIL_ASYNC|x64 = TRAIL_ASYNC|x64
|
||||
TRAIL_ASYNC|x86 = TRAIL_ASYNC|x86
|
||||
TRAIL|Any CPU = TRAIL|Any CPU
|
||||
TRAIL|x64 = TRAIL|x64
|
||||
TRAIL|x86 = TRAIL|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.ASYNC|Any CPU.ActiveCfg = ASYNC|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.ASYNC|Any CPU.Build.0 = ASYNC|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.ASYNC|x64.ActiveCfg = ASYNC|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.ASYNC|x64.Build.0 = ASYNC|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.ASYNC|x86.ActiveCfg = ASYNC|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.ASYNC|x86.Build.0 = ASYNC|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Debug|x64.Build.0 = Debug|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Debug|x86.Build.0 = Debug|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.GOLD|Any CPU.ActiveCfg = GOLD|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.GOLD|Any CPU.Build.0 = GOLD|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.GOLD|x64.ActiveCfg = GOLD|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.GOLD|x64.Build.0 = GOLD|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.GOLD|x86.ActiveCfg = GOLD|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.GOLD|x86.Build.0 = GOLD|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Release|x64.ActiveCfg = Release|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Release|x64.Build.0 = Release|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Release|x86.ActiveCfg = Release|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Release|x86.Build.0 = Release|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.STD_IMAGE|Any CPU.ActiveCfg = STD_IMAGE|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.STD_IMAGE|Any CPU.Build.0 = STD_IMAGE|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.STD_IMAGE|x64.ActiveCfg = STD_IMAGE|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.STD_IMAGE|x64.Build.0 = STD_IMAGE|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.STD_IMAGE|x86.ActiveCfg = STD_IMAGE|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.STD_IMAGE|x86.Build.0 = STD_IMAGE|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL_ASYNC|Any CPU.ActiveCfg = TRAIL_ASYNC|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL_ASYNC|Any CPU.Build.0 = TRAIL_ASYNC|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL_ASYNC|x64.ActiveCfg = TRAIL_ASYNC|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL_ASYNC|x64.Build.0 = TRAIL_ASYNC|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL_ASYNC|x86.ActiveCfg = TRAIL_ASYNC|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL_ASYNC|x86.Build.0 = TRAIL_ASYNC|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL|Any CPU.ActiveCfg = TRAIL|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL|Any CPU.Build.0 = TRAIL|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL|x64.ActiveCfg = TRAIL|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL|x64.Build.0 = TRAIL|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL|x86.ActiveCfg = TRAIL|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL|x86.Build.0 = TRAIL|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Binary file not shown.
196
InstaladorUtilerias/UtileriasExtrasChecador/ZKFinger/Demo/Backup/Form1.Designer.cs
generated
Normal file
196
InstaladorUtilerias/UtileriasExtrasChecador/ZKFinger/Demo/Backup/Form1.Designer.cs
generated
Normal file
@@ -0,0 +1,196 @@
|
||||
namespace Demo
|
||||
{
|
||||
partial class Form1
|
||||
{
|
||||
/// <summary>
|
||||
/// 必需的设计器变量。
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 清理所有正在使用的资源。
|
||||
/// </summary>
|
||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows 窗体设计器生成的代码
|
||||
|
||||
/// <summary>
|
||||
/// 设计器支持所需的方法 - 不要
|
||||
/// 使用代码编辑器修改此方法的内容。
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.bnInit = new System.Windows.Forms.Button();
|
||||
this.bnOpen = new System.Windows.Forms.Button();
|
||||
this.bnEnroll = new System.Windows.Forms.Button();
|
||||
this.bnVerify = new System.Windows.Forms.Button();
|
||||
this.bnFree = new System.Windows.Forms.Button();
|
||||
this.bnClose = new System.Windows.Forms.Button();
|
||||
this.bnIdentify = new System.Windows.Forms.Button();
|
||||
this.textRes = new System.Windows.Forms.TextBox();
|
||||
this.picFPImg = new System.Windows.Forms.PictureBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.cmbIdx = new System.Windows.Forms.ComboBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picFPImg)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// bnInit
|
||||
//
|
||||
this.bnInit.Location = new System.Drawing.Point(27, 27);
|
||||
this.bnInit.Name = "bnInit";
|
||||
this.bnInit.Size = new System.Drawing.Size(75, 23);
|
||||
this.bnInit.TabIndex = 0;
|
||||
this.bnInit.Text = "Initialize";
|
||||
this.bnInit.UseVisualStyleBackColor = true;
|
||||
this.bnInit.Click += new System.EventHandler(this.bnInit_Click);
|
||||
//
|
||||
// bnOpen
|
||||
//
|
||||
this.bnOpen.Enabled = false;
|
||||
this.bnOpen.Location = new System.Drawing.Point(27, 71);
|
||||
this.bnOpen.Name = "bnOpen";
|
||||
this.bnOpen.Size = new System.Drawing.Size(75, 23);
|
||||
this.bnOpen.TabIndex = 1;
|
||||
this.bnOpen.Text = "Open";
|
||||
this.bnOpen.UseVisualStyleBackColor = true;
|
||||
this.bnOpen.Click += new System.EventHandler(this.bnOpen_Click);
|
||||
//
|
||||
// bnEnroll
|
||||
//
|
||||
this.bnEnroll.Enabled = false;
|
||||
this.bnEnroll.Location = new System.Drawing.Point(27, 112);
|
||||
this.bnEnroll.Name = "bnEnroll";
|
||||
this.bnEnroll.Size = new System.Drawing.Size(75, 23);
|
||||
this.bnEnroll.TabIndex = 2;
|
||||
this.bnEnroll.Text = "Enroll";
|
||||
this.bnEnroll.UseVisualStyleBackColor = true;
|
||||
this.bnEnroll.Click += new System.EventHandler(this.bnEnroll_Click);
|
||||
//
|
||||
// bnVerify
|
||||
//
|
||||
this.bnVerify.Enabled = false;
|
||||
this.bnVerify.Location = new System.Drawing.Point(27, 151);
|
||||
this.bnVerify.Name = "bnVerify";
|
||||
this.bnVerify.Size = new System.Drawing.Size(75, 23);
|
||||
this.bnVerify.TabIndex = 3;
|
||||
this.bnVerify.Text = "Verify";
|
||||
this.bnVerify.UseVisualStyleBackColor = true;
|
||||
this.bnVerify.Click += new System.EventHandler(this.bnVerify_Click);
|
||||
//
|
||||
// bnFree
|
||||
//
|
||||
this.bnFree.Enabled = false;
|
||||
this.bnFree.Location = new System.Drawing.Point(130, 27);
|
||||
this.bnFree.Name = "bnFree";
|
||||
this.bnFree.Size = new System.Drawing.Size(75, 23);
|
||||
this.bnFree.TabIndex = 4;
|
||||
this.bnFree.Text = "Finalize";
|
||||
this.bnFree.UseVisualStyleBackColor = true;
|
||||
this.bnFree.Click += new System.EventHandler(this.bnFree_Click);
|
||||
//
|
||||
// bnClose
|
||||
//
|
||||
this.bnClose.Enabled = false;
|
||||
this.bnClose.Location = new System.Drawing.Point(130, 71);
|
||||
this.bnClose.Name = "bnClose";
|
||||
this.bnClose.Size = new System.Drawing.Size(75, 23);
|
||||
this.bnClose.TabIndex = 5;
|
||||
this.bnClose.Text = "Close";
|
||||
this.bnClose.UseVisualStyleBackColor = true;
|
||||
this.bnClose.Click += new System.EventHandler(this.bnClose_Click);
|
||||
//
|
||||
// bnIdentify
|
||||
//
|
||||
this.bnIdentify.Enabled = false;
|
||||
this.bnIdentify.Location = new System.Drawing.Point(130, 112);
|
||||
this.bnIdentify.Name = "bnIdentify";
|
||||
this.bnIdentify.Size = new System.Drawing.Size(75, 23);
|
||||
this.bnIdentify.TabIndex = 6;
|
||||
this.bnIdentify.Text = "Identiy";
|
||||
this.bnIdentify.UseVisualStyleBackColor = true;
|
||||
this.bnIdentify.Click += new System.EventHandler(this.bnIdentify_Click);
|
||||
//
|
||||
// textRes
|
||||
//
|
||||
this.textRes.Location = new System.Drawing.Point(1, 185);
|
||||
this.textRes.Multiline = true;
|
||||
this.textRes.Name = "textRes";
|
||||
this.textRes.ReadOnly = true;
|
||||
this.textRes.Size = new System.Drawing.Size(451, 115);
|
||||
this.textRes.TabIndex = 7;
|
||||
//
|
||||
// picFPImg
|
||||
//
|
||||
this.picFPImg.Location = new System.Drawing.Point(310, 12);
|
||||
this.picFPImg.Name = "picFPImg";
|
||||
this.picFPImg.Size = new System.Drawing.Size(131, 161);
|
||||
this.picFPImg.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.picFPImg.TabIndex = 8;
|
||||
this.picFPImg.TabStop = false;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(210, 32);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(41, 12);
|
||||
this.label1.TabIndex = 9;
|
||||
this.label1.Text = "Index:";
|
||||
//
|
||||
// cmbIdx
|
||||
//
|
||||
this.cmbIdx.FormattingEnabled = true;
|
||||
this.cmbIdx.Location = new System.Drawing.Point(248, 29);
|
||||
this.cmbIdx.Name = "cmbIdx";
|
||||
this.cmbIdx.Size = new System.Drawing.Size(40, 20);
|
||||
this.cmbIdx.TabIndex = 10;
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(453, 306);
|
||||
this.Controls.Add(this.cmbIdx);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.picFPImg);
|
||||
this.Controls.Add(this.textRes);
|
||||
this.Controls.Add(this.bnIdentify);
|
||||
this.Controls.Add(this.bnClose);
|
||||
this.Controls.Add(this.bnFree);
|
||||
this.Controls.Add(this.bnVerify);
|
||||
this.Controls.Add(this.bnEnroll);
|
||||
this.Controls.Add(this.bnOpen);
|
||||
this.Controls.Add(this.bnInit);
|
||||
this.Name = "Form1";
|
||||
this.Text = "Form1";
|
||||
this.Load += new System.EventHandler(this.Form1_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.picFPImg)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button bnInit;
|
||||
private System.Windows.Forms.Button bnOpen;
|
||||
private System.Windows.Forms.Button bnEnroll;
|
||||
private System.Windows.Forms.Button bnVerify;
|
||||
private System.Windows.Forms.Button bnFree;
|
||||
private System.Windows.Forms.Button bnClose;
|
||||
private System.Windows.Forms.Button bnIdentify;
|
||||
private System.Windows.Forms.TextBox textRes;
|
||||
private System.Windows.Forms.PictureBox picFPImg;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ComboBox cmbIdx;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,301 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using libzkfpcsharp;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.IO;
|
||||
using Sample;
|
||||
|
||||
namespace Demo
|
||||
{
|
||||
public partial class Form1 : Form
|
||||
{
|
||||
IntPtr mDevHandle = IntPtr.Zero;
|
||||
IntPtr mDBHandle = IntPtr.Zero;
|
||||
IntPtr FormHandle = IntPtr.Zero;
|
||||
bool bIsTimeToDie = false;
|
||||
bool IsRegister = false;
|
||||
bool bIdentify = true;
|
||||
byte[] FPBuffer;
|
||||
int RegisterCount = 0;
|
||||
const int REGISTER_FINGER_COUNT = 3;
|
||||
|
||||
byte[][] RegTmps = new byte[3][];
|
||||
byte[] RegTmp = new byte[2048];
|
||||
byte[] CapTmp = new byte[2048];
|
||||
int cbCapTmp = 2048;
|
||||
int cbRegTmp = 0;
|
||||
int iFid = 1;
|
||||
|
||||
private int mfpWidth = 0;
|
||||
private int mfpHeight = 0;
|
||||
|
||||
const int MESSAGE_CAPTURED_OK = 0x0400 + 6;
|
||||
|
||||
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
|
||||
public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
|
||||
|
||||
public Form1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void bnInit_Click(object sender, EventArgs e)
|
||||
{
|
||||
cmbIdx.Items.Clear();
|
||||
int ret = zkfperrdef.ZKFP_ERR_OK;
|
||||
if ((ret = zkfp2.Init()) == zkfperrdef.ZKFP_ERR_OK)
|
||||
{
|
||||
int nCount = zkfp2.GetDeviceCount();
|
||||
if (nCount > 0)
|
||||
{
|
||||
for (int i = 0; i < nCount; i++)
|
||||
{
|
||||
cmbIdx.Items.Add(i.ToString());
|
||||
}
|
||||
cmbIdx.SelectedIndex = 0;
|
||||
bnInit.Enabled = false;
|
||||
bnFree.Enabled = true;
|
||||
bnOpen.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
zkfp2.Terminate();
|
||||
MessageBox.Show("No device connected!");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Initialize fail, ret=" + ret + " !");
|
||||
}
|
||||
}
|
||||
|
||||
private void bnFree_Click(object sender, EventArgs e)
|
||||
{
|
||||
zkfp2.Terminate();
|
||||
cbRegTmp = 0;
|
||||
bnInit.Enabled = true;
|
||||
bnFree.Enabled = false;
|
||||
bnOpen.Enabled = false;
|
||||
bnClose.Enabled = false;
|
||||
bnEnroll.Enabled = false;
|
||||
bnVerify.Enabled = false;
|
||||
bnIdentify.Enabled = false;
|
||||
}
|
||||
|
||||
private void bnOpen_Click(object sender, EventArgs e)
|
||||
{
|
||||
int ret = zkfp.ZKFP_ERR_OK;
|
||||
if (IntPtr.Zero == (mDevHandle = zkfp2.OpenDevice(cmbIdx.SelectedIndex)))
|
||||
{
|
||||
MessageBox.Show("OpenDevice fail");
|
||||
return;
|
||||
}
|
||||
if (IntPtr.Zero == (mDBHandle = zkfp2.DBInit()))
|
||||
{
|
||||
MessageBox.Show("Init DB fail");
|
||||
zkfp2.CloseDevice(mDevHandle);
|
||||
mDevHandle = IntPtr.Zero;
|
||||
return;
|
||||
}
|
||||
bnInit.Enabled = false;
|
||||
bnFree.Enabled = true;
|
||||
bnOpen.Enabled = false;
|
||||
bnClose.Enabled = true;
|
||||
bnEnroll.Enabled = true;
|
||||
bnVerify.Enabled = true;
|
||||
bnIdentify.Enabled = true;
|
||||
RegisterCount = 0;
|
||||
cbRegTmp = 0;
|
||||
iFid = 1;
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
RegTmps[i] = new byte[2048];
|
||||
}
|
||||
byte[] paramValue = new byte[4];
|
||||
int size = 4;
|
||||
zkfp2.GetParameters(mDevHandle, 1, paramValue, ref size);
|
||||
zkfp2.ByteArray2Int(paramValue, ref mfpWidth);
|
||||
|
||||
size = 4;
|
||||
zkfp2.GetParameters(mDevHandle, 2, paramValue, ref size);
|
||||
zkfp2.ByteArray2Int(paramValue, ref mfpHeight);
|
||||
|
||||
FPBuffer = new byte[mfpWidth*mfpHeight];
|
||||
|
||||
Thread captureThread = new Thread(new ThreadStart(DoCapture));
|
||||
captureThread.IsBackground = true;
|
||||
captureThread.Start();
|
||||
bIsTimeToDie = false;
|
||||
textRes.Text = "Open succ";
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void DoCapture()
|
||||
{
|
||||
while (!bIsTimeToDie)
|
||||
{
|
||||
cbCapTmp = 2048;
|
||||
int ret = zkfp2.AcquireFingerprint(mDevHandle, FPBuffer, CapTmp, ref cbCapTmp);
|
||||
if (ret == zkfp.ZKFP_ERR_OK)
|
||||
{
|
||||
SendMessage(FormHandle, MESSAGE_CAPTURED_OK, IntPtr.Zero, IntPtr.Zero);
|
||||
}
|
||||
Thread.Sleep(200);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void DefWndProc(ref Message m)
|
||||
{
|
||||
switch (m.Msg)
|
||||
{
|
||||
case MESSAGE_CAPTURED_OK:
|
||||
{
|
||||
MemoryStream ms = new MemoryStream();
|
||||
BitmapFormat.GetBitmap(FPBuffer, mfpWidth, mfpHeight, ref ms);
|
||||
Bitmap bmp = new Bitmap(ms);
|
||||
this.picFPImg.Image = bmp;
|
||||
if (IsRegister)
|
||||
{
|
||||
int ret = zkfp.ZKFP_ERR_OK;
|
||||
int fid = 0, score = 0;
|
||||
ret = zkfp2.DBIdentify(mDBHandle, CapTmp, ref fid, ref score);
|
||||
if (zkfp.ZKFP_ERR_OK == ret)
|
||||
{
|
||||
textRes.Text = "This finger was already register by " + fid + "!";
|
||||
return;
|
||||
}
|
||||
if (RegisterCount > 0 && zkfp2.DBMatch(mDBHandle, CapTmp, RegTmps[RegisterCount - 1]) <= 0)
|
||||
{
|
||||
textRes.Text = "Please press the same finger 3 times for the enrollment";
|
||||
return;
|
||||
}
|
||||
Array.Copy(CapTmp, RegTmps[RegisterCount], cbCapTmp);
|
||||
String strBase64 = zkfp2.BlobToBase64(CapTmp, cbCapTmp);
|
||||
byte[] blob = zkfp2.Base64ToBlob(strBase64);
|
||||
RegisterCount++;
|
||||
if (RegisterCount >= REGISTER_FINGER_COUNT)
|
||||
{
|
||||
RegisterCount = 0;
|
||||
if (zkfp.ZKFP_ERR_OK == (ret = zkfp2.DBMerge(mDBHandle, RegTmps[0], RegTmps[1], RegTmps[2], RegTmp, ref cbRegTmp)) &&
|
||||
zkfp.ZKFP_ERR_OK == (ret = zkfp2.DBAdd(mDBHandle, iFid, RegTmp)))
|
||||
{
|
||||
iFid++;
|
||||
textRes.Text = "enroll succ";
|
||||
}
|
||||
else
|
||||
{
|
||||
textRes.Text = "enroll fail, error code=" + ret;
|
||||
}
|
||||
IsRegister = false;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
textRes.Text = "You need to press the " + (REGISTER_FINGER_COUNT - RegisterCount) + " times fingerprint";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cbRegTmp <= 0)
|
||||
{
|
||||
textRes.Text = "Please register your finger first!";
|
||||
return;
|
||||
}
|
||||
if (bIdentify)
|
||||
{
|
||||
int ret = zkfp.ZKFP_ERR_OK;
|
||||
int fid = 0, score = 0;
|
||||
ret = zkfp2.DBIdentify(mDBHandle, CapTmp, ref fid, ref score);
|
||||
if (zkfp.ZKFP_ERR_OK == ret)
|
||||
{
|
||||
textRes.Text = "Identify succ, fid= " + fid + ",score=" + score + "!";
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
textRes.Text = "Identify fail, ret= " + ret;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int ret = zkfp2.DBMatch(mDBHandle, CapTmp, RegTmp);
|
||||
if (0 < ret)
|
||||
{
|
||||
textRes.Text = "Match finger succ, score=" + ret + "!";
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
textRes.Text = "Match finger fail, ret= " + ret;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
base.DefWndProc(ref m);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void Form1_Load(object sender, EventArgs e)
|
||||
{
|
||||
FormHandle = this.Handle;
|
||||
}
|
||||
|
||||
private void bnClose_Click(object sender, EventArgs e)
|
||||
{
|
||||
bIsTimeToDie = true;
|
||||
RegisterCount = 0;
|
||||
Thread.Sleep(1000);
|
||||
zkfp2.CloseDevice(mDevHandle);
|
||||
bnInit.Enabled = false;
|
||||
bnFree.Enabled = true;
|
||||
bnOpen.Enabled = true;
|
||||
bnClose.Enabled = false;
|
||||
bnEnroll.Enabled = false;
|
||||
bnVerify.Enabled = false;
|
||||
bnIdentify.Enabled = false;
|
||||
}
|
||||
|
||||
private void bnEnroll_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsRegister)
|
||||
{
|
||||
IsRegister = true;
|
||||
RegisterCount = 0;
|
||||
cbRegTmp = 0;
|
||||
textRes.Text = "Please press your finger 3 times!";
|
||||
}
|
||||
}
|
||||
|
||||
private void bnIdentify_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!bIdentify)
|
||||
{
|
||||
bIdentify = true;
|
||||
textRes.Text = "Please press your finger!";
|
||||
}
|
||||
}
|
||||
|
||||
private void bnVerify_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (bIdentify)
|
||||
{
|
||||
bIdentify = false;
|
||||
textRes.Text = "Please press your finger!";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Demo
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// 应用程序的主入口点。
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new Form1());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 有关程序集的常规信息通过下列属性集
|
||||
// 控制。更改这些属性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("Demo")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("Demo")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// 将 ComVisible 设置为 false 使此程序集中的类型
|
||||
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
|
||||
// 则将该类型上的 ComVisible 属性设置为 true。
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||
[assembly: Guid("2eb2f28e-ec44-4e2a-a86f-683917ab8e55")]
|
||||
|
||||
// 程序集的版本信息由下面四个值组成:
|
||||
//
|
||||
// 主版本
|
||||
// 次版本
|
||||
// 内部版本号
|
||||
// 修订号
|
||||
//
|
||||
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
|
||||
// 方法是按如下所示使用“*”:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
71
InstaladorUtilerias/UtileriasExtrasChecador/ZKFinger/Demo/Backup/Properties/Resources.Designer.cs
generated
Normal file
71
InstaladorUtilerias/UtileriasExtrasChecador/ZKFinger/Demo/Backup/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,71 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 此代码由工具生成。
|
||||
// 运行库版本:2.0.50727.8689
|
||||
//
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
// 重新生成代码,这些更改将丢失。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Demo.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 一个强类型的资源类,用于查找本地化的字符串等。
|
||||
/// </summary>
|
||||
// 此类是由 StronglyTypedResourceBuilder
|
||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal 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)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Demo.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 为所有资源查找重写当前线程的 CurrentUICulture 属性,
|
||||
/// 方法是使用此强类型资源类。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
<?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.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: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" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</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" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
30
InstaladorUtilerias/UtileriasExtrasChecador/ZKFinger/Demo/Backup/Properties/Settings.Designer.cs
generated
Normal file
30
InstaladorUtilerias/UtileriasExtrasChecador/ZKFinger/Demo/Backup/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,30 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.8689
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Demo.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
@@ -0,0 +1,295 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.IO;
|
||||
|
||||
namespace Sample
|
||||
{
|
||||
public class BitmapFormat
|
||||
{
|
||||
public struct BITMAPFILEHEADER
|
||||
{
|
||||
public ushort bfType;
|
||||
public int bfSize;
|
||||
public ushort bfReserved1;
|
||||
public ushort bfReserved2;
|
||||
public int bfOffBits;
|
||||
}
|
||||
|
||||
public struct MASK
|
||||
{
|
||||
public byte redmask;
|
||||
public byte greenmask;
|
||||
public byte bluemask;
|
||||
public byte rgbReserved;
|
||||
}
|
||||
|
||||
public struct BITMAPINFOHEADER
|
||||
{
|
||||
public int biSize;
|
||||
public int biWidth;
|
||||
public int biHeight;
|
||||
public ushort biPlanes;
|
||||
public ushort biBitCount;
|
||||
public int biCompression;
|
||||
public int biSizeImage;
|
||||
public int biXPelsPerMeter;
|
||||
public int biYPelsPerMeter;
|
||||
public int biClrUsed;
|
||||
public int biClrImportant;
|
||||
}
|
||||
|
||||
/*******************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>RotatePic
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>תͼƬ<CDBC><C6AC>Ŀ<EFBFBD><C4BF><EFBFBD>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ͼƬ<CDBC>밴<EFBFBD><EBB0B4>ָ<EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>ͬ
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>BmpBuf---<2D><>תǰ<D7AA><C7B0>ָ<EFBFBD><D6B8><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>ResBuf---<2D><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD>
|
||||
*********************************************/
|
||||
public static void RotatePic(byte[] BmpBuf, int width, int height, ref byte[] ResBuf)
|
||||
{
|
||||
int RowLoop = 0;
|
||||
int ColLoop = 0;
|
||||
int BmpBuflen = width * height;
|
||||
|
||||
try
|
||||
{
|
||||
for (RowLoop = 0; RowLoop < BmpBuflen; )
|
||||
{
|
||||
for (ColLoop = 0; ColLoop < width; ColLoop++)
|
||||
{
|
||||
ResBuf[RowLoop + ColLoop] = BmpBuf[BmpBuflen - RowLoop - width + ColLoop];
|
||||
}
|
||||
|
||||
RowLoop = RowLoop + width;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//ZKCE.SysException.ZKCELogger logger = new ZKCE.SysException.ZKCELogger(ex);
|
||||
//logger.Append();
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>StructToBytes
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>StructObj---<2D><>ת<EFBFBD><D7AA><EFBFBD>Ľṹ<C4BD><E1B9B9>
|
||||
* Size---<2D><>ת<EFBFBD><D7AA><EFBFBD>Ľṹ<C4BD><E1B9B9><EFBFBD>Ĵ<EFBFBD>С
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3>ṹ<EFBFBD><E1B9B9>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*********************************************/
|
||||
public static byte[] StructToBytes(object StructObj, int Size)
|
||||
{
|
||||
int StructSize = Marshal.SizeOf(StructObj);
|
||||
byte[] GetBytes = new byte[StructSize];
|
||||
|
||||
try
|
||||
{
|
||||
IntPtr StructPtr = Marshal.AllocHGlobal(StructSize);
|
||||
Marshal.StructureToPtr(StructObj, StructPtr, false);
|
||||
Marshal.Copy(StructPtr, GetBytes, 0, StructSize);
|
||||
Marshal.FreeHGlobal(StructPtr);
|
||||
|
||||
if (Size == 14)
|
||||
{
|
||||
byte[] NewBytes = new byte[Size];
|
||||
int Count = 0;
|
||||
int Loop = 0;
|
||||
|
||||
for (Loop = 0; Loop < StructSize; Loop++)
|
||||
{
|
||||
if (Loop != 2 && Loop != 3)
|
||||
{
|
||||
NewBytes[Count] = GetBytes[Loop];
|
||||
Count++;
|
||||
}
|
||||
}
|
||||
|
||||
return NewBytes;
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetBytes;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//ZKCE.SysException.ZKCELogger logger = new ZKCE.SysException.ZKCELogger(ex);
|
||||
//logger.Append();
|
||||
|
||||
return GetBytes;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>GetBitmap
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>ΪͼƬ
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>buffer---ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>
|
||||
* nWidth---ͼƬ<CDBC>Ŀ<EFBFBD><C4BF><EFBFBD>
|
||||
* nHeight---ͼƬ<CDBC>ĸ߶<C4B8>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD>
|
||||
*********************************************/
|
||||
public static void GetBitmap(byte[] buffer, int nWidth, int nHeight, ref MemoryStream ms)
|
||||
{
|
||||
int ColorIndex = 0;
|
||||
ushort m_nBitCount = 8;
|
||||
int m_nColorTableEntries = 256;
|
||||
byte[] ResBuf = new byte[nWidth * nHeight*2];
|
||||
|
||||
try
|
||||
{
|
||||
BITMAPFILEHEADER BmpHeader = new BITMAPFILEHEADER();
|
||||
BITMAPINFOHEADER BmpInfoHeader = new BITMAPINFOHEADER();
|
||||
MASK[] ColorMask = new MASK[m_nColorTableEntries];
|
||||
|
||||
int w = (((nWidth + 3) / 4) * 4);
|
||||
|
||||
//ͼƬͷ<C6AC><CDB7>Ϣ
|
||||
BmpInfoHeader.biSize = Marshal.SizeOf(BmpInfoHeader);
|
||||
BmpInfoHeader.biWidth = nWidth;
|
||||
BmpInfoHeader.biHeight = nHeight;
|
||||
BmpInfoHeader.biPlanes = 1;
|
||||
BmpInfoHeader.biBitCount = m_nBitCount;
|
||||
BmpInfoHeader.biCompression = 0;
|
||||
BmpInfoHeader.biSizeImage = 0;
|
||||
BmpInfoHeader.biXPelsPerMeter = 0;
|
||||
BmpInfoHeader.biYPelsPerMeter = 0;
|
||||
BmpInfoHeader.biClrUsed = m_nColorTableEntries;
|
||||
BmpInfoHeader.biClrImportant = m_nColorTableEntries;
|
||||
|
||||
//<2F>ļ<EFBFBD>ͷ<EFBFBD><CDB7>Ϣ
|
||||
BmpHeader.bfType = 0x4D42;
|
||||
BmpHeader.bfOffBits = 14 + Marshal.SizeOf(BmpInfoHeader) + BmpInfoHeader.biClrUsed * 4;
|
||||
BmpHeader.bfSize = BmpHeader.bfOffBits + ((((w * BmpInfoHeader.biBitCount + 31) / 32) * 4) * BmpInfoHeader.biHeight);
|
||||
BmpHeader.bfReserved1 = 0;
|
||||
BmpHeader.bfReserved2 = 0;
|
||||
|
||||
ms.Write(StructToBytes(BmpHeader, 14), 0, 14);
|
||||
ms.Write(StructToBytes(BmpInfoHeader, Marshal.SizeOf(BmpInfoHeader)), 0, Marshal.SizeOf(BmpInfoHeader));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><D4B0><EFBFBD>Ϣ
|
||||
for (ColorIndex = 0; ColorIndex < m_nColorTableEntries; ColorIndex++)
|
||||
{
|
||||
ColorMask[ColorIndex].redmask = (byte)ColorIndex;
|
||||
ColorMask[ColorIndex].greenmask = (byte)ColorIndex;
|
||||
ColorMask[ColorIndex].bluemask = (byte)ColorIndex;
|
||||
ColorMask[ColorIndex].rgbReserved = 0;
|
||||
|
||||
ms.Write(StructToBytes(ColorMask[ColorIndex], Marshal.SizeOf(ColorMask[ColorIndex])), 0, Marshal.SizeOf(ColorMask[ColorIndex]));
|
||||
}
|
||||
|
||||
//ͼƬ<CDBC><C6AC>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
RotatePic(buffer, nWidth, nHeight, ref ResBuf);
|
||||
|
||||
byte[] filter = null;
|
||||
if (w - nWidth > 0)
|
||||
{
|
||||
filter = new byte[w - nWidth];
|
||||
}
|
||||
for (int i = 0; i < nHeight; i++)
|
||||
{
|
||||
ms.Write(ResBuf, i * nWidth, nWidth);
|
||||
if (w - nWidth > 0)
|
||||
{
|
||||
ms.Write(ResBuf, 0, w - nWidth);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// ZKCE.SysException.ZKCELogger logger = new ZKCE.SysException.ZKCELogger(ex);
|
||||
// logger.Append();
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>WriteBitmap
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>ΪͼƬ
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>buffer---ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD>
|
||||
* nWidth---ͼƬ<CDBC>Ŀ<EFBFBD><C4BF><EFBFBD>
|
||||
* nHeight---ͼƬ<CDBC>ĸ߶<C4B8>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD>
|
||||
*********************************************/
|
||||
public static void WriteBitmap(byte[] buffer, int nWidth, int nHeight)
|
||||
{
|
||||
int ColorIndex = 0;
|
||||
ushort m_nBitCount = 8;
|
||||
int m_nColorTableEntries = 256;
|
||||
byte[] ResBuf = new byte[nWidth * nHeight];
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
BITMAPFILEHEADER BmpHeader = new BITMAPFILEHEADER();
|
||||
BITMAPINFOHEADER BmpInfoHeader = new BITMAPINFOHEADER();
|
||||
MASK[] ColorMask = new MASK[m_nColorTableEntries];
|
||||
int w = (((nWidth + 3) / 4) * 4);
|
||||
//ͼƬͷ<C6AC><CDB7>Ϣ
|
||||
BmpInfoHeader.biSize = Marshal.SizeOf(BmpInfoHeader);
|
||||
BmpInfoHeader.biWidth = nWidth;
|
||||
BmpInfoHeader.biHeight = nHeight;
|
||||
BmpInfoHeader.biPlanes = 1;
|
||||
BmpInfoHeader.biBitCount = m_nBitCount;
|
||||
BmpInfoHeader.biCompression = 0;
|
||||
BmpInfoHeader.biSizeImage = 0;
|
||||
BmpInfoHeader.biXPelsPerMeter = 0;
|
||||
BmpInfoHeader.biYPelsPerMeter = 0;
|
||||
BmpInfoHeader.biClrUsed = m_nColorTableEntries;
|
||||
BmpInfoHeader.biClrImportant = m_nColorTableEntries;
|
||||
|
||||
//<2F>ļ<EFBFBD>ͷ<EFBFBD><CDB7>Ϣ
|
||||
BmpHeader.bfType = 0x4D42;
|
||||
BmpHeader.bfOffBits = 14 + Marshal.SizeOf(BmpInfoHeader) + BmpInfoHeader.biClrUsed * 4;
|
||||
BmpHeader.bfSize = BmpHeader.bfOffBits + ((((w * BmpInfoHeader.biBitCount + 31) / 32) * 4) * BmpInfoHeader.biHeight);
|
||||
BmpHeader.bfReserved1 = 0;
|
||||
BmpHeader.bfReserved2 = 0;
|
||||
|
||||
Stream FileStream = File.Open("finger.bmp", FileMode.Create, FileAccess.Write);
|
||||
BinaryWriter TmpBinaryWriter = new BinaryWriter(FileStream);
|
||||
|
||||
TmpBinaryWriter.Write(StructToBytes(BmpHeader, 14));
|
||||
TmpBinaryWriter.Write(StructToBytes(BmpInfoHeader, Marshal.SizeOf(BmpInfoHeader)));
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><D4B0><EFBFBD>Ϣ
|
||||
for (ColorIndex = 0; ColorIndex < m_nColorTableEntries; ColorIndex++)
|
||||
{
|
||||
ColorMask[ColorIndex].redmask = (byte)ColorIndex;
|
||||
ColorMask[ColorIndex].greenmask = (byte)ColorIndex;
|
||||
ColorMask[ColorIndex].bluemask = (byte)ColorIndex;
|
||||
ColorMask[ColorIndex].rgbReserved = 0;
|
||||
|
||||
TmpBinaryWriter.Write(StructToBytes(ColorMask[ColorIndex], Marshal.SizeOf(ColorMask[ColorIndex])));
|
||||
}
|
||||
|
||||
//ͼƬ<CDBC><C6AC>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ͼƬ<CDBC><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
RotatePic(buffer, nWidth, nHeight, ref ResBuf);
|
||||
|
||||
//дͼƬ
|
||||
//TmpBinaryWriter.Write(ResBuf);
|
||||
byte[] filter = null;
|
||||
if (w - nWidth > 0)
|
||||
{
|
||||
filter = new byte[w - nWidth];
|
||||
}
|
||||
for (int i = 0; i < nHeight; i++)
|
||||
{
|
||||
TmpBinaryWriter.Write(ResBuf, i * nWidth, nWidth);
|
||||
if (w - nWidth > 0)
|
||||
{
|
||||
TmpBinaryWriter.Write(ResBuf, 0, w - nWidth);
|
||||
}
|
||||
}
|
||||
|
||||
FileStream.Close();
|
||||
TmpBinaryWriter.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//ZKCE.SysException.ZKCELogger logger = new ZKCE.SysException.ZKCELogger(ex);
|
||||
//logger.Append();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,272 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{52584845-7921-48B8-B3D0-F88912DC4F74}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Demo</RootNamespace>
|
||||
<AssemblyName>Demo</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\..\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<OutputPath>..\..\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\..\x64\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<OutputPath>..\..\x64\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TRAIL|AnyCPU' ">
|
||||
<OutputPath>bin\TRAIL\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TRAIL|x86' ">
|
||||
<OutputPath>bin\x86\TRAIL\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TRAIL|x64' ">
|
||||
<OutputPath>bin\x64\TRAIL\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TRAIL_ASYNC|AnyCPU' ">
|
||||
<OutputPath>bin\TRAIL_ASYNC\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TRAIL_ASYNC|x86' ">
|
||||
<OutputPath>bin\x86\TRAIL_ASYNC\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'TRAIL_ASYNC|x64' ">
|
||||
<OutputPath>bin\x64\TRAIL_ASYNC\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ASYNC|AnyCPU' ">
|
||||
<OutputPath>bin\ASYNC\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ASYNC|x86' ">
|
||||
<OutputPath>bin\x86\ASYNC\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ASYNC|x64' ">
|
||||
<OutputPath>bin\x64\ASYNC\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GOLD|AnyCPU' ">
|
||||
<OutputPath>bin\GOLD\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GOLD|x86' ">
|
||||
<OutputPath>bin\x86\GOLD\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'GOLD|x64' ">
|
||||
<OutputPath>bin\x64\GOLD\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'STD_IMAGE|AnyCPU' ">
|
||||
<OutputPath>bin\STD_IMAGE\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'STD_IMAGE|x86' ">
|
||||
<OutputPath>bin\x86\STD_IMAGE\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'STD_IMAGE|x64' ">
|
||||
<OutputPath>bin\x64\STD_IMAGE\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<TargetZone>Custom</TargetZone>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<GenerateManifests>true</GenerateManifests>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<SignManifests>true</SignManifests>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ManifestCertificateThumbprint>2FEEFE09BB656F4E358EB525FBD20BA7737315A9</ManifestCertificateThumbprint>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ManifestKeyFile>Demo2_TemporaryKey.pfx</ManifestKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="libzkfpcsharp, Version=1.0.0.1, Culture=neutral, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\lib\x86\libzkfpcsharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="BitmapFormat.cs" />
|
||||
<Compile Include="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="Demo2_TemporaryKey.pfx" />
|
||||
<None Include="Properties\app.manifest" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@@ -0,0 +1,77 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2012
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo2", "Demo2.csproj", "{52584845-7921-48B8-B3D0-F88912DC4F74}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
ASYNC|Any CPU = ASYNC|Any CPU
|
||||
ASYNC|x64 = ASYNC|x64
|
||||
ASYNC|x86 = ASYNC|x86
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
GOLD|Any CPU = GOLD|Any CPU
|
||||
GOLD|x64 = GOLD|x64
|
||||
GOLD|x86 = GOLD|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
STD_IMAGE|Any CPU = STD_IMAGE|Any CPU
|
||||
STD_IMAGE|x64 = STD_IMAGE|x64
|
||||
STD_IMAGE|x86 = STD_IMAGE|x86
|
||||
TRAIL_ASYNC|Any CPU = TRAIL_ASYNC|Any CPU
|
||||
TRAIL_ASYNC|x64 = TRAIL_ASYNC|x64
|
||||
TRAIL_ASYNC|x86 = TRAIL_ASYNC|x86
|
||||
TRAIL|Any CPU = TRAIL|Any CPU
|
||||
TRAIL|x64 = TRAIL|x64
|
||||
TRAIL|x86 = TRAIL|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.ASYNC|Any CPU.ActiveCfg = ASYNC|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.ASYNC|Any CPU.Build.0 = ASYNC|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.ASYNC|x64.ActiveCfg = ASYNC|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.ASYNC|x64.Build.0 = ASYNC|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.ASYNC|x86.ActiveCfg = ASYNC|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.ASYNC|x86.Build.0 = ASYNC|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Debug|x64.Build.0 = Debug|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Debug|x86.Build.0 = Debug|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.GOLD|Any CPU.ActiveCfg = GOLD|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.GOLD|Any CPU.Build.0 = GOLD|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.GOLD|x64.ActiveCfg = GOLD|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.GOLD|x64.Build.0 = GOLD|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.GOLD|x86.ActiveCfg = GOLD|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.GOLD|x86.Build.0 = GOLD|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Release|x64.ActiveCfg = Release|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Release|x64.Build.0 = Release|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Release|x86.ActiveCfg = Release|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.Release|x86.Build.0 = Release|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.STD_IMAGE|Any CPU.ActiveCfg = STD_IMAGE|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.STD_IMAGE|Any CPU.Build.0 = STD_IMAGE|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.STD_IMAGE|x64.ActiveCfg = STD_IMAGE|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.STD_IMAGE|x64.Build.0 = STD_IMAGE|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.STD_IMAGE|x86.ActiveCfg = STD_IMAGE|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.STD_IMAGE|x86.Build.0 = STD_IMAGE|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL_ASYNC|Any CPU.ActiveCfg = TRAIL_ASYNC|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL_ASYNC|Any CPU.Build.0 = TRAIL_ASYNC|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL_ASYNC|x64.ActiveCfg = TRAIL_ASYNC|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL_ASYNC|x64.Build.0 = TRAIL_ASYNC|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL_ASYNC|x86.ActiveCfg = TRAIL_ASYNC|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL_ASYNC|x86.Build.0 = TRAIL_ASYNC|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL|Any CPU.ActiveCfg = TRAIL|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL|Any CPU.Build.0 = TRAIL|Any CPU
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL|x64.ActiveCfg = TRAIL|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL|x64.Build.0 = TRAIL|x64
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL|x86.ActiveCfg = TRAIL|x86
|
||||
{52584845-7921-48B8-B3D0-F88912DC4F74}.TRAIL|x86.Build.0 = TRAIL|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
182
InstaladorUtilerias/UtileriasExtrasChecador/ZKFinger/Demo/Form1.Designer.cs
generated
Normal file
182
InstaladorUtilerias/UtileriasExtrasChecador/ZKFinger/Demo/Form1.Designer.cs
generated
Normal file
@@ -0,0 +1,182 @@
|
||||
namespace Demo
|
||||
{
|
||||
partial class Form1
|
||||
{
|
||||
/// <summary>
|
||||
/// 必需的设计器变量。
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 清理所有正在使用的资源。
|
||||
/// </summary>
|
||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows 窗体设计器生成的代码
|
||||
|
||||
/// <summary>
|
||||
/// 设计器支持所需的方法 - 不要
|
||||
/// 使用代码编辑器修改此方法的内容。
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.bnInit = new System.Windows.Forms.Button();
|
||||
this.bnOpen = new System.Windows.Forms.Button();
|
||||
this.bnEnroll = new System.Windows.Forms.Button();
|
||||
this.bnFree = new System.Windows.Forms.Button();
|
||||
this.bnClose = new System.Windows.Forms.Button();
|
||||
this.bnIdentify = new System.Windows.Forms.Button();
|
||||
this.textRes = new System.Windows.Forms.TextBox();
|
||||
this.picFPImg = new System.Windows.Forms.PictureBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.cmbIdx = new System.Windows.Forms.ComboBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picFPImg)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// bnInit
|
||||
//
|
||||
this.bnInit.Location = new System.Drawing.Point(27, 29);
|
||||
this.bnInit.Name = "bnInit";
|
||||
this.bnInit.Size = new System.Drawing.Size(75, 25);
|
||||
this.bnInit.TabIndex = 0;
|
||||
this.bnInit.Text = "Initialize";
|
||||
this.bnInit.UseVisualStyleBackColor = true;
|
||||
this.bnInit.Click += new System.EventHandler(this.bnInit_Click);
|
||||
//
|
||||
// bnOpen
|
||||
//
|
||||
this.bnOpen.Enabled = false;
|
||||
this.bnOpen.Location = new System.Drawing.Point(27, 77);
|
||||
this.bnOpen.Name = "bnOpen";
|
||||
this.bnOpen.Size = new System.Drawing.Size(75, 25);
|
||||
this.bnOpen.TabIndex = 1;
|
||||
this.bnOpen.Text = "Open";
|
||||
this.bnOpen.UseVisualStyleBackColor = true;
|
||||
this.bnOpen.Click += new System.EventHandler(this.bnOpen_Click);
|
||||
//
|
||||
// bnEnroll
|
||||
//
|
||||
this.bnEnroll.Enabled = false;
|
||||
this.bnEnroll.Location = new System.Drawing.Point(27, 121);
|
||||
this.bnEnroll.Name = "bnEnroll";
|
||||
this.bnEnroll.Size = new System.Drawing.Size(75, 25);
|
||||
this.bnEnroll.TabIndex = 2;
|
||||
this.bnEnroll.Text = "Enroll";
|
||||
this.bnEnroll.UseVisualStyleBackColor = true;
|
||||
this.bnEnroll.Click += new System.EventHandler(this.bnEnroll_Click);
|
||||
//
|
||||
// bnFree
|
||||
//
|
||||
this.bnFree.Enabled = false;
|
||||
this.bnFree.Location = new System.Drawing.Point(130, 29);
|
||||
this.bnFree.Name = "bnFree";
|
||||
this.bnFree.Size = new System.Drawing.Size(75, 25);
|
||||
this.bnFree.TabIndex = 4;
|
||||
this.bnFree.Text = "Finalize";
|
||||
this.bnFree.UseVisualStyleBackColor = true;
|
||||
this.bnFree.Click += new System.EventHandler(this.bnFree_Click);
|
||||
//
|
||||
// bnClose
|
||||
//
|
||||
this.bnClose.Enabled = false;
|
||||
this.bnClose.Location = new System.Drawing.Point(130, 77);
|
||||
this.bnClose.Name = "bnClose";
|
||||
this.bnClose.Size = new System.Drawing.Size(75, 25);
|
||||
this.bnClose.TabIndex = 5;
|
||||
this.bnClose.Text = "Close";
|
||||
this.bnClose.UseVisualStyleBackColor = true;
|
||||
this.bnClose.Click += new System.EventHandler(this.bnClose_Click);
|
||||
//
|
||||
// bnIdentify
|
||||
//
|
||||
this.bnIdentify.Enabled = false;
|
||||
this.bnIdentify.Location = new System.Drawing.Point(130, 121);
|
||||
this.bnIdentify.Name = "bnIdentify";
|
||||
this.bnIdentify.Size = new System.Drawing.Size(75, 25);
|
||||
this.bnIdentify.TabIndex = 6;
|
||||
this.bnIdentify.Text = "Identiy";
|
||||
this.bnIdentify.UseVisualStyleBackColor = true;
|
||||
this.bnIdentify.Click += new System.EventHandler(this.bnIdentify_Click);
|
||||
//
|
||||
// textRes
|
||||
//
|
||||
this.textRes.Location = new System.Drawing.Point(1, 200);
|
||||
this.textRes.Multiline = true;
|
||||
this.textRes.Name = "textRes";
|
||||
this.textRes.ReadOnly = true;
|
||||
this.textRes.Size = new System.Drawing.Size(451, 124);
|
||||
this.textRes.TabIndex = 7;
|
||||
//
|
||||
// picFPImg
|
||||
//
|
||||
this.picFPImg.Location = new System.Drawing.Point(310, 13);
|
||||
this.picFPImg.Name = "picFPImg";
|
||||
this.picFPImg.Size = new System.Drawing.Size(131, 174);
|
||||
this.picFPImg.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.picFPImg.TabIndex = 8;
|
||||
this.picFPImg.TabStop = false;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(210, 35);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(36, 13);
|
||||
this.label1.TabIndex = 9;
|
||||
this.label1.Text = "Index:";
|
||||
//
|
||||
// cmbIdx
|
||||
//
|
||||
this.cmbIdx.FormattingEnabled = true;
|
||||
this.cmbIdx.Location = new System.Drawing.Point(248, 31);
|
||||
this.cmbIdx.Name = "cmbIdx";
|
||||
this.cmbIdx.Size = new System.Drawing.Size(40, 21);
|
||||
this.cmbIdx.TabIndex = 10;
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(453, 332);
|
||||
this.Controls.Add(this.cmbIdx);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.picFPImg);
|
||||
this.Controls.Add(this.textRes);
|
||||
this.Controls.Add(this.bnIdentify);
|
||||
this.Controls.Add(this.bnClose);
|
||||
this.Controls.Add(this.bnFree);
|
||||
this.Controls.Add(this.bnEnroll);
|
||||
this.Controls.Add(this.bnOpen);
|
||||
this.Controls.Add(this.bnInit);
|
||||
this.Name = "Form1";
|
||||
this.Text = "Form1";
|
||||
this.Load += new System.EventHandler(this.Form1_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.picFPImg)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button bnInit;
|
||||
private System.Windows.Forms.Button bnOpen;
|
||||
private System.Windows.Forms.Button bnEnroll;
|
||||
private System.Windows.Forms.Button bnFree;
|
||||
private System.Windows.Forms.Button bnClose;
|
||||
private System.Windows.Forms.Button bnIdentify;
|
||||
private System.Windows.Forms.TextBox textRes;
|
||||
private System.Windows.Forms.PictureBox picFPImg;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ComboBox cmbIdx;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,301 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using libzkfpcsharp;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.IO;
|
||||
using Sample;
|
||||
|
||||
namespace Demo
|
||||
{
|
||||
public partial class Form1 : Form
|
||||
{
|
||||
IntPtr mDevHandle = IntPtr.Zero;
|
||||
IntPtr mDBHandle = IntPtr.Zero;
|
||||
IntPtr FormHandle = IntPtr.Zero;
|
||||
bool bIsTimeToDie = false;
|
||||
bool IsRegister = false;
|
||||
bool bIdentify = true;
|
||||
byte[] FPBuffer;
|
||||
int RegisterCount = 0;
|
||||
const int REGISTER_FINGER_COUNT = 3;
|
||||
|
||||
byte[][] RegTmps = new byte[3][];
|
||||
byte[] RegTmp = new byte[2048];
|
||||
byte[] CapTmp = new byte[2048];
|
||||
int cbCapTmp = 2048;
|
||||
int cbRegTmp = 0;
|
||||
int iFid = 1;
|
||||
|
||||
private int mfpWidth = 0;
|
||||
private int mfpHeight = 0;
|
||||
|
||||
const int MESSAGE_CAPTURED_OK = 0x0400 + 6;
|
||||
|
||||
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
|
||||
public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
|
||||
|
||||
public Form1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void bnInit_Click(object sender, EventArgs e)
|
||||
{
|
||||
cmbIdx.Items.Clear();
|
||||
int ret = zkfperrdef.ZKFP_ERR_OK;
|
||||
if ((ret = zkfp2.Init()) == zkfperrdef.ZKFP_ERR_OK)
|
||||
{
|
||||
int nCount = zkfp2.GetDeviceCount();
|
||||
if (nCount > 0)
|
||||
{
|
||||
for (int i = 0; i < nCount; i++)
|
||||
{
|
||||
cmbIdx.Items.Add(i.ToString());
|
||||
}
|
||||
cmbIdx.SelectedIndex = 0;
|
||||
bnInit.Enabled = false;
|
||||
bnFree.Enabled = true;
|
||||
bnOpen.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
zkfp2.Terminate();
|
||||
MessageBox.Show("No device connected!");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Initialize fail, ret=" + ret + " !");
|
||||
}
|
||||
}
|
||||
|
||||
private void bnFree_Click(object sender, EventArgs e)
|
||||
{
|
||||
zkfp2.Terminate();
|
||||
cbRegTmp = 0;
|
||||
bnInit.Enabled = true;
|
||||
bnFree.Enabled = false;
|
||||
bnOpen.Enabled = false;
|
||||
bnClose.Enabled = false;
|
||||
bnEnroll.Enabled = false;
|
||||
//bnVerify.Enabled = false;
|
||||
bnIdentify.Enabled = false;
|
||||
}
|
||||
|
||||
private void bnOpen_Click(object sender, EventArgs e)
|
||||
{
|
||||
int ret = zkfp.ZKFP_ERR_OK;
|
||||
if (IntPtr.Zero == (mDevHandle = zkfp2.OpenDevice(cmbIdx.SelectedIndex)))
|
||||
{
|
||||
MessageBox.Show("OpenDevice fail");
|
||||
return;
|
||||
}
|
||||
if (IntPtr.Zero == (mDBHandle = zkfp2.DBInit()))
|
||||
{
|
||||
MessageBox.Show("Init DB fail");
|
||||
zkfp2.CloseDevice(mDevHandle);
|
||||
mDevHandle = IntPtr.Zero;
|
||||
return;
|
||||
}
|
||||
bnInit.Enabled = false;
|
||||
bnFree.Enabled = true;
|
||||
bnOpen.Enabled = false;
|
||||
bnClose.Enabled = true;
|
||||
bnEnroll.Enabled = true;
|
||||
//bnVerify.Enabled = true;
|
||||
bnIdentify.Enabled = true;
|
||||
RegisterCount = 0;
|
||||
cbRegTmp = 0;
|
||||
iFid = 1;
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
RegTmps[i] = new byte[2048];
|
||||
}
|
||||
byte[] paramValue = new byte[4];
|
||||
int size = 4;
|
||||
zkfp2.GetParameters(mDevHandle, 1, paramValue, ref size);
|
||||
zkfp2.ByteArray2Int(paramValue, ref mfpWidth);
|
||||
|
||||
size = 4;
|
||||
zkfp2.GetParameters(mDevHandle, 2, paramValue, ref size);
|
||||
zkfp2.ByteArray2Int(paramValue, ref mfpHeight);
|
||||
|
||||
FPBuffer = new byte[mfpWidth*mfpHeight];
|
||||
|
||||
Thread captureThread = new Thread(new ThreadStart(DoCapture));
|
||||
captureThread.IsBackground = true;
|
||||
captureThread.Start();
|
||||
bIsTimeToDie = false;
|
||||
textRes.Text = "Open succ";
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void DoCapture()
|
||||
{
|
||||
while (!bIsTimeToDie)
|
||||
{
|
||||
cbCapTmp = 2048;
|
||||
int ret = zkfp2.AcquireFingerprint(mDevHandle, FPBuffer, CapTmp, ref cbCapTmp);
|
||||
if (ret == zkfp.ZKFP_ERR_OK)
|
||||
{
|
||||
SendMessage(FormHandle, MESSAGE_CAPTURED_OK, IntPtr.Zero, IntPtr.Zero);
|
||||
}
|
||||
Thread.Sleep(200);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void DefWndProc(ref Message m)
|
||||
{
|
||||
switch (m.Msg)
|
||||
{
|
||||
case MESSAGE_CAPTURED_OK:
|
||||
{
|
||||
MemoryStream ms = new MemoryStream();
|
||||
BitmapFormat.GetBitmap(FPBuffer, mfpWidth, mfpHeight, ref ms);
|
||||
Bitmap bmp = new Bitmap(ms);
|
||||
this.picFPImg.Image = bmp;
|
||||
if (IsRegister)
|
||||
{
|
||||
int ret = zkfp.ZKFP_ERR_OK;
|
||||
int fid = 0, score = 0;
|
||||
ret = zkfp2.DBIdentify(mDBHandle, CapTmp, ref fid, ref score);
|
||||
if (zkfp.ZKFP_ERR_OK == ret)
|
||||
{
|
||||
textRes.Text = "This finger was already register by " + fid + "!";
|
||||
return;
|
||||
}
|
||||
if (RegisterCount > 0 && zkfp2.DBMatch(mDBHandle, CapTmp, RegTmps[RegisterCount - 1]) <= 0)
|
||||
{
|
||||
textRes.Text = "Please press the same finger 3 times for the enrollment";
|
||||
return;
|
||||
}
|
||||
Array.Copy(CapTmp, RegTmps[RegisterCount], cbCapTmp);
|
||||
String strBase64 = zkfp2.BlobToBase64(CapTmp, cbCapTmp);
|
||||
byte[] blob = zkfp2.Base64ToBlob(strBase64);
|
||||
RegisterCount++;
|
||||
if (RegisterCount >= REGISTER_FINGER_COUNT)
|
||||
{
|
||||
RegisterCount = 0;
|
||||
if (zkfp.ZKFP_ERR_OK == (ret = zkfp2.DBMerge(mDBHandle, RegTmps[0], RegTmps[1], RegTmps[2], RegTmp, ref cbRegTmp)) &&
|
||||
zkfp.ZKFP_ERR_OK == (ret = zkfp2.DBAdd(mDBHandle, iFid, RegTmp)))
|
||||
{
|
||||
iFid++;
|
||||
textRes.Text = "enroll succ";
|
||||
}
|
||||
else
|
||||
{
|
||||
textRes.Text = "enroll fail, error code=" + ret;
|
||||
}
|
||||
IsRegister = false;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
textRes.Text = "You need to press the " + (REGISTER_FINGER_COUNT - RegisterCount) + " times fingerprint";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cbRegTmp <= 0)
|
||||
{
|
||||
textRes.Text = "Please register your finger first!";
|
||||
return;
|
||||
}
|
||||
if (bIdentify)
|
||||
{
|
||||
int ret = zkfp.ZKFP_ERR_OK;
|
||||
int fid = 0, score = 0;
|
||||
ret = zkfp2.DBIdentify(mDBHandle, CapTmp, ref fid, ref score);
|
||||
if (zkfp.ZKFP_ERR_OK == ret)
|
||||
{
|
||||
textRes.Text = "Identify succ, fid= " + fid + ",score=" + score + "!";
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
textRes.Text = "Identify fail, ret= " + ret;
|
||||
return;
|
||||
}
|
||||
}
|
||||
/* else
|
||||
{
|
||||
int ret = zkfp2.DBMatch(mDBHandle, CapTmp, RegTmp);
|
||||
if (0 < ret)
|
||||
{
|
||||
textRes.Text = "Match finger succ, score=" + ret + "!";
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
textRes.Text = "Match finger fail, ret= " + ret;
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
base.DefWndProc(ref m);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void Form1_Load(object sender, EventArgs e)
|
||||
{
|
||||
FormHandle = this.Handle;
|
||||
}
|
||||
|
||||
private void bnClose_Click(object sender, EventArgs e)
|
||||
{
|
||||
bIsTimeToDie = true;
|
||||
RegisterCount = 0;
|
||||
Thread.Sleep(1000);
|
||||
zkfp2.CloseDevice(mDevHandle);
|
||||
bnInit.Enabled = false;
|
||||
bnFree.Enabled = true;
|
||||
bnOpen.Enabled = true;
|
||||
bnClose.Enabled = false;
|
||||
bnEnroll.Enabled = false;
|
||||
//bnVerify.Enabled = false;
|
||||
bnIdentify.Enabled = false;
|
||||
}
|
||||
|
||||
private void bnEnroll_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!IsRegister)
|
||||
{
|
||||
IsRegister = true;
|
||||
RegisterCount = 0;
|
||||
cbRegTmp = 0;
|
||||
textRes.Text = "Please press your finger 3 times!";
|
||||
}
|
||||
}
|
||||
|
||||
private void bnIdentify_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!bIdentify)
|
||||
{
|
||||
bIdentify = true;
|
||||
textRes.Text = "Please press your finger!";
|
||||
}
|
||||
}
|
||||
|
||||
private void bnVerify_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (bIdentify)
|
||||
{
|
||||
bIdentify = false;
|
||||
textRes.Text = "Please press your finger!";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Demo
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// 应用程序的主入口点。
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new Form1());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 有关程序集的常规信息通过下列属性集
|
||||
// 控制。更改这些属性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("Demo")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("Demo")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// 将 ComVisible 设置为 false 使此程序集中的类型
|
||||
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
|
||||
// 则将该类型上的 ComVisible 属性设置为 true。
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||
[assembly: Guid("2eb2f28e-ec44-4e2a-a86f-683917ab8e55")]
|
||||
|
||||
// 程序集的版本信息由下面四个值组成:
|
||||
//
|
||||
// 主版本
|
||||
// 次版本
|
||||
// 内部版本号
|
||||
// 修订号
|
||||
//
|
||||
// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
|
||||
// 方法是按如下所示使用“*”:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
63
InstaladorUtilerias/UtileriasExtrasChecador/ZKFinger/Demo/Properties/Resources.Designer.cs
generated
Normal file
63
InstaladorUtilerias/UtileriasExtrasChecador/ZKFinger/Demo/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.34209
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Demo.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal 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>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Demo.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
<?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.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: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" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</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" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
26
InstaladorUtilerias/UtileriasExtrasChecador/ZKFinger/Demo/Properties/Settings.Designer.cs
generated
Normal file
26
InstaladorUtilerias/UtileriasExtrasChecador/ZKFinger/Demo/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.34209
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Demo.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC Manifest Options
|
||||
If you want to change the Windows User Account Control level replace the
|
||||
requestedExecutionLevel node with one of the following.
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
Specifying requestedExecutionLevel node will disable file and registry virtualization.
|
||||
If you want to utilize File and Registry Virtualization for backward
|
||||
compatibility then delete the requestedExecutionLevel node.
|
||||
-->
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
<applicationRequestMinimum>
|
||||
<defaultAssemblyRequest permissionSetReference="Custom" />
|
||||
<PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" />
|
||||
</applicationRequestMinimum>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- A list of all Windows versions that this application is designed to work with.
|
||||
Windows will automatically select the most compatible environment.-->
|
||||
<!-- If your application is designed to work with Windows Vista, uncomment the following supportedOS node-->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>-->
|
||||
<!-- If your application is designed to work with Windows 7, uncomment the following supportedOS node-->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->
|
||||
<!-- If your application is designed to work with Windows 8, uncomment the following supportedOS node-->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS>-->
|
||||
</application>
|
||||
</compatibility>
|
||||
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
|
||||
<!-- <dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>-->
|
||||
</asmv1:assembly>
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,118 @@
|
||||
/* Body style, for the entire document */
|
||||
body
|
||||
{
|
||||
background: #F3F3F4;
|
||||
color: #1E1E1F;
|
||||
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Header1 style, used for the main title */
|
||||
h1
|
||||
{
|
||||
padding: 10px 0px 10px 10px;
|
||||
font-size: 21pt;
|
||||
background-color: #E2E2E2;
|
||||
border-bottom: 1px #C1C1C2 solid;
|
||||
color: #201F20;
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Header2 style, used for "Overview" and other sections */
|
||||
h2
|
||||
{
|
||||
font-size: 18pt;
|
||||
font-weight: normal;
|
||||
padding: 15px 0 5px 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Header3 style, used for sub-sections, such as project name */
|
||||
h3
|
||||
{
|
||||
font-weight: normal;
|
||||
font-size: 15pt;
|
||||
margin: 0;
|
||||
padding: 15px 0 5px 0;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* Color all hyperlinks one color */
|
||||
a
|
||||
{
|
||||
color: #1382CE;
|
||||
}
|
||||
|
||||
/* Table styles */
|
||||
table
|
||||
{
|
||||
border-spacing: 0 0;
|
||||
border-collapse: collapse;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
table th
|
||||
{
|
||||
background: #E7E7E8;
|
||||
text-align: left;
|
||||
text-decoration: none;
|
||||
font-weight: normal;
|
||||
padding: 3px 6px 3px 6px;
|
||||
}
|
||||
|
||||
table td
|
||||
{
|
||||
vertical-align: top;
|
||||
padding: 3px 6px 5px 5px;
|
||||
margin: 0px;
|
||||
border: 1px solid #E7E7E8;
|
||||
background: #F7F7F8;
|
||||
}
|
||||
|
||||
/* Local link is a style for hyperlinks that link to file:/// content, there are lots so color them as 'normal' text until the user mouse overs */
|
||||
.localLink
|
||||
{
|
||||
color: #1E1E1F;
|
||||
background: #EEEEED;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.localLink:hover
|
||||
{
|
||||
color: #1382CE;
|
||||
background: #FFFF99;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Center text, used in the over views cells that contain message level counts */
|
||||
.textCentered
|
||||
{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* The message cells in message tables should take up all avaliable space */
|
||||
.messageCell
|
||||
{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Padding around the content after the h1 */
|
||||
#content
|
||||
{
|
||||
padding: 0px 12px 12px 12px;
|
||||
}
|
||||
|
||||
/* The overview table expands to width, with a max width of 97% */
|
||||
#overview table
|
||||
{
|
||||
width: auto;
|
||||
max-width: 75%;
|
||||
}
|
||||
|
||||
/* The messages tables are always 97% width */
|
||||
#messages table
|
||||
{
|
||||
width: 97%;
|
||||
}
|
||||
@@ -0,0 +1,558 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl='urn:schemas-microsoft-com:xslt'>
|
||||
<xsl:output omit-xml-declaration="yes" />
|
||||
|
||||
<!-- Keys -->
|
||||
<xsl:key name="ProjectKey" match="Event" use="@Project" />
|
||||
|
||||
<!-- String split template -->
|
||||
<xsl:template name="SplitString">
|
||||
<xsl:param name="source" select="''" />
|
||||
<xsl:param name="separator" select="','" />
|
||||
<xsl:if test="not($source = '' or $separator = '')">
|
||||
<xsl:variable name="head" select="substring-before(concat($source, $separator), $separator)" />
|
||||
<xsl:variable name="tail" select="substring-after($source, $separator)" />
|
||||
<part>
|
||||
<xsl:value-of select="$head"/>
|
||||
</part>
|
||||
<xsl:call-template name="SplitString">
|
||||
<xsl:with-param name="source" select="$tail" />
|
||||
<xsl:with-param name="separator" select="$separator" />
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Intermediate Templates -->
|
||||
<xsl:template match="UpgradeReport" mode="ProjectOverviewXML">
|
||||
<Projects>
|
||||
<xsl:for-each select="Event[generate-id(.) = generate-id(key('ProjectKey', @Project))]">
|
||||
<Project>
|
||||
<xsl:variable name="pNode" select="current()" />
|
||||
<xsl:variable name="errorCount" select="count(../Event[@Project = current()/@Project and @ErrorLevel=2])" />
|
||||
<xsl:variable name="warningCount" select="count(../Event[@Project = current()/@Project and @ErrorLevel=1])" />
|
||||
<xsl:variable name="messageCount" select="count(../Event[@Project = current()/@Project and @ErrorLevel=0])" />
|
||||
<xsl:variable name="pathSplitSeparator">
|
||||
<xsl:text>\</xsl:text>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="projectName">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@Project = ''">Solution</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="@Project"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:attribute name="IsSolution">
|
||||
<xsl:value-of select="@Project = ''"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="Project">
|
||||
<xsl:value-of select="$projectName"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="ProjectDisplayName">
|
||||
|
||||
<xsl:variable name="localProjectName" select="@Project" />
|
||||
|
||||
<!-- Sometimes it is possible to have project name set to a path over a real project name,
|
||||
we split the string on '\' and if we end up with >1 part in the resulting tokens set
|
||||
we format the ProjectDisplayName as ..\prior\last -->
|
||||
<xsl:variable name="pathTokens">
|
||||
<xsl:call-template name="SplitString">
|
||||
<xsl:with-param name="source" select="$localProjectName" />
|
||||
<xsl:with-param name="separator" select="$pathSplitSeparator" />
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="count(msxsl:node-set($pathTokens)/part) > 1">
|
||||
<xsl:value-of select="concat('..', $pathSplitSeparator, msxsl:node-set($pathTokens)/part[last() - 1], $pathSplitSeparator, msxsl:node-set($pathTokens)/part[last()])"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$localProjectName"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="ProjectSafeName">
|
||||
<xsl:value-of select="translate($projectName, '\', '-')"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="Solution">
|
||||
<xsl:value-of select="/UpgradeReport/Properties/Property[@Name='Solution']/@Value"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="Source">
|
||||
<xsl:value-of select="@Source"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="Status">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$errorCount > 0">Error</xsl:when>
|
||||
<xsl:when test="$warningCount > 0">Warning</xsl:when>
|
||||
<xsl:otherwise>Success</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="ErrorCount">
|
||||
<xsl:value-of select="$errorCount" />
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="WarningCount">
|
||||
<xsl:value-of select="$warningCount" />
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="MessageCount">
|
||||
<xsl:value-of select="$messageCount" />
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="TotalCount">
|
||||
<xsl:value-of select="$errorCount + $warningCount + $messageCount"/>
|
||||
</xsl:attribute>
|
||||
<xsl:for-each select="../Event[@Project = $pNode/@Project and @ErrorLevel=3]">
|
||||
<ConversionStatus>
|
||||
<xsl:value-of select="@Description"/>
|
||||
</ConversionStatus>
|
||||
</xsl:for-each>
|
||||
<Messages>
|
||||
<xsl:for-each select="../Event[@Project = $pNode/@Project and @ErrorLevel<3]">
|
||||
<Message>
|
||||
<xsl:attribute name="Level">
|
||||
<xsl:value-of select="@ErrorLevel" />
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="Status">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@ErrorLevel = 0">Message</xsl:when>
|
||||
<xsl:when test="@ErrorLevel = 1">Warning</xsl:when>
|
||||
<xsl:when test="@ErrorLevel = 2">Error</xsl:when>
|
||||
<xsl:otherwise>Message</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="Source">
|
||||
<xsl:value-of select="@Source"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="Message">
|
||||
<xsl:value-of select="@Description"/>
|
||||
</xsl:attribute>
|
||||
</Message>
|
||||
</xsl:for-each>
|
||||
</Messages>
|
||||
</Project>
|
||||
</xsl:for-each>
|
||||
</Projects>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<!-- Project Overview template -->
|
||||
<xsl:template match="Projects" mode="ProjectOverview">
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th _locID="ProjectTableHeader">Project</th>
|
||||
<th _locID="PathTableHeader">Path</th>
|
||||
<th _locID="ErrorsTableHeader">Errors</th>
|
||||
<th _locID="WarningsTableHeader">Warnings</th>
|
||||
<th _locID="MessagesTableHeader">Messages</th>
|
||||
</tr>
|
||||
|
||||
<xsl:for-each select="Project">
|
||||
|
||||
<xsl:sort select="@ErrorCount" order="descending" />
|
||||
<xsl:sort select="@WarningCount" order="descending" />
|
||||
<!-- Always make solution last within a group -->
|
||||
<xsl:sort select="@IsSolution" order="ascending" />
|
||||
<xsl:sort select="@ProjectSafeName" order="ascending" />
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<img width="16" height="16">
|
||||
<xsl:attribute name="src">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@Status = 'Error'">_UpgradeReport_Files\UpgradeReport_Error.png</xsl:when>
|
||||
<xsl:when test="@Status = 'Warning'">_UpgradeReport_Files\UpgradeReport_Warning.png</xsl:when>
|
||||
<xsl:when test="@Status = 'Success'">_UpgradeReport_Files\UpgradeReport_Success.png</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="alt">
|
||||
<xsl:value-of select="@Status" />
|
||||
</xsl:attribute>
|
||||
</img>
|
||||
</td>
|
||||
<td>
|
||||
<strong>
|
||||
<a>
|
||||
<xsl:attribute name="href">
|
||||
<xsl:value-of select="concat('#', @ProjectSafeName)"/>
|
||||
</xsl:attribute>
|
||||
<xsl:choose>
|
||||
<xsl:when test="@ProjectDisplayName = ''">
|
||||
<span _locID="OverviewSolutionSpan">Solution</span>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="@ProjectDisplayName" />
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</a>
|
||||
</strong>
|
||||
</td>
|
||||
<td>
|
||||
<xsl:value-of select="@Source" />
|
||||
</td>
|
||||
<td class="textCentered">
|
||||
<a>
|
||||
<xsl:if test="@ErrorCount > 0">
|
||||
<xsl:attribute name="href">
|
||||
<xsl:value-of select="concat('#', @ProjectSafeName, 'Error')"/>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:value-of select="@ErrorCount" />
|
||||
</a>
|
||||
</td>
|
||||
<td class="textCentered">
|
||||
<a>
|
||||
<xsl:if test="@WarningCount > 0">
|
||||
<xsl:attribute name="href">
|
||||
<xsl:value-of select="concat('#', @ProjectSafeName, 'Warning')"/>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:value-of select="@WarningCount" />
|
||||
</a>
|
||||
</td>
|
||||
<td class="textCentered">
|
||||
<a href="#">
|
||||
<xsl:if test="@MessageCount > 0">
|
||||
<xsl:attribute name="onclick">
|
||||
<xsl:variable name="apos">
|
||||
<xsl:text>'</xsl:text>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="JS" select="concat('ScrollToFirstVisibleMessage(', $apos, @ProjectSafeName, $apos, ')')" />
|
||||
<xsl:value-of select="concat($JS, '; return false;')"/>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:value-of select="@MessageCount" />
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Show messages row -->
|
||||
<xsl:template match="Project" mode="ProjectShowMessages">
|
||||
<tr>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="concat('MessageRowHeaderShow', @ProjectSafeName)"/>
|
||||
</xsl:attribute>
|
||||
<td>
|
||||
<img width="16" height="16" src="_UpgradeReport_Files\UpgradeReport_Information.png" />
|
||||
</td>
|
||||
<td class="messageCell">
|
||||
<xsl:variable name="apos">
|
||||
<xsl:text>'</xsl:text>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="toggleRowsJS" select="concat('ToggleMessageVisibility(', $apos, @ProjectSafeName, $apos, ')')" />
|
||||
|
||||
<a _locID="ShowAdditionalMessages" href="#">
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="concat(@ProjectSafeName, 'Message')"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="onclick">
|
||||
<xsl:value-of select="concat($toggleRowsJS, '; return false;')"/>
|
||||
</xsl:attribute>
|
||||
Show <xsl:value-of select="@MessageCount" /> additional messages
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Hide messages row -->
|
||||
<xsl:template match="Project" mode="ProjectHideMessages">
|
||||
<tr style="display: none">
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="concat('MessageRowHeaderHide', @ProjectSafeName)"/>
|
||||
</xsl:attribute>
|
||||
<td>
|
||||
<img width="16" height="16" src="_UpgradeReport_Files\UpgradeReport_Information.png" />
|
||||
</td>
|
||||
<td class="messageCell">
|
||||
<xsl:variable name="apos">
|
||||
<xsl:text>'</xsl:text>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="toggleRowsJS" select="concat('ToggleMessageVisibility(', $apos, @ProjectSafeName, $apos, ')')" />
|
||||
|
||||
<a _locID="HideAdditionalMessages" href="#">
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="concat(@ProjectSafeName, 'Message')"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="onclick">
|
||||
<xsl:value-of select="concat($toggleRowsJS, '; return false;')"/>
|
||||
</xsl:attribute>
|
||||
Hide <xsl:value-of select="@MessageCount" /> additional messages
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Message row templates -->
|
||||
<xsl:template match="Message">
|
||||
<tr>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="concat(@Status, 'RowClass', ../../@ProjectSafeName)"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<xsl:if test="@Level = 0">
|
||||
<xsl:attribute name="style">display: none</xsl:attribute>
|
||||
</xsl:if>
|
||||
<td>
|
||||
<a>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="concat(../../@ProjectSafeName, @Status)"/>
|
||||
</xsl:attribute>
|
||||
</a>
|
||||
<img width="16" height="16">
|
||||
<xsl:attribute name="src">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@Status = 'Error'">_UpgradeReport_Files\UpgradeReport_Error.png</xsl:when>
|
||||
<xsl:when test="@Status = 'Warning'">_UpgradeReport_Files\UpgradeReport_Warning.png</xsl:when>
|
||||
<xsl:when test="@Status = 'Message'">_UpgradeReport_Files\UpgradeReport_Information.png</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="alt">
|
||||
<xsl:value-of select="@Status" />
|
||||
</xsl:attribute>
|
||||
</img>
|
||||
</td>
|
||||
<td class="messageCell">
|
||||
<strong>
|
||||
<xsl:value-of select="@Source"/>:
|
||||
</strong>
|
||||
<span>
|
||||
<xsl:value-of select="@Message"/>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Project Details Template -->
|
||||
<xsl:template match="Projects" mode="ProjectDetails">
|
||||
|
||||
<xsl:for-each select="Project">
|
||||
<xsl:sort select="@ErrorCount" order="descending" />
|
||||
<xsl:sort select="@WarningCount" order="descending" />
|
||||
<!-- Always make solution last within a group -->
|
||||
<xsl:sort select="@IsSolution" order="ascending" />
|
||||
<xsl:sort select="@ProjectSafeName" order="ascending" />
|
||||
|
||||
<a>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="@ProjectSafeName"/>
|
||||
</xsl:attribute>
|
||||
</a>
|
||||
<xsl:choose>
|
||||
<xsl:when test="@ProjectDisplayName = ''">
|
||||
<h3 _locID="ProjectDisplayNameHeader">Solution</h3>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<h3>
|
||||
<xsl:value-of select="@ProjectDisplayName"/>
|
||||
</h3>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<xsl:attribute name="id">
|
||||
<xsl:value-of select="concat(@ProjectSafeName, 'HeaderRow')"/>
|
||||
</xsl:attribute>
|
||||
<th></th>
|
||||
<th class="messageCell" _locID="MessageTableHeader">Message</th>
|
||||
</tr>
|
||||
|
||||
<!-- Errors and warnings -->
|
||||
<xsl:for-each select="Messages/Message[@Level > 0]">
|
||||
<xsl:sort select="@Level" order="descending" />
|
||||
<xsl:apply-templates select="." />
|
||||
</xsl:for-each>
|
||||
|
||||
<xsl:if test="@MessageCount > 0">
|
||||
<xsl:apply-templates select="." mode="ProjectShowMessages" />
|
||||
</xsl:if>
|
||||
|
||||
<!-- Messages -->
|
||||
<xsl:for-each select="Messages/Message[@Level = 0]">
|
||||
<xsl:apply-templates select="." />
|
||||
</xsl:for-each>
|
||||
|
||||
<xsl:choose>
|
||||
<!-- Additional row as a 'place holder' for 'Show/Hide' additional messages -->
|
||||
<xsl:when test="@MessageCount > 0">
|
||||
<xsl:apply-templates select="." mode="ProjectHideMessages" />
|
||||
</xsl:when>
|
||||
<!-- No messages at all, show blank row -->
|
||||
<xsl:when test="@TotalCount = 0">
|
||||
<tr>
|
||||
<td>
|
||||
<img width="16" height="16" src="_UpgradeReport_Files\UpgradeReport_Information.png" />
|
||||
</td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="@ProjectDisplayName = ''">
|
||||
<td class="messageCell" _locID="NoMessagesRow2">
|
||||
Solution logged no messages.
|
||||
</td>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<td class="messageCell" _locID="NoMessagesRow">
|
||||
<xsl:value-of select="@ProjectDisplayName" /> logged no messages.
|
||||
</td>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</tr>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</table>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Document, matches "UpgradeReport" -->
|
||||
<xsl:template match="UpgradeReport">
|
||||
<!-- Output doc type the 'Mark of the web' which disabled prompting to run JavaScript from local HTML Files in IE -->
|
||||
<!-- NOTE: The whitespace around the 'Mark of the web' is important it must be exact -->
|
||||
<xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html>
|
||||
<!-- saved from url=(0014)about:internet -->
|
||||
]]>
|
||||
</xsl:text>
|
||||
<html>
|
||||
<head>
|
||||
<meta content="en-us" http-equiv="Content-Language" />
|
||||
<meta content="text/html; charset=utf-16" http-equiv="Content-Type" />
|
||||
<link type="text/css" rel="stylesheet" href="_UpgradeReport_Files\UpgradeReport.css" />
|
||||
<title _locID="ConversionReport0">
|
||||
Migration Report
|
||||
</title>
|
||||
|
||||
<script type="text/javascript" language="javascript">
|
||||
<xsl:text disable-output-escaping="yes">
|
||||
<![CDATA[
|
||||
|
||||
// Startup
|
||||
// Hook up the the loaded event for the document/window, to linkify the document content
|
||||
var startupFunction = function() { linkifyElement("messages"); };
|
||||
|
||||
if(window.attachEvent)
|
||||
{
|
||||
window.attachEvent('onload', startupFunction);
|
||||
}
|
||||
else if (window.addEventListener)
|
||||
{
|
||||
window.addEventListener('load', startupFunction, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
document.addEventListener('load', startupFunction, false);
|
||||
}
|
||||
|
||||
// Toggles the visibility of table rows with the specified name
|
||||
function toggleTableRowsByName(name)
|
||||
{
|
||||
var allRows = document.getElementsByTagName('tr');
|
||||
for (i=0; i < allRows.length; i++)
|
||||
{
|
||||
var currentName = allRows[i].getAttribute('name');
|
||||
if(!!currentName && currentName.indexOf(name) == 0)
|
||||
{
|
||||
var isVisible = allRows[i].style.display == '';
|
||||
isVisible ? allRows[i].style.display = 'none' : allRows[i].style.display = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function scrollToFirstVisibleRow(name)
|
||||
{
|
||||
var allRows = document.getElementsByTagName('tr');
|
||||
for (i=0; i < allRows.length; i++)
|
||||
{
|
||||
var currentName = allRows[i].getAttribute('name');
|
||||
var isVisible = allRows[i].style.display == '';
|
||||
if(!!currentName && currentName.indexOf(name) == 0 && isVisible)
|
||||
{
|
||||
allRows[i].scrollIntoView(true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Linkifies the specified text content, replaces candidate links with html links
|
||||
function linkify(text)
|
||||
{
|
||||
if(!text || 0 === text.length)
|
||||
{
|
||||
return text;
|
||||
}
|
||||
|
||||
// Find http, https and ftp links and replace them with hyper links
|
||||
var urlLink = /(http|https|ftp)\:\/\/[a-zA-Z0-9\-\.]+(:[a-zA-Z0-9]*)?\/?([a-zA-Z0-9\-\._\?\,\/\\\+&%\$#\=~;\{\}])*/gi;
|
||||
|
||||
return text.replace(urlLink, '<a href="$&">$&</a>') ;
|
||||
}
|
||||
|
||||
// Linkifies the specified element by ID
|
||||
function linkifyElement(id)
|
||||
{
|
||||
var element = document.getElementById(id);
|
||||
if(!!element)
|
||||
{
|
||||
element.innerHTML = linkify(element.innerHTML);
|
||||
}
|
||||
}
|
||||
|
||||
function ToggleMessageVisibility(projectName)
|
||||
{
|
||||
if(!projectName || 0 === projectName.length)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
toggleTableRowsByName("MessageRowClass" + projectName);
|
||||
toggleTableRowsByName('MessageRowHeaderShow' + projectName);
|
||||
toggleTableRowsByName('MessageRowHeaderHide' + projectName);
|
||||
}
|
||||
|
||||
function ScrollToFirstVisibleMessage(projectName)
|
||||
{
|
||||
if(!projectName || 0 === projectName.length)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// First try the 'Show messages' row
|
||||
if(!scrollToFirstVisibleRow('MessageRowHeaderShow' + projectName))
|
||||
{
|
||||
// Failed to find a visible row for 'Show messages', try an actual message row
|
||||
scrollToFirstVisibleRow('MessageRowClass' + projectName);
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</xsl:text>
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<h1 _locID="ConversionReport">
|
||||
Migration Report - <xsl:value-of select="Properties/Property[@Name='Solution']/@Value"/>
|
||||
</h1>
|
||||
|
||||
<div id="content">
|
||||
<h2 _locID="OverviewTitle">Overview</h2>
|
||||
<xsl:variable name="projectOverview">
|
||||
<xsl:apply-templates select="self::node()" mode="ProjectOverviewXML" />
|
||||
</xsl:variable>
|
||||
|
||||
<div id="overview">
|
||||
<xsl:apply-templates select="msxsl:node-set($projectOverview)/*" mode="ProjectOverview" />
|
||||
</div>
|
||||
|
||||
<h2 _locID="SolutionAndProjectsTitle">Solution and projects</h2>
|
||||
|
||||
<div id="messages">
|
||||
<xsl:apply-templates select="msxsl:node-set($projectOverview)/*" mode="ProjectDetails" />
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 397 B |
Binary file not shown.
|
After Width: | Height: | Size: 338 B |
Binary file not shown.
|
After Width: | Height: | Size: 381 B |
Binary file not shown.
|
After Width: | Height: | Size: 292 B |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,16 @@
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\x64\Debug\Demo.exe
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\x64\Debug\Demo.pdb
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\Debug\ResolveAssemblyReference.cache
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\Debug\Demo.Form1.resources
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\Debug\Demo.Properties.Resources.resources
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\Debug\Demo2.csproj.GenerateResource.Cache
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\Debug\Demo.exe
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\Debug\Demo.pdb
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\2.0\Demo2\obj\x64\Debug\Demo.exe
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\2.0\Demo2\obj\x64\Debug\Demo.pdb
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\x64\Debug\Demo.exe
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\x64\Debug\Demo.pdb
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\2.0\Demo2\obj\x64\Debug\ResolveAssemblyReference.cache
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\2.0\Demo2\obj\x64\Debug\Demo.Form1.resources
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\2.0\Demo2\obj\x64\Debug\Demo.Properties.Resources.resources
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\2.0\Demo2\obj\x64\Debug\Demo2.csproj.GenerateResource.Cache
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo\obj\x64\GOLD\ResolveAssemblyReference.cache
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo\obj\x64\GOLD\Demo.Form1.resources
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo\obj\x64\GOLD\Demo.Properties.Resources.resources
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo\obj\x64\GOLD\Demo.csproj.GenerateResource.Cache
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\x64\Release\Demo.exe
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\x64\Release\Demo.pdb
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\Release\ResolveAssemblyReference.cache
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\Release\Demo.Form1.resources
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\Release\Demo.Properties.Resources.resources
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\Release\Demo2.csproj.GenerateResource.Cache
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\Release\Demo.exe
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\Release\Demo.pdb
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,10 @@
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\bin\x64\STD_IMAGE\Demo.exe
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\bin\x64\STD_IMAGE\Demo.pdb
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\bin\x64\STD_IMAGE\libzkfpcsharp.dll
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\bin\x64\STD_IMAGE\libzkfpcsharp.pdb
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\STD_IMAGE\ResolveAssemblyReference.cache
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\STD_IMAGE\Demo.Form1.resources
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\STD_IMAGE\Demo.Properties.Resources.resources
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\STD_IMAGE\Demo2.csproj.GenerateResource.Cache
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\STD_IMAGE\Demo.exe
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x64\STD_IMAGE\Demo.pdb
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,32 @@
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\Debug\Demo.exe
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\Debug\Demo.pdb
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x86\Debug\ResolveAssemblyReference.cache
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x86\Debug\Demo.Form1.resources
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x86\Debug\Demo.Properties.Resources.resources
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x86\Debug\Demo2.csproj.GenerateResource.Cache
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x86\Debug\Demo.exe
|
||||
E:\Workspaces\zkteco svn\libfpsensor\trunk\libfpsensor\CSharp\Demo2\obj\x86\Debug\Demo.pdb
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20160918\ZKFinger SDK 5.0\C#\2.0\Demo2\obj\x86\Debug\Demo.exe
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20160918\ZKFinger SDK 5.0\C#\2.0\Demo2\obj\x86\Debug\Demo.pdb
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20160918\ZKFinger SDK 5.0\C#\Debug\Demo.exe
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20160918\ZKFinger SDK 5.0\C#\Debug\Demo.pdb
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20160918\ZKFinger SDK 5.0\C#\2.0\Demo2\obj\x86\Debug\ResolveAssemblyReference.cache
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20160918\ZKFinger SDK 5.0\C#\2.0\Demo2\obj\x86\Debug\Demo.Form1.resources
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20160918\ZKFinger SDK 5.0\C#\2.0\Demo2\obj\x86\Debug\Demo.Properties.Resources.resources
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20160918\ZKFinger SDK 5.0\C#\2.0\Demo2\obj\x86\Debug\Demo2.csproj.GenerateResource.Cache
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\2.0\Demo2\obj\x86\Debug\Demo.exe
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\2.0\Demo2\obj\x86\Debug\Demo.pdb
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\Debug\Demo.exe
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\Debug\Demo.pdb
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\2.0\Demo2\obj\x86\Debug\ResolveAssemblyReference.cache
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\2.0\Demo2\obj\x86\Debug\Demo.Form1.resources
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\2.0\Demo2\obj\x86\Debug\Demo.Properties.Resources.resources
|
||||
E:\全部安装包\NEW\版本发布\新ZKFinger SDK\20161121\国内\ZKFinger SDK 5.0.0.16\C#\2.0\Demo2\obj\x86\Debug\Demo2.csproj.GenerateResource.Cache
|
||||
C:\Users\ZK\Desktop\Material\ZKFinger SDK 5.3 Lite\C#\Demo2\obj\x86\Debug\Demo.exe
|
||||
C:\Users\ZK\Desktop\Material\ZKFinger SDK 5.3 Lite\C#\Demo2\obj\x86\Debug\Demo.pdb
|
||||
C:\Users\ZK\Desktop\Material\ZKFinger SDK 5.3 Lite\Debug\Demo.exe
|
||||
C:\Users\ZK\Desktop\Material\ZKFinger SDK 5.3 Lite\Debug\Demo.pdb
|
||||
C:\Users\ZK\Desktop\Material\ZKFinger SDK 5.3 Lite\C#\Demo2\obj\x86\Debug\Demo2.csprojResolveAssemblyReference.cache
|
||||
C:\Users\ZK\Desktop\Material\ZKFinger SDK 5.3 Lite\C#\Demo2\obj\x86\Debug\Demo.Form1.resources
|
||||
C:\Users\ZK\Desktop\Material\ZKFinger SDK 5.3 Lite\C#\Demo2\obj\x86\Debug\Demo.Properties.Resources.resources
|
||||
C:\Users\ZK\Desktop\Material\ZKFinger SDK 5.3 Lite\C#\Demo2\obj\x86\Debug\Demo2.csproj.GenerateResource.Cache
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user