Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Need Help with Keybd Macros
Message
 
À
16/04/1997 15:51:25
Vernon Moeller
Texas Adjutant General's Department
Austin, Texas, États-Unis
Information générale
Forum:
Visual FoxPro
Catégorie:
FoxPro 2.x
Divers
Thread ID:
00028603
Message ID:
00028896
Vues:
32
>I am trying to create a pair of macros to change a printer setup in FPW2.5. I want the first one to go from the default printer, landscape, legal to generic/text (to send a report to a .txt file), and I want the second one to reverse that process.
>
>I can get my macro to access the printer setup dialog, but then it stops running. No changes are made. What's up? Do I have to have one macro to call up the dialog, and then have that macro call another macro to type in a few letter-commands in the dialog, or what?
>
>If there's a faster way to do this, like by changing printer settings in memory, I'm all for it, but I don't know how to do that either.
>
>I'd appreciate a little help here.
>
>TIA,
>\/\/\

Vernon,

I think you're doing a little too much work here. What you can
do is use the Windows API to do all your work for you. You'll
first need to have the FOXTOOLS.FLL library loaded. Then you'll
need the following declarations:

m.getstr = RegFN('GetProfileString', 'CCC@CI', 'I')
m.writestr = RegFN('WriteProfileString', 'CCC', 'I')
m.sendmsg = RegFN('SendMessage', 'III@C', 'I')

To retrieve the current default:

m.winsect = 'windows'
m.buffer = SPACE(100) + CHR(0)
m.buflen = LEN(m.buffer)
m.buflen = CallFN(m.getstr, m.winsect, 'device', "", @buffer,;
m.buflen)
m.defprn = LEFT(m.buffer, m.buflen)

Get the necessary information for the Generic/Text Only printer.

m.buffer = SPACE(100) + CHR(0)
m.buflen = LEN(m.buffer)
m.buflen = CallFN(m.getstr, 'PrinterPorts', 'Generic/Text Only',;
"", @buffer, m.buflen)
m.txtprn = LEFT(m.buffer, m.buflen)

Change to the text printer:

m.newdefprn = 'Generic/Text Only,'+ m.txtprn
= CallFN(m.writestr, m.winsect, 'device', m.newdefprn)

Let the world (all open applications) know about it, so they'll
reloaded the necessary WIN.INI section. This is a must.
Otherwise, all the above works, but has no effect.

= CallFN(m.sendmsg, 65535, 26, 0, @winsect)

Hope this helps.

George
George

Ubi caritas et amor, deus ibi est
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform