windows环境下动态设置机参数_第1页
windows环境下动态设置机参数_第2页
windows环境下动态设置机参数_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WINDOWS 环境下动态设置参数(:独孤求败 2003-05-19)摘要:一种动态设置纸张,而不用考虑:参数的方法。在程序中运用此方法,用户在打印时只需在的设置。表 动态设置中放入合适的一、问题的提出在许多应用系统中,常常需要打印各式各样的票据和报表,它们经常是没有的格式,所需的打印纸也就大小不一,有的甚至有的格式。因此,如果不对的设置进行有效的控制,就要求用户在运行这些系统时不断地更改设置,以适应系统的需要。一般情况下,用户会觉得用这样的很麻烦,并且经常会出现错误。一种比较简单的解决办法就是对同一台物理在 WINDOWS 中安装几台逻辑逻辑,每台逻辑对应一种票据或报表格式,在打印某一票据或

2、报表时就选择与之对应的。这种方法的缺点是每次打印时还要去选择 1 个逻辑,增加了操作的操作步骤。基于此,本文给出了一种比较自动和通用的解决方法。运用此方法开发打印程序,打印时用户只需往中加入适当的纸张即可打印出正确的报表。二、动态设置在WINDOWS 98 环境下,与计算机设置有关的信息全部在表(REGISTRY)中。WINDOWS 98 在用到某一设备或程序时,它就到表中取出有关这一设备或程序的设置信息。当增加 1 台设备时,WINDOWS 98 就会在表中增加相应的项目;当修改某一设备的设置时,WINDOWS 98 也会对有关这一设备的项目进行修改。所以可以通过动态修改表中的有关设置的信息

3、来达到动态设置打印机的目的。经研究发现,与有关的主要设置有二项,其中第 1 项为当前默认,其表为:HKEY_LOCAL_MACHINEConfig0001SystemCurrentControlSetControlPrPrers,设置值存放在 default 项中的字符串,即可以通过这一表的这一分支的 default 项得到 WINDOWS 的当前默认打印机。第 2 项为打印纸设置有关的项目,其表为:HKEY_LOCAL_MACHINESystemCurrentControlSetControlPrPrersSETPRER,其中的 SETPRER 要替换为你所安装的的名字,如Epson LQ-

4、1600K 等,这一分支有许多个项,最关键的项(也是与打印纸张设置有关的项)是 Defau此项的设置值为 1 个二进制串,其中主要的几个参数的偏移地址和意义见表 1。evMode,表 1参数表设置项目纸张设置纸张的纸张长度偏移量 字节数 说明0 x2F,随0 x312纸张类型,256 为用户自定义纸张,小于 256 的数值为该类型改变。能打印的标准2)。当纸张设置为 256(即用户自定义纸张)时才有用,意义为要设置的打印纸的长度(以01 毫米为纸张宽度 0 x33 2当纸张设置为 256(即用户自定义纸张)时才有用,意义为要设置的打印纸的宽度(以0.1 毫米为)。打印方向 0 x2D 2进纸方

5、式 0 x39 20 x01-纵向打印,0 x02-横向打印。0 x04-手动送纸,0 x08-传纸器。下面给出这种动态设置方法在erBuildB)中的实现方法。在 PB 中可以定义 2 个全局函数:gf_PrnSetting(),gf_PrnSettingBack()。具体应用时,可以用第 1 个函数将打印设置为需要的状态,并将如下所示。的原状态保存起来,再用第 2 个函数将状态恢复。这 2 个函数的具体实现/函数功能:用自定义参数设置/输入参数:al_Lengn-打印纸长度,al_Width-打印纸宽度/ai_PrSource-进纸方式,ai_PrDirection-打印方向/输出参数:a

6、blb_setvalue-的原参数/返回值:1-成功,0-不成功Gf_PrnSetting(long al_Lengh,long al_Width,lob ablb_setvalue)ai_PrSource,ai_PrDirection,bstring cls_valuenameDefauevModeconstant constant constant constant constant constantconstantu u u u uuclu_ clu_ clu_ clu_clu_width51_length49_p_p_prrsize47rsource57 direction45clu_

7、usersizepr256blob lb_value,newvalue string ls_key,ls_prli_reterli_retRegistryGet(HKEY_LOCAL_MACHINEConfig0001SystemCurrentControlSetControlPrintPrers,default,RegString!,ls_prer)IF li_ret1 THEN MESSAGEBOX(系统提示, RETURN 0END IF未设置!,Excla mation!)ls_keyHKEY_LOCAL_MACHINESystemCurrentControlSetcontrolPr

8、RegistryGet(is_key,cls_valuename,RegBinary!,lb_value)ablb_setvaluelb_valuePrers+ls_prerlb_newvalueblobmid(lb_value,1,clu_blobmid(lb_value,clu_prsize1)_width2)blobedit(lb_newvalue,clu_ blobedit(lb_newvalue,clu_ blobedit(lb_newvalue,clu_lb_valuelb_newvalue_p_leng_widrsize,clu_usersizep l_Length)l_Widt

9、h)r)lb_newvalueblobmid(lb_value,1,clu_blobmid(lb_value,clu_p_prsource1)rsource1) blobmid(lb_value,1,clu_ tion1)blobmid(lb_value,clu_rection1)_pr_prdirecdiblobedit(lb_newvalue,clu_blobedit(lb_newvalue,clu_prsource,ai_prsource)_prdirection,ai_prdirection)ls_keyHKEY_LOCAL_MACHINESystemCurrentControlSet

10、ControlPrersls_prerli_retRegistrySet(ls_key,cls_valuename,RegBinary!,lb_newvalue)IF ii_r1 THENMESSAGEBOX(系统提示, RETURN 0END IFRETURN 1设置失败!,Exclamation!)/函数功能:恢复原设置/输入参数:ablb_setvalue-/输出参数:无/返回值:1-成功,0-不成功原设置串Gf_PrnSettingBack(blob ablb_setvalue)li_retstring ls_prer,ls_keyconstant string cls_valuenameDefauevModeli_retRegistryGet(HKEY_LOCAL_MACHINEConfig0001SystemCurrentControlSetControlPrers,default,RegString!,ls_prIF li_ret1 THENer)MESSAGEBOX(系统提示, RETURN 0END IF未设置!, Exclamati

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论