Determine if an executable is a Console Application in C#
Thanks to Scott's comment I went on the hunt to figure out how to tell if an executable is a console application or not. After much hunting I figured out how to do it, here is what I came up with. Enjoy!
public const int SHGFI_EXETYPE = 0x000002000; public const int IMAGE_NT_SIGNATURE = 0x00004550; [DllImport("shell32.dll", CharSet = CharSet.Auto)] public static extern int SHGetFileInfo(string pszPath, int dwFileAttributes, out SHFILEINFO psfi, int cbFileInfo, int uFlags); public static bool IsConsoleApplication(string path) { SHFILEINFO fi; int exeType = SHGetFileInfo(path, 0, out fi, 0, SHGFI_EXETYPE); return (LoWord(exeType) == IMAGE_NT_SIGNATURE && HiWord(exeType) == 0); } public static int LoWord(int dwValue) { return dwValue & 0xFFFF; } public static int HiWord(int dwValue) { return (dwValue >> 16) & 0xFFFF; }