ايران ويج

نسخه‌ی کامل: شناسایی Subsystem یک فایل
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
کد:
#COMPILE EXE
#INCLUDE "win32api.inc"
%IMAGE_SUBSYSTEM_DOS = -1
FUNCTION PESubsystem(sFile AS STRING) AS LONG
LOCAL hdrNT AS IMAGE_NT_HEADERS, hdrDOS AS Image_DOS_Header, hFile AS LONG

hFile = FREEFILE
OPEN sFile FOR BINARY ACCESS READ LOCK SHARED AS #hFile
GET #hFile,, hdrDOS
SEEK #hFile, 0: SEEK #hFile, hdrDOS.e_lfanew + 1
se% = SEEK(#1)
GET #hFile,, hdrNT
CLOSE #hFile
IF hdrNT.OptionalHeader.Magic <> %IMAGE_NT_OPTIONAL_HDR32_MAGIC THEN 'PE
FUNCTION = -1
ELSE
FUNCTION = hdrNT.OptionalHeader.SubSystem
END IF
END FUNCTION

FUNCTION PBMAIN() AS LONG
SELECT CASE PESubsystem("FileAddress")
CASE %IMAGE_SUBSYSTEM_DOS: MSGBOX "DOS only"
CASE %IMAGE_SUBSYSTEM_NATIVE: MSGBOX "Native (no subsystem)"
CASE %IMAGE_SUBSYSTEM_WINDOWS_GUI: MSGBOX "Windows GUI"
CASE %IMAGE_SUBSYSTEM_WINDOWS_CUI: MSGBOX "Windows Console"
CASE %IMAGE_SUBSYSTEM_OS2_CUI: MSGBOX "OS/2 Console"
CASE %IMAGE_SUBSYSTEM_POSIX_CUI: MSGBOX "Posix Console"
CASE %IMAGE_SUBSYSTEM_NATIVE_WINDOWS: MSGBOX "Native Win9x driver (VXD)"
CASE %IMAGE_SUBSYSTEM_WINDOWS_CE_GUI: MSGBOX "Windows CE"
END SELECT
END FUNCTION

به جای FileAddress در خط اول در تابع PBMain آدرس فایل مورد نظر را بنویسید