Yet Another different hack at getDefaultPrinter()

new topic     » topic index » view thread      » older message » newer message

Thanks to everyone testing this, it's now a humbling 4:0 to the
giggling guys and gals at Gates gaff.

...And for my fifth attempt, I present the GetProfileStringA method:

Pete
PS Derek, Bob, you've already tested this for me!

-- code follows
--
-- GetDefaultPrinterName
-- Author Pete Lomax 9/10/03
--=20
include dll.e
include machine.e
constant k32=3Dopen_dll("kernel32.dll"),
		xGetProfileStringA=3Ddefine_c_func(k32,"GetProfileStringA",

{C_POINTER,C_POINTER,C_POINTER,C_POINTER,C_LONG},C_LONG),
		win=3Dallocate_string("windows"),
		dev=3Dallocate_string("device"),
		default=3Dallocate_string(",,,")

global function GetPrintName()
atom len, res
integer maxlen
sequence pname
	maxlen=3D40
	while 1 do
		res=3Dallocate(maxlen)
		len=3Dc_func(xGetProfileStringA,{win,dev,default,res,maxlen})
		if len<maxlen+1 then exit end if
		free(res)
		maxlen*=3D2
	end while
	pname=3Dpeek({res,len})
	pname=3Dpname[1..find(',',pname)-1]
	free(res)
	return pname
end function
printf(1,"\"%s\"\n",{GetPrintName()})
if getc(0) then end if

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu