Old 5th March 2007, 21:28   #1
TJK
Junior Member
 
Join Date: Jun 2006
Posts: 17
SetDefaultPrinter call via System Plug-in

Hello

I'm trying to use the System plug-in to call the SetDefaultPrinter function (which I understand is availabel on my Windows XP system), but I'm not having much success.

I found an earlier posting (here) and decided to start by copying the GetDefaultPrinter example, but when I use the following:

Quote:
System::Call 'winspool::GetDefaultPrinter(t .r0, *i ${NSIS_MAX_STRLEN})'
MessageBox MB_OK $0
I just get an empty message box ($0=NULL).

Similarly when I try the following:

Quote:
System::Call 'winspool::SetDefaultPrinter(*t "PrinterName")'
The default printer doesn't change.

This is the first time I've use the System plug-in, and though I've read the help and tutorial I'm afraid I don't seem to be grasping it.

Any help and suggestions to point me in the right direction would be gratefully received.

TIA

Tim
TJK is offline   Reply With Quote
Old 6th March 2007, 02:26   #2
cchian
Member
 
Join Date: Apr 2001
Posts: 73
Here is one way to do it:

ExecWait 'rundll32 printui.dll,PrintUIEntry /y /n "HP LaserJet 4240 PCL 6"'
cchian is offline   Reply With Quote
Old 6th March 2007, 02:48   #3
cchian
Member
 
Join Date: Apr 2001
Posts: 73
Here is one way to do it:

ExecWait 'rundll32 printui.dll,PrintUIEntry /y /n "HP LaserJet 4240 PCL 6"'
cchian is offline   Reply With Quote
Old 6th March 2007, 08:18   #4
TJK
Junior Member
 
Join Date: Jun 2006
Posts: 17
Thanks cchian

That works a lot better.

Regards

Tim
TJK is offline   Reply With Quote
Old 6th March 2007, 13:00   #5
CancerFace
Senior Member
 
Join Date: Apr 2006
Posts: 289
Send a message via ICQ to CancerFace
Looking at this MSDN page I think that the correct syntax for the GetDefaultPrinter function should be:
code:
System::Call 'winspool::GetDefaultPrinterA(*t .r0,i ${NSIS_MAX_STRLEN})i.r1'
and you should get a non-zero value at $1 if the function succeeds, along with the printer name at $0. You could try adding ?e at the end to get extended error information (on $2):
code:
System::Call 'winspool::GetDefaultPrinterA(*t .r0, i ${NSIS_MAX_STRLEN})i.r1 ?e'
Pop $2

Also the SetDefaultPrinter call should like this:
code:
System::Call 'winspool::SetDefaultPrinterA(*t "PrinterName")i.r0'
and I think you would have to experiment a bit with both functions to figure out the format of PrinterName
Hope this helps ...
CF
CancerFace is offline   Reply With Quote
Reply
Go Back   Winamp & Shoutcast Forums > Developer Center > NSIS Discussion

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump