Advertisement
Guest User

Untitled

a guest
Jun 17th, 2016
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. unit winsp;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows ;
  7.  
  8. const
  9. szAbortPrinter                        = 'AbortPrinter';
  10. szAddFormA                            = 'AddFormA';
  11. szAddFormW                            = 'AddFormW';
  12. szAddJobA                             = 'AddJobA';
  13. szAddJobW                             = 'AddJobW';
  14. szAddMonitorA                         = 'AddMonitorA';
  15. szAddMonitorW                         = 'AddMonitorW';
  16. szAddPortA                            = 'AddPortA';
  17. szAddPortW                            = 'AddPortW';
  18. szAddPrinterA                         = 'AddPrinterA';
  19. szAddPrinterW                         = 'AddPrinterW';
  20. szAddPrinterConnectionA               = 'AddPrinterConnectionA';
  21. szAddPrinterConnectionW               = 'AddPrinterConnectionW';
  22. szAddPrinterDriverA                   = 'AddPrinterDriverA';
  23. szAddPrinterDriverW                   = 'AddPrinterDriverW';
  24. szAddPrintProcessorA                  = 'AddPrintProcessorA';
  25. szAddPrintProcessorW                  = 'AddPrintProcessorW';
  26. szAddPrintProvidorA                   = 'AddPrintProvidorA';
  27. szAddPrintProvidorW                   = 'AddPrintProvidorW';
  28. szAdvancedDocumentPropertiesA         = 'AdvancedDocumentPropertiesA';
  29. szAdvancedDocumentPropertiesW         = 'AdvancedDocumentPropertiesW';
  30. szClosePrinter                        = 'ClosePrinter';
  31. szConfigurePortA                      = 'ConfigurePortA';
  32. szConfigurePortW                      = 'ConfigurePortW';
  33. szConnectToPrinterDlg                 = 'ConnectToPrinterDlg';
  34. szDeleteFormA                         = 'DeleteFormA';
  35. szDeleteFormW                         = 'DeleteFormW';
  36. szDeleteMonitorA                      = 'DeleteMonitorA';
  37. szDeleteMonitorW                      = 'DeleteMonitorW';
  38. szDeletePortA                         = 'DeletePortA';
  39. szDeletePortW                         = 'DeletePortW';
  40. szDeletePrinter                       = 'DeletePrinter';
  41. szDeletePrinterConnectionA            = 'DeletePrinterConnectionA';
  42. szDeletePrinterConnectionW            = 'DeletePrinterConnectionW';
  43. szDeletePrinterDataA                  = 'DeletePrinterDataA';
  44. szDeletePrinterDataW                  = 'DeletePrinterDataW';
  45. szDeletePrinterDriverA                = 'DeletePrinterDriverA';
  46. szDeletePrinterDriverW                = 'DeletePrinterDriverW';
  47. szDeletePrintProcessorA               = 'DeletePrintProcessorA';
  48. szDeletePrintProcessorW               = 'DeletePrintProcessorW';
  49. szDeletePrintProvidorA                = 'DeletePrintProvidorA';
  50. szDeletePrintProvidorW                = 'DeletePrintProvidorW';
  51. szDeviceCapabilitiesA                 = 'DeviceCapabilitiesA';
  52. szDeviceCapabilitiesW                 = 'DeviceCapabilitiesW';
  53. szDocumentPropertiesA                 = 'DocumentPropertiesA';
  54. szDocumentPropertiesW                 = 'DocumentPropertiesW';
  55. szEndDocPrinter                       = 'EndDocPrinter';
  56. szEndPagePrinter                      = 'EndPagePrinter';
  57. szEnumFormsA                          = 'EnumFormsA';
  58. szEnumFormsW                          = 'EnumFormsW';
  59. szEnumJobsA                           = 'EnumJobsA';
  60. szEnumJobsW                           = 'EnumJobsW';
  61. szEnumMonitorsA                       = 'EnumMonitorsA';
  62. szEnumMonitorsW                       = 'EnumMonitorsW';
  63. szEnumPortsA                          = 'EnumPortsA';
  64. szEnumPortsW                          = 'EnumPortsW';
  65. szEnumPrinterDataA                    = 'EnumPrinterDataA';
  66. szEnumPrinterDataW                    = 'EnumPrinterDataW';
  67. szEnumPrinterDriversA                 = 'EnumPrinterDriversA';
  68. szEnumPrinterDriversW                 = 'EnumPrinterDriversW';
  69. szEnumPrintersA                       = 'EnumPrintersA';
  70. szEnumPrintersW                       = 'EnumPrintersW';
  71. szEnumPrintProcessorDatatypesA        = 'EnumPrintProcessorDatatypesA';
  72. szEnumPrintProcessorDatatypesW        = 'EnumPrintProcessorDatatypesW';
  73. szEnumPrintProcessorsA                = 'EnumPrintProcessorsA';
  74. szEnumPrintProcessorsW                = 'EnumPrintProcessorsW';
  75. szFindClosePrinterChangeNotification  = 'FindClosePrinterChangeNotification';
  76. szFindFirstPrinterChangeNotification  = 'FindFirstPrinterChangeNotification';
  77. szFindNextPrinterChangeNotification   = 'FindNextPrinterChangeNotification';
  78. szFreePrinterNotifyInfo               = 'FreePrinterNotifyInfo';
  79. szGetFormA                            = 'GetFormA';
  80. szGetFormW                            = 'GetFormW';
  81. szGetJobA                             = 'GetJobA';
  82. szGetJobW                             = 'GetJobW';
  83. szGetPrinterA                         = 'GetPrinterA';
  84. szGetPrinterW                         = 'GetPrinterW';
  85. szGetPrinterDataA                     = 'GetPrinterDataA';
  86. szGetPrinterDataW                     = 'GetPrinterDataW';
  87. szGetPrinterDriverA                   = 'GetPrinterDriverA';
  88. szGetPrinterDriverW                   = 'GetPrinterDriverW';
  89. szGetPrinterDriverDirectoryA          = 'GetPrinterDriverDirectoryA';
  90. szGetPrinterDriverDirectoryW          = 'GetPrinterDriverDirectoryW';
  91. szGetPrintProcessorDirectoryA         = 'GetPrintProcessorDirectoryA';
  92. szGetPrintProcessorDirectoryW         = 'GetPrintProcessorDirectoryW';
  93. szOpenPrinterA                        = 'OpenPrinterA';
  94. szOpenPrinterW                        = 'OpenPrinterW';
  95. szPrinterMessageBoxA                  = 'PrinterMessageBoxA';
  96. szPrinterMessageBoxW                  = 'PrinterMessageBoxW';
  97. szPrinterProperties                   = 'PrinterProperties';
  98. szReadPrinter                         = 'ReadPrinter';
  99. szResetPrinterA                       = 'ResetPrinterA';
  100. szResetPrinterW                       = 'ResetPrinterW';
  101. szScheduleJob                         = 'ScheduleJob';
  102. szSetFormA                            = 'SetFormA';
  103. szSetFormW                            = 'SetFormW';
  104. szSetJobA                             = 'SetJobA';
  105. szSetJobW                             = 'SetJobW';
  106. szSetPortA                            = 'SetPortA';
  107. szSetPortW                            = 'SetPortW';
  108. szSetPrinterA                         = 'SetPrinterA';
  109. szSetPrinterW                         = 'SetPrinterW';
  110. szSetPrinterDataA                     = 'SetPrinterDataA';
  111. szSetPrinterDataW                     = 'SetPrinterDataW';
  112. szStartDocPrinterA                    = 'StartDocPrinterA';
  113. szStartDocPrinterW                    = 'StartDocPrinterW';
  114. szStartPagePrinter                    = 'StartPagePrinter';
  115. szWaitForPrinterChange                = 'WaitForPrinterChange';
  116. szWritePrinter                        = 'WritePrinter';
  117.  
  118. var
  119. PtrAbortPrinter,
  120. PtrAddFormA,
  121. PtrAddFormW,
  122. PtrAddJobA,
  123. PtrAddJobW,
  124. PtrAddMonitorA,
  125. PtrAddMonitorW,
  126. PtrAddPortA,
  127. PtrAddPortW,
  128. PtrAddPrinterA,
  129. PtrAddPrinterW,
  130. PtrAddPrinterConnectionA,
  131. PtrAddPrinterConnectionW,
  132. PtrAddPrinterDriverA,
  133. PtrAddPrinterDriverW,
  134. PtrAddPrintProcessorA,
  135. PtrAddPrintProcessorW,
  136. PtrAddPrintProvidorA,
  137. PtrAddPrintProvidorW,
  138. PtrAdvancedDocumentPropertiesA,
  139. PtrAdvancedDocumentPropertiesW,
  140. PtrClosePrinter,
  141. PtrConfigurePortA,
  142. PtrConfigurePortW,
  143. PtrConnectToPrinterDlg,
  144. PtrDeleteFormA,
  145. PtrDeleteFormW,
  146. PtrDeleteMonitorA,
  147. PtrDeleteMonitorW,
  148. PtrDeletePortA,
  149. PtrDeletePortW,
  150. PtrDeletePrinter,
  151. PtrDeletePrinterConnectionA,
  152. PtrDeletePrinterConnectionW,
  153. PtrDeletePrinterDataA,
  154. PtrDeletePrinterDataW,
  155. PtrDeletePrinterDriverA,
  156. PtrDeletePrinterDriverW,
  157. PtrDeletePrintProcessorA,
  158. PtrDeletePrintProcessorW,
  159. PtrDeletePrintProvidorA,
  160. PtrDeletePrintProvidorW,
  161. PtrDeviceCapabilitiesA,
  162. PtrDeviceCapabilitiesW,
  163. PtrDocumentPropertiesA,
  164. PtrDocumentPropertiesW,
  165. PtrEndDocPrinter,
  166. PtrEndPagePrinter,
  167. PtrEnumFormsA,
  168. PtrEnumFormsW,
  169. PtrEnumJobsA,
  170. PtrEnumJobsW,
  171. PtrEnumMonitorsA,
  172. PtrEnumMonitorsW,
  173. PtrEnumPortsA,
  174. PtrEnumPortsW,
  175. PtrEnumPrinterDataA,
  176. PtrEnumPrinterDataW,
  177. PtrEnumPrinterDriversA,
  178. PtrEnumPrinterDriversW,
  179. PtrEnumPrintersA,
  180. PtrEnumPrintersW,
  181. PtrEnumPrintProcessorDatatypesA,
  182. PtrEnumPrintProcessorDatatypesW,
  183. PtrEnumPrintProcessorsA,
  184. PtrEnumPrintProcessorsW,
  185. PtrFindClosePrinterChangeNotification,
  186. PtrFindFirstPrinterChangeNotification,
  187. PtrFindNextPrinterChangeNotification,
  188. PtrFreePrinterNotifyInfo,
  189. PtrGetFormA,
  190. PtrGetFormW,
  191. PtrGetJobA,
  192. PtrGetJobW,
  193. PtrGetPrinterA,
  194. PtrGetPrinterW,
  195. PtrGetPrinterDataA,
  196. PtrGetPrinterDataW,
  197. PtrGetPrinterDriverA,
  198. PtrGetPrinterDriverW,
  199. PtrGetPrinterDriverDirectoryA,
  200. PtrGetPrinterDriverDirectoryW,
  201. PtrGetPrintProcessorDirectoryA,
  202. PtrGetPrintProcessorDirectoryW,
  203. PtrOpenPrinterA,
  204. PtrOpenPrinterW,
  205. PtrPrinterMessageBoxA,
  206. PtrPrinterMessageBoxW,
  207. PtrPrinterProperties,
  208. PtrReadPrinter,
  209. PtrResetPrinterA,
  210. PtrResetPrinterW,
  211. PtrScheduleJob,
  212. PtrSetFormA,
  213. PtrSetFormW,
  214. PtrSetJobA,
  215. PtrSetJobW,
  216. PtrSetPortA,
  217. PtrSetPortW,
  218. PtrSetPrinterA,
  219. PtrSetPrinterW,
  220. PtrSetPrinterDataA,
  221. PtrSetPrinterDataW,
  222. PtrStartDocPrinterA,
  223. PtrStartDocPrinterW,
  224. PtrStartPagePrinter,
  225. PtrWaitForPrinterChange,
  226. PtrWritePrinter : Pointer;
  227.  
  228. Procedure AbortPrinter ; stdcall;
  229. Procedure AddFormA ; stdcall;
  230. Procedure AddFormW ; stdcall;
  231. Procedure AddJobA ; stdcall;
  232. Procedure AddJobW ; stdcall;
  233. Procedure AddMonitorA ; stdcall;
  234. Procedure AddMonitorW ; stdcall;
  235. Procedure AddPortA ; stdcall;
  236. Procedure AddPortW ; stdcall;
  237. Procedure AddPrinterA ; stdcall;
  238. Procedure AddPrinterW ; stdcall;
  239. Procedure AddPrinterConnectionA ; stdcall;
  240. Procedure AddPrinterConnectionW ; stdcall;
  241. Procedure AddPrinterDriverA ; stdcall;
  242. Procedure AddPrinterDriverW ; stdcall;
  243. Procedure AddPrintProcessorA ; stdcall;
  244. Procedure AddPrintProcessorW ; stdcall;
  245. Procedure AddPrintProvidorA ; stdcall;
  246. Procedure AddPrintProvidorW ; stdcall;
  247. Procedure AdvancedDocumentPropertiesA ; stdcall;
  248. Procedure AdvancedDocumentPropertiesW ; stdcall;
  249. Procedure ClosePrinter ; stdcall;
  250. Procedure ConfigurePortA ; stdcall;
  251. Procedure ConfigurePortW ; stdcall;
  252. Procedure ConnectToPrinterDlg ; stdcall;
  253. Procedure DeleteFormA ; stdcall;
  254. Procedure DeleteFormW ; stdcall;
  255. Procedure DeleteMonitorA ; stdcall;
  256. Procedure DeleteMonitorW ; stdcall;
  257. Procedure DeletePortA ; stdcall;
  258. Procedure DeletePortW ; stdcall;
  259. Procedure DeletePrinter ; stdcall;
  260. Procedure DeletePrinterConnectionA ; stdcall;
  261. Procedure DeletePrinterConnectionW ; stdcall;
  262. Procedure DeletePrinterDataA ; stdcall;
  263. Procedure DeletePrinterDataW ; stdcall;
  264. Procedure DeletePrinterDriverA ; stdcall;
  265. Procedure DeletePrinterDriverW ; stdcall;
  266. Procedure DeletePrintProcessorA ; stdcall;
  267. Procedure DeletePrintProcessorW ; stdcall;
  268. Procedure DeletePrintProvidorA ; stdcall;
  269. Procedure DeletePrintProvidorW ; stdcall;
  270. Procedure DeviceCapabilitiesA ; stdcall;
  271. Procedure DeviceCapabilitiesW ; stdcall;
  272. Procedure DocumentPropertiesA ; stdcall;
  273. Procedure DocumentPropertiesW ; stdcall;
  274. Procedure EndDocPrinter ; stdcall;
  275. Procedure EndPagePrinter ; stdcall;
  276. Procedure EnumFormsA ; stdcall;
  277. Procedure EnumFormsW ; stdcall;
  278. Procedure EnumJobsA ; stdcall;
  279. Procedure EnumJobsW ; stdcall;
  280. Procedure EnumMonitorsA ; stdcall;
  281. Procedure EnumMonitorsW ; stdcall;
  282. Procedure EnumPortsA ; stdcall;
  283. Procedure EnumPortsW ; stdcall;
  284. Procedure EnumPrinterDataA ; stdcall;
  285. Procedure EnumPrinterDataW ; stdcall;
  286. Procedure EnumPrinterDriversA ; stdcall;
  287. Procedure EnumPrinterDriversW ; stdcall;
  288. Procedure EnumPrintersA ; stdcall;
  289. Procedure EnumPrintersW ; stdcall;
  290. Procedure EnumPrintProcessorDatatypesA ; stdcall;
  291. Procedure EnumPrintProcessorDatatypesW ; stdcall;
  292. Procedure EnumPrintProcessorsA ; stdcall;
  293. Procedure EnumPrintProcessorsW ; stdcall;
  294. Procedure FindClosePrinterChangeNotification ; stdcall;
  295. Procedure FindFirstPrinterChangeNotification ; stdcall;
  296. Procedure FindNextPrinterChangeNotification ; stdcall;
  297. Procedure FreePrinterNotifyInfo ; stdcall;
  298. Procedure GetFormA ; stdcall;
  299. Procedure GetFormW ; stdcall;
  300. Procedure GetJobA ; stdcall;
  301. Procedure GetJobW ; stdcall;
  302. Procedure GetPrinterA ; stdcall;
  303. Procedure GetPrinterW ; stdcall;
  304. Procedure GetPrinterDataA ; stdcall;
  305. Procedure GetPrinterDataW ; stdcall;
  306. Procedure GetPrinterDriverA ; stdcall;
  307. Procedure GetPrinterDriverW ; stdcall;
  308. Procedure GetPrinterDriverDirectoryA ; stdcall;
  309. Procedure GetPrinterDriverDirectoryW ; stdcall;
  310. Procedure GetPrintProcessorDirectoryA ; stdcall;
  311. Procedure GetPrintProcessorDirectoryW ; stdcall;
  312. Procedure OpenPrinterA ; stdcall;
  313. Procedure OpenPrinterW ; stdcall;
  314. Procedure PrinterMessageBoxA ; stdcall;
  315. Procedure PrinterMessageBoxW ; stdcall;
  316. Procedure PrinterProperties ; stdcall;
  317. Procedure ReadPrinter ; stdcall;
  318. Procedure ResetPrinterA ; stdcall;
  319. Procedure ResetPrinterW ; stdcall;
  320. Procedure ScheduleJob ; stdcall;
  321. Procedure SetFormA ; stdcall;
  322. Procedure SetFormW ; stdcall;
  323. Procedure SetJobA ; stdcall;
  324. Procedure SetJobW ; stdcall;
  325. Procedure SetPortA ; stdcall;
  326. Procedure SetPortW ; stdcall;
  327. Procedure SetPrinterA ; stdcall;
  328. Procedure SetPrinterW ; stdcall;
  329. Procedure SetPrinterDataA ; stdcall;
  330. Procedure SetPrinterDataW ; stdcall;
  331. Procedure StartDocPrinterA ; stdcall;
  332. Procedure StartDocPrinterW ; stdcall;
  333. Procedure StartPagePrinter ; stdcall;
  334. Procedure WaitForPrinterChange ; stdcall;
  335. Procedure WritePrinter ; stdcall;
  336.  
  337. exports
  338. AbortPrinter,
  339. AddFormA,
  340. AddFormW,
  341. AddJobA,
  342. AddJobW,
  343. AddMonitorA,
  344. AddMonitorW,
  345. AddPortA,
  346. AddPortW,
  347. AddPrinterA,
  348. AddPrinterW,
  349. AddPrinterConnectionA,
  350. AddPrinterConnectionW,
  351. AddPrinterDriverA,
  352. AddPrinterDriverW,
  353. AddPrintProcessorA,
  354. AddPrintProcessorW,
  355. AddPrintProvidorA,
  356. AddPrintProvidorW,
  357. AdvancedDocumentPropertiesA,
  358. AdvancedDocumentPropertiesW,
  359. ClosePrinter,
  360. ConfigurePortA,
  361. ConfigurePortW,
  362. ConnectToPrinterDlg,
  363. DeleteFormA,
  364. DeleteFormW,
  365. DeleteMonitorA,
  366. DeleteMonitorW,
  367. DeletePortA,
  368. DeletePortW,
  369. DeletePrinter,
  370. DeletePrinterConnectionA,
  371. DeletePrinterConnectionW,
  372. DeletePrinterDataA,
  373. DeletePrinterDataW,
  374. DeletePrinterDriverA,
  375. DeletePrinterDriverW,
  376. DeletePrintProcessorA,
  377. DeletePrintProcessorW,
  378. DeletePrintProvidorA,
  379. DeletePrintProvidorW,
  380. DeviceCapabilitiesA,
  381. DeviceCapabilitiesW,
  382. DocumentPropertiesA,
  383. DocumentPropertiesW,
  384. EndDocPrinter,
  385. EndPagePrinter,
  386. EnumFormsA,
  387. EnumFormsW,
  388. EnumJobsA,
  389. EnumJobsW,
  390. EnumMonitorsA,
  391. EnumMonitorsW,
  392. EnumPortsA,
  393. EnumPortsW,
  394. EnumPrinterDataA,
  395. EnumPrinterDataW,
  396. EnumPrinterDriversA,
  397. EnumPrinterDriversW,
  398. EnumPrintersA,
  399. EnumPrintersW,
  400. EnumPrintProcessorDatatypesA,
  401. EnumPrintProcessorDatatypesW,
  402. EnumPrintProcessorsA,
  403. EnumPrintProcessorsW,
  404. FindClosePrinterChangeNotification,
  405. FindFirstPrinterChangeNotification,
  406. FindNextPrinterChangeNotification,
  407. FreePrinterNotifyInfo,
  408. GetFormA,
  409. GetFormW,
  410. GetJobA,
  411. GetJobW,
  412. GetPrinterA,
  413. GetPrinterW,
  414. GetPrinterDataA,
  415. GetPrinterDataW,
  416. GetPrinterDriverA,
  417. GetPrinterDriverW,
  418. GetPrinterDriverDirectoryA,
  419. GetPrinterDriverDirectoryW,
  420. GetPrintProcessorDirectoryA,
  421. GetPrintProcessorDirectoryW,
  422. OpenPrinterA,
  423. OpenPrinterW,
  424. PrinterMessageBoxA,
  425. PrinterMessageBoxW,
  426. PrinterProperties,
  427. ReadPrinter,
  428. ResetPrinterA,
  429. ResetPrinterW,
  430. ScheduleJob,
  431. SetFormA,
  432. SetFormW,
  433. SetJobA,
  434. SetJobW,
  435. SetPortA,
  436. SetPortW,
  437. SetPrinterA,
  438. SetPrinterW,
  439. SetPrinterDataA,
  440. SetPrinterDataW,
  441. StartDocPrinterA,
  442. StartDocPrinterW,
  443. StartPagePrinter,
  444. WaitForPrinterChange,
  445. WritePrinter;
  446.  
  447. function InitWinSpool(): Boolean;
  448.  
  449. implementation
  450.  
  451. Procedure AbortPrinter ; stdcall;
  452. asm jmp PtrAbortPrinter end;
  453.  
  454. Procedure AddFormA ; stdcall;
  455. asm jmp PtrAddFormA end;
  456.  
  457. Procedure AddFormW ; stdcall;
  458. asm jmp PtrAddFormW end;
  459.  
  460. Procedure AddJobA ; stdcall;
  461. asm jmp PtrAddJobA end;
  462.  
  463. Procedure AddJobW ; stdcall;
  464. asm jmp PtrAddJobW end;
  465.  
  466. Procedure AddMonitorA ; stdcall;
  467. asm jmp PtrAddMonitorA end;
  468.  
  469. Procedure AddMonitorW ; stdcall;
  470. asm jmp PtrAddMonitorW end;
  471.  
  472. Procedure AddPortA ; stdcall;
  473. asm jmp PtrAddPortA end;
  474.  
  475. Procedure AddPortW ; stdcall;
  476. asm jmp PtrAddPortW end;
  477.  
  478. Procedure AddPrinterA ; stdcall;
  479. asm jmp PtrAddPrinterA end;
  480.  
  481. Procedure AddPrinterW ; stdcall;
  482. asm jmp PtrAddPrinterW end;
  483.  
  484. Procedure AddPrinterConnectionA ; stdcall;
  485. asm jmp PtrAddPrinterConnectionA end;
  486.  
  487. Procedure AddPrinterConnectionW ; stdcall;
  488. asm jmp PtrAddPrinterConnectionW end;
  489.  
  490. Procedure AddPrinterDriverA ; stdcall;
  491. asm jmp PtrAddPrinterDriverA end;
  492.  
  493. Procedure AddPrinterDriverW ; stdcall;
  494. asm jmp PtrAddPrinterDriverW end;
  495.  
  496. Procedure AddPrintProcessorA ; stdcall;
  497. asm jmp PtrAddPrintProcessorA end;
  498.  
  499. Procedure AddPrintProcessorW ; stdcall;
  500. asm jmp PtrAddPrintProcessorW end;
  501.  
  502. Procedure AddPrintProvidorA ; stdcall;
  503. asm jmp PtrAddPrintProvidorA end;
  504.  
  505. Procedure AddPrintProvidorW ; stdcall;
  506. asm jmp PtrAddPrintProvidorW end;
  507.  
  508. Procedure AdvancedDocumentPropertiesA ; stdcall;
  509. asm jmp PtrAdvancedDocumentPropertiesA end;
  510.  
  511. Procedure AdvancedDocumentPropertiesW ; stdcall;
  512. asm jmp PtrAdvancedDocumentPropertiesW end;
  513.  
  514. Procedure ClosePrinter ; stdcall;
  515. asm jmp PtrClosePrinter end;
  516.  
  517. Procedure ConfigurePortA ; stdcall;
  518. asm jmp PtrConfigurePortA end;
  519.  
  520. Procedure ConfigurePortW ; stdcall;
  521. asm jmp PtrConfigurePortW end;
  522.  
  523. Procedure ConnectToPrinterDlg ; stdcall;
  524. asm jmp PtrConnectToPrinterDlg end;
  525.  
  526. Procedure DeleteFormA ; stdcall;
  527. asm jmp PtrDeleteFormA end;
  528.  
  529. Procedure DeleteFormW ; stdcall;
  530. asm jmp PtrDeleteFormW end;
  531.  
  532. Procedure DeleteMonitorA ; stdcall;
  533. asm jmp PtrDeleteMonitorA end;
  534.  
  535. Procedure DeleteMonitorW ; stdcall;
  536. asm jmp PtrDeleteMonitorW end;
  537.  
  538. Procedure DeletePortA ; stdcall;
  539. asm jmp PtrDeletePortA end;
  540.  
  541. Procedure DeletePortW ; stdcall;
  542. asm jmp PtrDeletePortW end;
  543.  
  544. Procedure DeletePrinter ; stdcall;
  545. asm jmp PtrDeletePrinter end;
  546.  
  547. Procedure DeletePrinterConnectionA ; stdcall;
  548. asm jmp PtrDeletePrinterConnectionA end;
  549.  
  550. Procedure DeletePrinterConnectionW ; stdcall;
  551. asm jmp PtrDeletePrinterConnectionW end;
  552.  
  553. Procedure DeletePrinterDataA ; stdcall;
  554. asm jmp PtrDeletePrinterDataA end;
  555.  
  556. Procedure DeletePrinterDataW ; stdcall;
  557. asm jmp PtrDeletePrinterDataW end;
  558.  
  559. Procedure DeletePrinterDriverA ; stdcall;
  560. asm jmp PtrDeletePrinterDriverA end;
  561.  
  562. Procedure DeletePrinterDriverW ; stdcall;
  563. asm jmp PtrDeletePrinterDriverW end;
  564.  
  565. Procedure DeletePrintProcessorA ; stdcall;
  566. asm jmp PtrDeletePrintProcessorA end;
  567.  
  568. Procedure DeletePrintProcessorW ; stdcall;
  569. asm jmp PtrDeletePrintProcessorW end;
  570.  
  571. Procedure DeletePrintProvidorA ; stdcall;
  572. asm jmp PtrDeletePrintProvidorA end;
  573.  
  574. Procedure DeletePrintProvidorW ; stdcall;
  575. asm jmp PtrDeletePrintProvidorW end;
  576.  
  577. Procedure DeviceCapabilitiesA ; stdcall;
  578. asm jmp PtrDeviceCapabilitiesA end;
  579.  
  580. Procedure DeviceCapabilitiesW ; stdcall;
  581. asm jmp PtrDeviceCapabilitiesW end;
  582.  
  583. Procedure DocumentPropertiesA ; stdcall;
  584. asm jmp PtrDocumentPropertiesA end;
  585.  
  586. Procedure DocumentPropertiesW ; stdcall;
  587. asm jmp PtrDocumentPropertiesW end;
  588.  
  589. Procedure EndDocPrinter ; stdcall;
  590. asm jmp PtrEndDocPrinter end;
  591.  
  592. Procedure EndPagePrinter ; stdcall;
  593. asm jmp PtrEndPagePrinter end;
  594.  
  595. Procedure EnumFormsA ; stdcall;
  596. asm jmp PtrEnumFormsA end;
  597.  
  598. Procedure EnumFormsW ; stdcall;
  599. asm jmp PtrEnumFormsW end;
  600.  
  601. Procedure EnumJobsA ; stdcall;
  602. asm jmp PtrEnumJobsA end;
  603.  
  604. Procedure EnumJobsW ; stdcall;
  605. asm jmp PtrEnumJobsW end;
  606.  
  607. Procedure EnumMonitorsA ; stdcall;
  608. asm jmp PtrEnumMonitorsA end;
  609.  
  610. Procedure EnumMonitorsW ; stdcall;
  611. asm jmp PtrEnumMonitorsW end;
  612.  
  613. Procedure EnumPortsA ; stdcall;
  614. asm jmp PtrEnumPortsA end;
  615.  
  616. Procedure EnumPortsW ; stdcall;
  617. asm jmp PtrEnumPortsW end;
  618.  
  619. Procedure EnumPrinterDataA ; stdcall;
  620. asm jmp PtrEnumPrinterDataA end;
  621.  
  622. Procedure EnumPrinterDataW ; stdcall;
  623. asm jmp PtrEnumPrinterDataW end;
  624.  
  625. Procedure EnumPrinterDriversA ; stdcall;
  626. asm jmp PtrEnumPrinterDriversA end;
  627.  
  628. Procedure EnumPrinterDriversW ; stdcall;
  629. asm jmp PtrEnumPrinterDriversW end;
  630.  
  631. Procedure EnumPrintersA ; stdcall;
  632. asm jmp PtrEnumPrintersA end;
  633.  
  634. Procedure EnumPrintersW ; stdcall;
  635. asm jmp PtrEnumPrintersW end;
  636.  
  637. Procedure EnumPrintProcessorDatatypesA ; stdcall;
  638. asm jmp PtrEnumPrintProcessorDatatypesA end;
  639.  
  640. Procedure EnumPrintProcessorDatatypesW ; stdcall;
  641. asm jmp PtrEnumPrintProcessorDatatypesW end;
  642.  
  643. Procedure EnumPrintProcessorsA ; stdcall;
  644. asm jmp PtrEnumPrintProcessorsA end;
  645.  
  646. Procedure EnumPrintProcessorsW ; stdcall;
  647. asm jmp PtrEnumPrintProcessorsW end;
  648.  
  649. Procedure FindClosePrinterChangeNotification ; stdcall;
  650. asm jmp PtrFindClosePrinterChangeNotification end;
  651.  
  652. Procedure FindFirstPrinterChangeNotification ; stdcall;
  653. asm jmp PtrFindFirstPrinterChangeNotification end;
  654.  
  655. Procedure FindNextPrinterChangeNotification ; stdcall;
  656. asm jmp PtrFindNextPrinterChangeNotification end;
  657.  
  658. Procedure FreePrinterNotifyInfo ; stdcall;
  659. asm jmp PtrFreePrinterNotifyInfo end;
  660.  
  661. Procedure GetFormA ; stdcall;
  662. asm jmp PtrGetFormA end;
  663.  
  664. Procedure GetFormW ; stdcall;
  665. asm jmp PtrGetFormW end;
  666.  
  667. Procedure GetJobA ; stdcall;
  668. asm jmp PtrGetJobA end;
  669.  
  670. Procedure GetJobW ; stdcall;
  671. asm jmp PtrGetJobW end;
  672.  
  673. Procedure GetPrinterA ; stdcall;
  674. asm jmp PtrGetPrinterA end;
  675.  
  676. Procedure GetPrinterW ; stdcall;
  677. asm jmp PtrGetPrinterW end;
  678.  
  679. Procedure GetPrinterDataA ; stdcall;
  680. asm jmp PtrGetPrinterDataA end;
  681.  
  682. Procedure GetPrinterDataW ; stdcall;
  683. asm jmp PtrGetPrinterDataW end;
  684.  
  685. Procedure GetPrinterDriverA ; stdcall;
  686. asm jmp PtrGetPrinterDriverA end;
  687.  
  688. Procedure GetPrinterDriverW ; stdcall;
  689. asm jmp PtrGetPrinterDriverW end;
  690.  
  691. Procedure GetPrinterDriverDirectoryA ; stdcall;
  692. asm jmp PtrGetPrinterDriverDirectoryA end;
  693.  
  694. Procedure GetPrinterDriverDirectoryW ; stdcall;
  695. asm jmp PtrGetPrinterDriverDirectoryW end;
  696.  
  697. Procedure GetPrintProcessorDirectoryA ; stdcall;
  698. asm jmp PtrGetPrintProcessorDirectoryA end;
  699.  
  700. Procedure GetPrintProcessorDirectoryW ; stdcall;
  701. asm jmp PtrGetPrintProcessorDirectoryW end;
  702.  
  703. Procedure OpenPrinterA ; stdcall;
  704. asm jmp PtrOpenPrinterA end;
  705.  
  706. Procedure OpenPrinterW ; stdcall;
  707. asm jmp PtrOpenPrinterW end;
  708.  
  709. Procedure PrinterMessageBoxA ; stdcall;
  710. asm jmp PtrPrinterMessageBoxA end;
  711.  
  712. Procedure PrinterMessageBoxW ; stdcall;
  713. asm jmp PtrPrinterMessageBoxW end;
  714.  
  715. Procedure PrinterProperties ; stdcall;
  716. asm jmp PtrPrinterProperties end;
  717.  
  718. Procedure ReadPrinter ; stdcall;
  719. asm jmp PtrReadPrinter end;
  720.  
  721. Procedure ResetPrinterA ; stdcall;
  722. asm jmp PtrResetPrinterA end;
  723.  
  724. Procedure ResetPrinterW ; stdcall;
  725. asm jmp PtrResetPrinterW end;
  726.  
  727. Procedure ScheduleJob ; stdcall;
  728. asm jmp PtrScheduleJob end;
  729.  
  730. Procedure SetFormA ; stdcall;
  731. asm jmp PtrSetFormA end;
  732.  
  733. Procedure SetFormW ; stdcall;
  734. asm jmp PtrSetFormW end;
  735.  
  736. Procedure SetJobA ; stdcall;
  737. asm jmp PtrSetJobA end;
  738.  
  739. Procedure SetJobW ; stdcall;
  740. asm jmp PtrSetJobW end;
  741.  
  742. Procedure SetPortA ; stdcall;
  743. asm jmp PtrSetPortA end;
  744.  
  745. Procedure SetPortW ; stdcall;
  746. asm jmp PtrSetPortW end;
  747.  
  748. Procedure SetPrinterA ; stdcall;
  749. asm jmp PtrSetPrinterA end;
  750.  
  751. Procedure SetPrinterW ; stdcall;
  752. asm jmp PtrSetPrinterW end;
  753.  
  754. Procedure SetPrinterDataA ; stdcall;
  755. asm jmp PtrSetPrinterDataA end;
  756.  
  757. Procedure SetPrinterDataW ; stdcall;
  758. asm jmp PtrSetPrinterDataW end;
  759.  
  760. Procedure StartDocPrinterA ; stdcall;
  761. asm jmp PtrStartDocPrinterA end;
  762.  
  763. Procedure StartDocPrinterW ; stdcall;
  764. asm jmp PtrStartDocPrinterW end;
  765.  
  766. Procedure StartPagePrinter ; stdcall;
  767. asm jmp PtrStartPagePrinter end;
  768.  
  769. Procedure WaitForPrinterChange ; stdcall;
  770. asm jmp PtrWaitForPrinterChange end;
  771.  
  772. Procedure WritePrinter ; stdcall;
  773. asm jmp PtrWritePrinter end;
  774.  
  775.  
  776. function InitWinSpool(): Boolean;
  777. var
  778.   hLib: THandle;
  779.   LibPath: string;
  780.   SysDir: array[0..256] of Char;
  781. begin
  782.   Result:= False;
  783.   GetSystemDirectory(SysDir,256);
  784.   LibPath:= SysDir + '\winspool.drv';
  785.   hLib := LoadLibrary(pchar(LibPath));
  786.   if hLib <> 0 then
  787.   begin
  788.     PtrAbortPrinter                         := GetProcAddress(hLib, szAbortPrinter);
  789.     PtrAddFormA                             := GetProcAddress(hLib, szAddFormA);
  790.     PtrAddFormW                             := GetProcAddress(hLib, szAddFormW);
  791.     PtrAddJobA                              := GetProcAddress(hLib, szAddJobA);
  792.     PtrAddJobW                              := GetProcAddress(hLib, szAddJobW);
  793.     PtrAddMonitorA                          := GetProcAddress(hLib, szAddMonitorA);
  794.     PtrAddMonitorW                          := GetProcAddress(hLib, szAddMonitorW);
  795.     PtrAddPortA                             := GetProcAddress(hLib, szAddPortA);
  796.     PtrAddPortW                             := GetProcAddress(hLib, szAddPortW);
  797.     PtrAddPrinterA                          := GetProcAddress(hLib, szAddPrinterA);
  798.     PtrAddPrinterW                          := GetProcAddress(hLib, szAddPrinterW);
  799.     PtrAddPrinterConnectionA                := GetProcAddress(hLib, szAddPrinterConnectionA);
  800.     PtrAddPrinterConnectionW                := GetProcAddress(hLib, szAddPrinterConnectionW);
  801.     PtrAddPrinterDriverA                    := GetProcAddress(hLib, szAddPrinterDriverA);
  802.     PtrAddPrinterDriverW                    := GetProcAddress(hLib, szAddPrinterDriverW);
  803.     PtrAddPrintProcessorA                   := GetProcAddress(hLib, szAddPrintProcessorA);
  804.     PtrAddPrintProcessorW                   := GetProcAddress(hLib, szAddPrintProcessorW);
  805.     PtrAddPrintProvidorA                    := GetProcAddress(hLib, szAddPrintProvidorA);
  806.     PtrAddPrintProvidorW                    := GetProcAddress(hLib, szAddPrintProvidorW);
  807.     PtrAdvancedDocumentPropertiesA          := GetProcAddress(hLib, szAdvancedDocumentPropertiesA);
  808.     PtrAdvancedDocumentPropertiesW          := GetProcAddress(hLib, szAdvancedDocumentPropertiesW);
  809.     PtrClosePrinter                         := GetProcAddress(hLib, szClosePrinter);
  810.     PtrConfigurePortA                       := GetProcAddress(hLib, szConfigurePortA);
  811.     PtrConfigurePortW                       := GetProcAddress(hLib, szConfigurePortW);
  812.     PtrConnectToPrinterDlg                  := GetProcAddress(hLib, szConnectToPrinterDlg);
  813.     PtrDeleteFormA                          := GetProcAddress(hLib, szDeleteFormA);
  814.     PtrDeleteFormW                          := GetProcAddress(hLib, szDeleteFormW);
  815.     PtrDeleteMonitorA                       := GetProcAddress(hLib, szDeleteMonitorA);
  816.     PtrDeleteMonitorW                       := GetProcAddress(hLib, szDeleteMonitorW);
  817.     PtrDeletePortA                          := GetProcAddress(hLib, szDeletePortA);
  818.     PtrDeletePortW                          := GetProcAddress(hLib, szDeletePortW);
  819.     PtrDeletePrinter                        := GetProcAddress(hLib, szDeletePrinter);
  820.     PtrDeletePrinterConnectionA             := GetProcAddress(hLib, szDeletePrinterConnectionA);
  821.     PtrDeletePrinterConnectionW             := GetProcAddress(hLib, szDeletePrinterConnectionW);
  822.     PtrDeletePrinterDataA                   := GetProcAddress(hLib, szDeletePrinterDataA);
  823.     PtrDeletePrinterDataW                   := GetProcAddress(hLib, szDeletePrinterDataW);
  824.     PtrDeletePrinterDriverA                 := GetProcAddress(hLib, szDeletePrinterDriverA);
  825.     PtrDeletePrinterDriverW                 := GetProcAddress(hLib, szDeletePrinterDriverW);
  826.     PtrDeletePrintProcessorA                := GetProcAddress(hLib, szDeletePrintProcessorA);
  827.     PtrDeletePrintProcessorW                := GetProcAddress(hLib, szDeletePrintProcessorW);
  828.     PtrDeletePrintProvidorA                 := GetProcAddress(hLib, szDeletePrintProvidorA);
  829.     PtrDeletePrintProvidorW                 := GetProcAddress(hLib, szDeletePrintProvidorW);
  830.     PtrDeviceCapabilitiesA                  := GetProcAddress(hLib, szDeviceCapabilitiesA);
  831.     PtrDeviceCapabilitiesW                  := GetProcAddress(hLib, szDeviceCapabilitiesW);
  832.     PtrDocumentPropertiesA                  := GetProcAddress(hLib, szDocumentPropertiesA);
  833.     PtrDocumentPropertiesW                  := GetProcAddress(hLib, szDocumentPropertiesW);
  834.     PtrEndDocPrinter                        := GetProcAddress(hLib, szEndDocPrinter);
  835.     PtrEndPagePrinter                       := GetProcAddress(hLib, szEndPagePrinter);
  836.     PtrEnumFormsA                           := GetProcAddress(hLib, szEnumFormsA);
  837.     PtrEnumFormsW                           := GetProcAddress(hLib, szEnumFormsW);
  838.     PtrEnumJobsA                            := GetProcAddress(hLib, szEnumJobsA);
  839.     PtrEnumJobsW                            := GetProcAddress(hLib, szEnumJobsW);
  840.     PtrEnumMonitorsA                        := GetProcAddress(hLib, szEnumMonitorsA);
  841.     PtrEnumMonitorsW                        := GetProcAddress(hLib, szEnumMonitorsW);
  842.     PtrEnumPortsA                           := GetProcAddress(hLib, szEnumPortsA);
  843.     PtrEnumPortsW                           := GetProcAddress(hLib, szEnumPortsW);
  844.     PtrEnumPrinterDataA                     := GetProcAddress(hLib, szEnumPrinterDataA);
  845.     PtrEnumPrinterDataW                     := GetProcAddress(hLib, szEnumPrinterDataW);
  846.     PtrEnumPrinterDriversA                  := GetProcAddress(hLib, szEnumPrinterDriversA);
  847.     PtrEnumPrinterDriversW                  := GetProcAddress(hLib, szEnumPrinterDriversW);
  848.     PtrEnumPrintersA                        := GetProcAddress(hLib, szEnumPrintersA);
  849.     PtrEnumPrintersW                        := GetProcAddress(hLib, szEnumPrintersW);
  850.     PtrEnumPrintProcessorDatatypesA         := GetProcAddress(hLib, szEnumPrintProcessorDatatypesA);
  851.     PtrEnumPrintProcessorDatatypesW         := GetProcAddress(hLib, szEnumPrintProcessorDatatypesW);
  852.     PtrEnumPrintProcessorsA                 := GetProcAddress(hLib, szEnumPrintProcessorsA);
  853.     PtrEnumPrintProcessorsW                 := GetProcAddress(hLib, szEnumPrintProcessorsW);
  854.     PtrFindClosePrinterChangeNotification   := GetProcAddress(hLib, szFindClosePrinterChangeNotification);
  855.     PtrFindFirstPrinterChangeNotification   := GetProcAddress(hLib, szFindFirstPrinterChangeNotification);
  856.     PtrFindNextPrinterChangeNotification    := GetProcAddress(hLib, szFindNextPrinterChangeNotification);
  857.     PtrFreePrinterNotifyInfo                := GetProcAddress(hLib, szFreePrinterNotifyInfo);
  858.     PtrGetFormA                             := GetProcAddress(hLib, szGetFormA);
  859.     PtrGetFormW                             := GetProcAddress(hLib, szGetFormW);
  860.     PtrGetJobA                              := GetProcAddress(hLib, szGetJobA);
  861.     PtrGetJobW                              := GetProcAddress(hLib, szGetJobW);
  862.     PtrGetPrinterA                          := GetProcAddress(hLib, szGetPrinterA);
  863.     PtrGetPrinterW                          := GetProcAddress(hLib, szGetPrinterW);
  864.     PtrGetPrinterDataA                      := GetProcAddress(hLib, szGetPrinterDataA);
  865.     PtrGetPrinterDataW                      := GetProcAddress(hLib, szGetPrinterDataW);
  866.     PtrGetPrinterDriverA                    := GetProcAddress(hLib, szGetPrinterDriverA);
  867.     PtrGetPrinterDriverW                    := GetProcAddress(hLib, szGetPrinterDriverW);
  868.     PtrGetPrinterDriverDirectoryA           := GetProcAddress(hLib, szGetPrinterDriverDirectoryA);
  869.     PtrGetPrinterDriverDirectoryW           := GetProcAddress(hLib, szGetPrinterDriverDirectoryW);
  870.     PtrGetPrintProcessorDirectoryA          := GetProcAddress(hLib, szGetPrintProcessorDirectoryA);
  871.     PtrGetPrintProcessorDirectoryW          := GetProcAddress(hLib, szGetPrintProcessorDirectoryW);
  872.     PtrOpenPrinterA                         := GetProcAddress(hLib, szOpenPrinterA);
  873.     PtrOpenPrinterW                         := GetProcAddress(hLib, szOpenPrinterW);
  874.     PtrPrinterMessageBoxA                   := GetProcAddress(hLib, szPrinterMessageBoxA);
  875.     PtrPrinterMessageBoxW                   := GetProcAddress(hLib, szPrinterMessageBoxW);
  876.     PtrPrinterProperties                    := GetProcAddress(hLib, szPrinterProperties);
  877.     PtrReadPrinter                          := GetProcAddress(hLib, szReadPrinter);
  878.     PtrResetPrinterA                        := GetProcAddress(hLib, szResetPrinterA);
  879.     PtrResetPrinterW                        := GetProcAddress(hLib, szResetPrinterW);
  880.     PtrScheduleJob                          := GetProcAddress(hLib, szScheduleJob);
  881.     PtrSetFormA                             := GetProcAddress(hLib, szSetFormA);
  882.     PtrSetFormW                             := GetProcAddress(hLib, szSetFormW);
  883.     PtrSetJobA                              := GetProcAddress(hLib, szSetJobA);
  884.     PtrSetJobW                              := GetProcAddress(hLib, szSetJobW);
  885.     PtrSetPortA                             := GetProcAddress(hLib, szSetPortA);
  886.     PtrSetPortW                             := GetProcAddress(hLib, szSetPortW);
  887.     PtrSetPrinterA                          := GetProcAddress(hLib, szSetPrinterA);
  888.     PtrSetPrinterW                          := GetProcAddress(hLib, szSetPrinterW);
  889.     PtrSetPrinterDataA                      := GetProcAddress(hLib, szSetPrinterDataA);
  890.     PtrSetPrinterDataW                      := GetProcAddress(hLib, szSetPrinterDataW);
  891.     PtrStartDocPrinterA                     := GetProcAddress(hLib, szStartDocPrinterA);
  892.     PtrStartDocPrinterW                     := GetProcAddress(hLib, szStartDocPrinterW);
  893.     PtrStartPagePrinter                     := GetProcAddress(hLib, szStartPagePrinter);
  894.     PtrWaitForPrinterChange                 := GetProcAddress(hLib, szWaitForPrinterChange);
  895.     PtrWritePrinter                         := GetProcAddress(hLib, szWritePrinter);
  896.   end;
  897.  
  898. end;  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement