惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy International News Feed
Martin Fowler
Martin Fowler
D
Docker
Y
Y Combinator Blog
云风的 BLOG
云风的 BLOG
U
Unit 42
T
Tailwind CSS Blog
J
Java Code Geeks
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
美团技术团队
F
Fortinet All Blogs
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hacker News - Newest:
Hacker News - Newest: "LLM"
The GitHub Blog
The GitHub Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Recorded Future
Recorded Future
N
Netflix TechBlog - Medium
Google DeepMind News
Google DeepMind News
Hacker News: Ask HN
Hacker News: Ask HN
L
LINUX DO - 最新话题
Microsoft Security Blog
Microsoft Security Blog
N
News and Events Feed by Topic
I
Intezer
TaoSecurity Blog
TaoSecurity Blog
NISL@THU
NISL@THU
小众软件
小众软件
博客园 - 聂微东
博客园 - Franky
有赞技术团队
有赞技术团队
P
Palo Alto Networks Blog
爱范儿
爱范儿
H
Hacker News: Front Page
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Cisco Blogs
P
Proofpoint News Feed
I
InfoQ
Google DeepMind News
Google DeepMind News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Vercel News
Vercel News
H
Heimdal Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
量子位

博客园 - C#初学者009

脱壳学习 如何将字符串动态转换为指定的值类型 - C#初学者009 - 博客园 SQL Server表描述 及 字段描述的增、删、改、查询 关于Wind2003下MSDTC对DTS运行的影响 SQL 标识列起始种子重设 C#跨线程操作控件 通过委托处理,MSDN上又很详细用法的说明 - C#初学者009 - 博客园 .net项目开发工具(V3.0 ) asp.net控件开发基础(5) -- 复杂属性、内嵌属性 - C#初学者009 如何用vb设置默认打印机? 如何使用 SetPrinter 修改打印机设置 用vb做的activex控件打包成cab后如何发布呢? VB中利用CopyMemory使用指针 如何在 Windows NT 和 Windows 2000 中使用自定义页面大小打印(VB) 确定打印机状态和打印工作状态从Visual Basic VB怎么检测打印机状态 - C#初学者009 - 博客园 在.NET中实现对象序列化(转) XmlSerializer 常见问题疑难解答(MSDN) TransactionScope和分布式事务 (转) 对象序列化:使用System.Xml.Serialization命名空间(转)
如何用vb(API)代码设置不规则打印纸尺寸?
C#初学者009 · 2009-06-14 · via 博客园 - C#初学者009

http://support.microsoft.com/support/kb/articles/q282/4/74.asp

