1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327
| using System;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;
namespace APP
{
[StructLayout(LayoutKind.Sequential)]
unsafe internal struct PRINTINFO
{
internal uint dwCopies;// Dans la documentation du SDK en C++ j'ai comme type de variable DWORD
internal uint dwPrintInterval;
internal uint dwPrintSpeed;
internal uint dwPageID;
internal uint dwJobID;
internal PRINT_IMGINFO pii; // type PRINT_IMGINFO
internal PRINT_PAPERINFO ppi; // type PRINT_PAPERINFO
internal PRINT_CCORRECTINFO lppcc;// type LP_PRINT_CCORRECTINFO
internal PRINT_OVLINFO lppol; // type LP_PRINT_OVLINFO
internal PRINT_OPTION lppop; //LP_PRINT_OPTION
internal IntPtr lpReserve1; //LPVOID
internal IntPtr lpReserve2; //LPVOID
internal uint dwReserve1; //DWORD
internal uint dwReserve2;
}
[StructLayout(LayoutKind.Sequential)]
internal struct PRINT_IMGINFO
{
internal uint dwSrcType; //DWORD
internal uint dwResolutionType;//DWORD
internal uint dwBandHeight; //DWORD
internal uint dwSrcWidthPixels; //DWORD
internal uint dwSrcHeightPixels; //DWORD
internal uint dwRotate; //DWORD
}
[StructLayout(LayoutKind.Sequential)]
internal struct PRINT_PAPERINFO
{
internal uint dwMediaType; //DWORD
internal uint dwUnit;//DWORD
internal uint dwPaperWidth;//DWORD
internal uint dwPaperHeight; //DWORD
internal uint dwTopMargin;//DWORD
internal uint dwBottomMargin; // DWORD
internal uint dwLeftMargin; // DWORD
internal uint dwRightMargin; // DWORD
internal uint dwGapMarkLength; //DWORD
internal uint dwLeftGap; // DWORD
internal uint dwRightGap; // DWORD
internal uint dwPaperID; // DWORD
internal uint dwEdgelessFlag; // DWORD
}
[StructLayout(LayoutKind.Sequential)]
unsafe internal struct PRINT_CCORRECTINFO
{
internal uint dwMatchingType; // DWORD
internal uint dwBrightness; // DWORD
internal uint dwMediaType; // DWORD
internal uint dwHalftone; // DWORD
internal uint dwColorExt; // DWORD
internal PRINT_CC_REG lppccreg; // LP_PRINT_CC_REG
internal PRINT_CC_CONDITION lppcccnd; // LP_PRINT_CC_CONDITION
}
[StructLayout(LayoutKind.Sequential)]
internal struct PRINT_CC_REG
{
internal UCMYK_VAL cmykPlainReg; // UCMYK_VA
internal UCMYK_VAL cmykPluralReg; // UCMYK_VA
}
[StructLayout(LayoutKind.Sequential)]
struct UCMYK_VAL
{
internal byte byK; // BYTE
internal byte byC; // BYTE
internal byte byM; // BYTE
internal byte byY; // BYTE
}
[StructLayout(LayoutKind.Sequential)]
internal struct PRINT_CC_CONDITION
{
internal uint dwSingleType; // DWORD
internal uint dwLevelCorrect; // DWORD
internal uint dwSharpness; // DWORD
internal int lBalanceCyan; // LONG
internal int lBalanceMagenta; // LONG
internal int lBalanceYellow; //LONG
internal int lBalanceBlack; // LONG
internal int lCCDensity; // LONG
internal int lContrast; // LONG
}
[StructLayout(LayoutKind.Sequential)]
unsafe internal struct PRINT_OVLINFO
{
internal uint dwOverlayType; // DWORD
internal fixed char szFormPath[256]; //TCHAR
internal uint dwFormID; // DWORD
internal bool bFormIdFixed; // BOOL
}
[StructLayout(LayoutKind.Sequential)]
unsafe internal struct PRINT_OPTION
{
internal PRINT_CUTINFO lppct; // LP_PRINT_CUTINFO
internal uint dwFormFeed; // DWORD
internal IntPtr lpvReserve1; // LPVOID
internal IntPtr lpvReserve2; // LPVOID
}
[StructLayout(LayoutKind.Sequential)]
internal struct PRINT_CUTINFO
{
internal uint dwCutType; // DWORD
internal uint dwCutByPageNum; // DWORD
internal uint dwCutInPageNum; // DWORD
internal uint dwCutConsNum; // DWORD
}
[StructLayout(LayoutKind.Sequential)]
internal struct PRINTCMD
{
internal byte[] lpbyCmdData; //OUT LPBYTE
internal uint dwDataSize; //OUT DWORD
}
[StructLayout(LayoutKind.Sequential)]
internal struct STATUS_INFO
{
internal uint dwSize; // DWORD
internal uint dwMainStatus; // DWORD
internal ushort wWarningStatus; // WORD
internal ushort wErrorStatus; // WORD
internal ushort wFatalStatus; // WORD
internal PAGEJOB_INFO cpi; // PAGEJOB_INFO
internal IntPtr lpcii; // LPVOID
}
[StructLayout(LayoutKind.Sequential)]
internal struct STATUS_INFO_2
{
internal uint dwSize; // DWORD
internal uint dwMainStatus; // DWORD
internal ushort wWarningStatus; // WORD
internal ushort wErrorStatus; // WORD
internal ushort wFatalStatus; // WORD
internal PAGEJOB_INFO cpi; // PAGEJOB_INFO
internal IntPtr lpcii; // LPVOID
internal uint dwSpeed; // DWORD
internal uint dwRemainNum; // DWORD
internal PRNPRG_INFO cppi; // PRNPRG_INFO
}
[StructLayout(LayoutKind.Sequential)]
internal struct STATUS_INFO_3
{
internal uint dwSize; // DWORD
internal uint dwMainStatus; // DWORD
internal ushort wWarningStatus; // WORD
internal ushort wErrorStatus; // WORD
internal ushort wFatalStatus; // WORD
internal PAGEJOB_INFO cpi; // PAGEJOB_INFO
internal IntPtr lpcii; // LPVOID
internal uint dwSpeed; // DWORD
internal uint dwRemainNum; // DWORD
internal PRNPRG_INFO cppi; // PRNPRG_INFO
internal uint dwMyHostID; // DWORD
internal JOBHIST cjh; // JOBHIST
}
[StructLayout(LayoutKind.Sequential)]
internal struct PAGEJOB_INFO
{
internal uint dwSerialCount; // DWORD
internal ushort wTotalPage; // WORD
internal ushort wMadeCount; // WORD
internal ushort wSetCount; // WORD
internal ushort wJobStatus; // WORD
}
[StructLayout(LayoutKind.Sequential)]
internal struct INK_INFO_CMYK
{
internal byte byBlackInk; // BYTE
internal byte byCyanInk; //BYTE
internal byte byMagentaInk; // BYTE
internal byte byYellowInk; // BYTE
internal byte byWasteInk; // BYTE
internal byte byReserved; // BYTE
}
[StructLayout(LayoutKind.Sequential)]
internal struct PRNPRG_INFO
{
internal WORD wTotalStep; // Total number of steps for a operation
internal WORD wCurrentStep; // Current step
}
[StructLayout(LayoutKind.Sequential)]
internal struct JOBHIST
{
internal DWORD dwJhHostID; // Host ID which sent this job
internal DWORD dwJobID; // Job ID for this job
internal WORD wPrntCount; // Number of printed sheet for this job
internal WORD wReserve;
}
[StructLayout(LayoutKind.Sequential)]
unsafe internal struct SETTING_INFO
{
internal SLPTM_INFO lpcslp; // LP_SLPTM_INFO
internal HEADADJ_INFO_1 lpchai; // LPVOID
internal uint[] lpdwDevInfo; // LPDWORD
internal IntPtr lpclpi; // LPVOID
}
[StructLayout(LayoutKind.Sequential)]
internal struct SLPTM_INFO
{
internal uint dwSleepTime; // DWORD
internal uint dwDeepTime; // DWORD
}
[StructLayout(LayoutKind.Sequential)]
internal struct HEADADJ_INFO_1
{
internal CMYK_VAL cmykV; // CMYK_VAL
internal CMYK_VAL cmykH; // CMYK_VAL
internal uint dwHeadAdjType; // DWORD
}
[StructLayout(LayoutKind.Sequential)]
internal struct CMYK_VAL
{
internal byte cK; //char
internal byte cC; //char
internal byte cM; //char
internal byte cY; //char
}
[StructLayout(LayoutKind.Sequential)]
internal struct DEVICE_INFO
{
internal ushort wParticulSet; //WORD
internal byte byOptionSet; //BYTE
internal byte byDevAbility;//BYTE
}
[StructLayout(LayoutKind.Sequential)]
internal struct LATPOS_INFO
{
int iCutPos; // int
int iStopPos; // int
}
[StructLayout(LayoutKind.Sequential)]
internal struct END_INFO
{
internal uint dwCmdType; // DWORD
internal uint dwEndStatus; // DWORD
}
[StructLayout(LayoutKind.Sequential)]
internal struct RF_INFO
{
internal int iSetRFIDNum; //int
internal RFID_SET crs; // RFID_SET
}
[StructLayout(LayoutKind.Sequential)]
internal struct RFID_SET
{
internal byte byPageId; // BYTE
internal byte byUniqueId; // BYTE
}
[StructLayout(LayoutKind.Sequential)]
internal struct DATA_INFO
{
internal uint dwMainteId; // DWORD
internal int iGetDataSize; // int
}
[StructLayout(LayoutKind.Sequential)]
unsafe internal struct ORGPOS_INFO
{
internal TK_INFO lpTKGap1; //LPTK_INFO
internal TK_INFO lpTKGap2; //LPTK_INFO
}
[StructLayout(LayoutKind.Sequential)]
internal struct TK_INFO
{
internal int iTPass_TKNum; // int
internal int iReflec_TKNum; // int
}
[StructLayout(LayoutKind.Sequential)]
internal struct SLANTADJ_INFO_2
{
internal CMYK_VAL cmykSln1; // CMYK_VAL
internal CMYK_VAL cmykSln2; // CMYK_VAL
internal uint dwReserved; // DWORD
}
[SuppressUnmanagedCodeSecurityAttribute]
internal class NativeMethods
{
[DllImport("mydll.dll", CharSet = CharSet.Unicode, SetLastError = true, EntryPoint = "GetDefaultPrintInfo")]
internal static extern int GetDefaultPrintInfo(string lptPrinterName, out PRINTINFO lpPrtInfo);
[DllImport("mydll.dll", CharSet = CharSet.Unicode, SetLastError = true, EntryPoint = "CreatePrintHandle")]
internal static extern IntPtr CreatePrintHandle(string lptPrinterName, IntPtr lpPrtInfo);
[DllImport("mydll.dll", CharSet = CharSet.Unicode, SetLastError = true, EntryPoint = "CreatePrintHandle")]
internal static extern IntPtr CreatePrintHandle(string lptPrinterName, out PRINTINFO lpPrtInfo);
[DllImport("mydll.dll", CharSet = CharSet.Unicode, SetLastError = true, EntryPoint = "StartJobCmd")]
internal static extern int StartJobCmd(IntPtr hPrinter, PRINTCMD printcmd);
[DllImport("mydll.dll", CharSet = CharSet.Unicode, SetLastError = true, EntryPoint = "CreateJobHandle")]
internal static extern IntPtr CreateJobHandle(string lptPrinterName, IntPtr lpPrtInfo);
[DllImport("mydll.dll", CharSet = CharSet.Unicode, SetLastError = true, EntryPoint = "OpenPort")]
internal static extern IntPtr OpenPort(string lptPrinterName, string lptPortName, bool bAttribute);
}
} |
Partager