Hi HÃ¥kan and Chuck,
It may be something like this:
'-----------------------------------------------------------------------------
Function GetExecutableBitness(ByVal strFullFileName)
Dim oFile
Dim iOffset
Dim oValue
GetExecutableBitness = -1
If (Not aqFile.Exists(strFullFileName)) Then _
Log.Error(strFullFileName & " file was not found")
Set oFile = aqFile.OpenBinaryFile(strFullFileName, aqFile.faRead, False)
oFile.Cursor = &H3C ' contains offset to segmented .EXE header
iOffset = oFile.ReadInt()
oFile.Cursor = iOffset ' move to segmented .EXE header start
oValue = Chr(oFile.ReadByte)
oValue = oValue & Chr(oFile.ReadByte)
If ("PE" <> oValue) Then _
Log.Error(strFullFileName & " file does not contain the required 'PE' signature")
oFile.Cursor = oFile.Cursor + 2
oValue = oFile.ReadShort
Log.Message(aqString.Format("File bitness: 0x%X (%id)", oValue, oValue))
GetExecutableBitness = aqString.Format("0x%X", oValue)
If (Not oFile.Close) Then _
Log.Error(strFullFileName & " file cannot be closed properly")
End Function
'-----------------------------------------------------------------------------
Sub TestGetExecutableBitness()
Dim strBitness
strBitness = GetExecutableBitness("C:\Program Files\Automated QA\TestComplete 7\Bin\msxml4r.dll")
Select Case strBitness
Case "0x14C"
Log.Message("i386")
Case "0x200"
Log.Message("IA64")
Case "0x8664"
Log.Message("AMD64")
Case Else
Log.Warning("Unknown machine type " & strBitness)
End Select
End Sub
'-----------------------------------------------------------------------------