dcsimg
Login | Register   
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Intermediate
Aug 7, 1999

WEBINAR:

On-Demand

Application Security Testing: An Integral Part of DevOps


Determine whether a program is 16- or 32-bit

Even if we're living in a 32-bit world, and closer and closer to the 64-bit day, 16-bit programs are still running out there. Knowing whether a given EXE is 32-bit or not can be useful when you have to arrange version checking routine, for example to detect which version of a product is installed.

The Win32 SDK makes available a multi-use function called SHGetFileInfo() that serves the purpose. It is declared like this:


Type SHFILEINFO
   hIcon As Long
   iIcon As Long
   dwAttributes As Long
   szDisplayName As String * MAX_PATH
   szTypeName As String * 80
End Type

Public Const SHGFI_EXETYPE = &H2000

Public Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" _
    ( ByVal pszPath As String, ByVal dwFileAttributes As Long, _
    psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long ) As _
    Long 
Its usage is:

dw = SHGetFileInfo(exename, 0, sfi, Len(sfi), SHGFI_EXETYPE)
The returned low word contains the signature of the executable. You must compare it against the following values:

Const WIN32_GUI = &H4550   ' PE, Win32
Const WIN16_GUI = &H454E   ' NE, Win16
Const WIN16_DOS = &H5A4D   ' MZ, MS-DOS
You can obtain the low word in this way:
dw = SHGetFileInfo(exename, 0, sfi, Len(sfi), SHGFI_EXETYPE)
lowWord = dw And &H7FFF
This tip is taken from the book Visual C++ Windows Shell Programming by Dino Esposito.
Dino Esposito
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date