Module1.bas  
  Option   Explicit  
  Public   Enum   PrinterOrientationConstants  
          OrientPortrait   =   1  
          OrientLandscape   =   2  
  End   Enum  
  Private   Type   DEVMODE  
          dmDeviceName   As   String   *   32  
          dmSpecVersion   As   Integer  
          dmDriverVersion   As   Integer  
          dmSize   As   Integer  
          dmDriverExtra   As   Integer  
          dmFields   As   Long  
          dmOrientation   As   Integer  
          dmPaperSize   As   Integer  
          dmPaperLength   As   Integer  
          dmPaperWidth   As   Integer  
          dmScale   As   Integer  
          dmCopies   As   Integer  
          dmDefaultSource   As   Integer  
          dmPrintQuality   As   Integer  
          dmColor   As   Integer  
          dmDuplex   As   Integer  
          dmYResolution   As   Integer  
          dmTTOption   As   Integer  
          dmCollate   As   Integer  
          dmFormName   As   String   *   32  
          dmUnusedPadding   As   Integer  
          dmBitsPerPel   As   Integer  
          dmPelsWidth   As   Long  
          dmPelsHeight   As   Long  
          dmDisplayFlags   As   Long  
          dmDisplayFrequency   As   Long  
  End   Type  
  Private   Type   PRINTER_DEFAULTS  
          pDataType   As   String  
          pDevMode   As   Long  
          DesiredAccess   As   Long  
  End   Type  
  Private   Type   PRINTER_INFO_2  
          pServerName   As   Long  
          pPrinterName   As   Long  
          pShareName   As   Long  
          pPortName   As   Long  
          pDriverName   As   Long  
          pComment   As   Long  
          pLocation   As   Long  
          pDevMode   As   Long  
          pSepFile   As   Long  
          pPrintProcessor   As   Long  
          pDataType   As   Long  
          pParameters   As   Long  
          pSecurityDescriptor   As   Long  
          Attributes   As   Long  
          Priority   As   Long  
          DefaultPriority   As   Long  
          StartTime   As   Long  
          UntilTime   As   Long  
          Status   As   Long  
          cJobs   As   Long  
          AveragePPM   As   Long  
  End   Type  
   
  Private   Const   DM_IN_BUFFER   As   Long   =   8  
  Private   Const   DM_OUT_BUFFER   As   Long   =   2  
  Private   Const   DM_ORIENTATION   As   Long   =   &H1  
  Private   Const   DM_PAPERLENGTH   As   Long   =   &H4  
  Private   Const   DM_PAPERWIDTH   As   Long   =   &H8  
   
  Private   Const   PRINTER_ACCESS_ADMINISTER   As   Long   =   &H4  
  Private   Const   PRINTER_ACCESS_USE   As   Long   =   &H8  
  Private   Const   STANDARD_RIGHTS_REQUIRED   As   Long   =   &HF0000  
  Private   Const   PRINTER_ALL_ACCESS   =   (STANDARD_RIGHTS_REQUIRED   Or   PRINTER_ACCESS_ADMINISTER   Or   PRINTER_ACCESS_USE)  
   
  Private   Declare   Sub   CopyMemory   Lib   "kernel32"   Alias   "RtlMoveMemory"   (hpvDest   As   Any,   hpvSource   As   Any,   ByVal   cbCopy   As   Long)  
  Private   Declare   Function   OpenPrinter   Lib   "winspool.drv"   Alias   "OpenPrinterA"   (ByVal   pPrinterName   As   String,   phPrinter   As   Long,   pDefault   As   Any)   As   Long  
  Private   Declare   Function   ClosePrinter   Lib   "winspool.drv"   (ByVal   hPrinter   As   Long)   As   Long  
  Private   Declare   Function   DocumentProperties   Lib   "winspool.drv"   Alias   "DocumentPropertiesA"   (ByVal   hWnd   As   Long,   ByVal   hPrinter   As   Long,   ByVal   pDeviceName   As   String,   pDevModeOutput   As   Any,   pDevModeInput   As   Any,   ByVal   fMode   As   Long)   As   Long  
  Private   Declare   Function   GetPrinter   Lib   "winspool.drv"   Alias   "GetPrinterA"   (ByVal   hPrinter   As   Long,   ByVal   Level   As   Long,   pPrinter   As   Any,   ByVal   cbBuf   As   Long,   pcbNeeded   As   Long)   As   Long  
  Private   Declare   Function   SetPrinter   Lib   "winspool.drv"   Alias   "SetPrinterA"   (ByVal   hPrinter   As   Long,   ByVal   Level   As   Long,   pPrinter   As   Any,   ByVal   Command   As   Long)   As   Long  
   
  Public   Function   SetDefaultPrinterSettings(   _  
          ByVal   eOrientation   As   PrinterOrientationConstants,   _  
          ByVal   pHeight   As   Integer,   _  
          ByVal   pWidth   As   Integer)   As   Boolean  
   
          Dim   bDevMode()   As   Byte  
          Dim   bPrinterInfo2()   As   Byte  
          Dim   hPrinter   As   Long  
          Dim   nSize   As   Long  
          Dim   sPrnName   As   String  
          Dim   dm   As   DEVMODE  
          Dim   pd   As   PRINTER_DEFAULTS  
          Dim   pi2   As   PRINTER_INFO_2  
           
          '   Get   device   name   of   default   printer  
          sPrnName   =   Printer.DeviceName  
          '   PRINTER_ALL_ACCESS   required   under  
          '   NT,   because   we're   going   to   call   SetPrinter  
          pd.DesiredAccess   =   PRINTER_ALL_ACCESS  
          '   Get   a   handle   to   the   printer.  
          If   OpenPrinter(sPrnName,   hPrinter,   pd)   Then  
                  '   Get   number   of   bytes   requires  
                  '   for   PRINTER_INFO_2   structure  
                  Call   GetPrinter(hPrinter,   2&,   0&,   0&,   nSize)  
                  '   Create   a   buffer   of   the   required   size  
                  ReDim   bPrinterInfo2(1   To   nSize)   As   Byte  
                  '   Fill   buffer   with   structure  
                  Call   GetPrinter(hPrinter,   2,   bPrinterInfo2(1),   nSize,   nSize)  
                  '   Copy   fixed   portion   of   structure   into  
                  '   VB   Type   variable  
                  Call   CopyMemory(pi2,   bPrinterInfo2(1),   Len(pi2))  
                  '   Get   number   of   bytes   requires  
                  '   for   DEVMODE   structure  
                  nSize   =   DocumentProperties(0&,   hPrinter,   sPrnName,   0&,   0&,   0)  
                  '   Create   a   buffer   of   the   required   size  
                  ReDim   bDevMode(1   To   nSize)  
                  '   If   PRINTER_INFO_2   points   to   a  
                  '   DEVMODE   structure,   copy   it   into   our   buffer  
                  If   pi2.pDevMode   Then  
                          Call   CopyMemory(bDevMode(1),   ByVal   pi2.pDevMode,   Len(dm))  
                  Else  
                          '   Otherwise,   call   DocumentProperties   to  
                          '   get   a   DEVMODE   structure  
                          Call   DocumentProperties(0&,   hPrinter,   sPrnName,   bDevMode(1),   0&,   DM_OUT_BUFFER)  
                  End   If  
                  '   Copy   fixed   portion   of   structure  
                  '   into   VB   Type   variable  
                  Call   CopyMemory(dm,   bDevMode(1),   Len(dm))  
                  With   dm  
                          '   Write   the   settings  
                          .dmFields   =   .dmFields   Or   DM_ORIENTATION  
                          .dmOrientation   =   eOrientation  
                          .dmFields   =   .dmFields   Or   DM_PAPERWIDTH  
                          .dmPaperWidth   =   pWidth  
                          .dmFields   =   .dmFields   Or   DM_PAPERLENGTH  
                          .dmPaperLength   =   pHeight  
                  End   With  
                  '   Copy   our   Type   back   into   buffer  
                  Call   CopyMemory(bDevMode(1),   dm,   Len(dm))  
                  '   Write   the   settings  
                  Call   DocumentProperties(0&,   hPrinter,   sPrnName,   bDevMode(1),   bDevMode(1),   DM_IN_BUFFER   Or   DM_OUT_BUFFER)  
                  '   Point   PRINTER_INFO_2   at   our   modified   DEVMODE  
                  pi2.pDevMode   =   VarPtr(bDevMode(1))  
                  '   Set   new   orientation   system-wide  
                  Call   SetPrinter(hPrinter,   2,   pi2,   0&)  
                  '   Clean   up   and   exit  
                  Call   ClosePrinter(hPrinter)  
                  SetDefaultPrinterSettings   =   True  
          Else  
                  SetDefaultPrinterSettings   =   False  
          End   If  
           
          MsgBox   (dm.dmPaperLength)  
  End   Function  
   
  *****************************************************  
  Private   Sub   Command1_Click()  
  '长   150mm,宽   100   mm  
          Call   SetDefaultPrinterSettings(OrientPortrait,   1500,   1000)          
  End   Sub