PB 调用window打印机
---- 步骤一:新建一可视(visual)的标准(standard)的用户对象,在Select Visual Standard Type对话框中选择DropDownListBox(下拉列表框),点击“OK”按钮进入设计画面。
完成
---- 步骤二:开始编程。
---- 1、定义两个实例变量
string is_windows_dirctory,is_winini_file
完成
declare一API函数用以取windows目录
FUNCTION ulong GetWindowsDirectoryA(ref string wdir, ulong buf) LIBRARY "kernel32.dll"
未完成,保存出错(Syntax error)
请问如何做下去
---- 2、定义两个函数:
函数一:ouf_get_windows_dirctory()
用途:取windows目录。
参数:无。
返回值类型:string。
函数体:
string ls_WindowsDirctory
ulong lu_Buf
lu_Buf = 144
ls_WindowsDirctory = Space(144)
GetWindowsDirectoryA(ls_WindowsDirctory,lu_Buf)
return ls_WindowsDirctory
函数二:ouf_get_printer()
用途:取打印机信息并增加至下拉列表框。
参数:无
返回类型:boolean
函数体:
string ls_printer[] //定义一个字符串型数组
integer li_rtn,li_ArrayUp,li_step
li_rtn = RegistryKeys("HKEY_LOCAL_MACHINE\System
\CurrentControlSet\Control\Print\
Printers", ls_printer) //从注册表中取其列表
IF li_rtn = 1 THEN
li_ArrayUp = UpperBound(ls_printer)
//取列表数组上限
IF li_ArrayUp >= 1 THEN
FOR li_step = 1 TO li_ArrayUp
additem ( ls_Printer[li_step] )
//向下拉列表框中增加打印机
NEXT
ELSE
return false
END IF
ELSE
return false
END IF
return true
3、在constructor事件下编写下列代码:
boolean lb_PrinterExists
string ls_printer,ls_tmp
int li_point
is_windows_dirctory = ouf_get_windows_dirctory ( )
is_winini_file = is_windows_dirctory + "\win.ini"
lb_PrinterExists = ouf_get_printer ( )
//向下拉列中增加打印机
IF NOT lb_PrinterExists THEN
messagebox ("提示!","尚未安装打印机!")
ELSE
ls_tmp = profilestring (is_winini_file,
"windows","device","") //取当前打印机信息
//由于win.ini信息中该信息还包括有其它参数如端口,
因此必须进行截取处理。
ls_tmp = trim (ls_tmp)
li_point = pos (ls_tmp,",",1)
ls_printer = left (ls_tmp,li_point - 1)
IF trim (ls_printer) <> "" AND NOT
IsNull (ls_printer) THEN
this.text = trim (ls_printer)
//设置下拉列表框文本为当前打印机
ELSE
selectitem ( 1 )
END IF
END IF
---- 4、在selectionchanged事件中输入:
string ls_printer
ls_printer = profilestring
(is_winini_file,"Devices",
trim(this.text (index)),"") //从win.ini文件中取当
前打印机完整信息(含端口及其它)
//在win.ini文件及注册表中更新当前打印机
setprofilestring (is_winini_file,"windows","device",
trim(this.text (index)) + "," +ls_printer)
RegistrySet( "HKEY_CURRENT_CONFIG\System
\CurrentControlSet\Control\Print\Printers",
"Default", trim(this.text))
---- 5、最后保存该用户对象(如保存为nvo_ddlb_of_printer)即可。