I've examined at a cursory level the Powerwhizz non-visual object (NVO) code. It appears that someone has begun to make changes to this object's code in an attempt to make it work in a 64-bit application, which makes it difficult to accurately assess the effort that would be required to successfully migrate this object for it to work in 64-bit. These recent changes have currently made the object unusable in a 32-bit environment. Information I've seen on the web leads me to believe that Powerwhizz was initially created in 1998 using PB 7. That's a long time ago and a lot has changed in PB and in Windows!
The object contains 13 internal structures, nearly all of which are used to pass information into and out of Windows API functions. All but two (the devnames and systemtime structures) would require refactoring in order for them to be used in a 64-bit Unicode application. By the way, I concur with Chris that ANSI strings and characters should no longer be used with Windows API function calls. It causes PB to have to perform unnecessary encoding translations and structure conversions and the repacking of structure member values when exchanging data between the PB app and Windows.
The object contains 29 external function declarations to interface with various Windows API's. Nearly all need to be refactored for 64-bit use, and doing so would necessitate changes to any code that calls these external functions, which would also undoubtedly require changes to the datatypes of some of the arguments to the object functions in the NVO.
Some of the structures contain a member that should be assigned the size, in memory, of an instance of that structure. Currently, those structure sizes are coded as instance variables/constants in the Powerwhizz NVO. Changing from ANSI to Unicode increases the size of any structure that contains character/string information (ANSI characters are stored in a single byte, Unicode characters required two-bytes each). If that wasn't enough, the 64-bit version of many of the structures will also increase the memory size of an instance of a structure, due to several factors which I will not go into here.
Any structure members which Windows expects to be defined in a byte or in an array of bytes are currently coded in the Powerwhizz NVO as datatype char. This works in an ANSI implementation, but these datatypes need to changed to Byte for use in a Unicode environment.
What this all boils down to is: The refactoring of the Powerwhizz object so that it will work in a 64-bit Unicode application is a substantial effort that will require the developer to have the necessary expertise. Yes, it can be accomplished, but depending on the skill and expertise of the PB developer, I estimate it would take between two to six weeks (or more) to accomplish. The required changes may then also require changes to be made to the application that is using the Powerwhizz NVO.
Finally, it is important to note that the Powerwhizz source code is clearly copyrighted, so anyone that performs the refactoring of this object may be breaking copyright law.
Best regards, John
Thankyou for the reply. We are using above powerscript function to set or get current printer or to list all the printers or to open the printer settings dialogue box but to modify a printer settings internally without opening dialogue box, we are using powerwhizz.
Thankyou,
Subbiya