Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

Является ли приложение консольным?   Найти похожие ветки 

 
Def_E   (2004-04-14 00:03) [0]

Можно ли, зная путь к программе, узнать, является ли она консольной? Если да, то как?


 
Pat ©   (2004-04-14 00:16) [1]

>Можно ли, зная путь к программе, узнать, является ли она консольной?
Смотри формат PE-файла. Есть там какой-то байтик, говорящий, куда идет вывод.
А вообще-то мне ничто не мешает в программе на VCL вызвать AllocConsole. Помнится как-то делал курсовик с помощью такого изврата :-)) (не по собственной воле)


 
Def_E   (2004-04-14 23:31) [2]

Нашел некий вариант - использование функции SHGetFileInfo. Можно хотя бы выявить ДОС программы. Но честно говоря, этого мало, а в PE заголовок руками лезть как-то не хочется, к тому же, посмотрел обисание формата (не полное) так сразу нужного блока не нашел.

Const WIN32_GUI = $4550;   //PE, Win32
     WIN16_GUI = $454E;   //NE, Win16
     WIN16_DOS = $5A4D;   //MZ, MS-DOS
var
 iRet: Integer;
 rSHFI: TSHFileInfo;
begin
 iRet := SHGetFileInfo("C:\WINDOWS\system32\cmd.exe", 0, rSHFI, SizeOf(rSHFI), SHGFI_EXETYPE);
 ShowMessage(IntToHex(iRet,4));
end;


 
Def_E   (2004-04-15 08:35) [3]

???


 
Jack128 ©   (2004-04-15 10:49) [4]

http://power.org.ru/modules.php?op=modload&name=News&file=article&sid=5&POSTNUKESID=7646320e8e35548a43a2770adab228be
>  так сразу нужного блока не нашел

[2] Заголовок PE файла (PE Header)

5Ch Word SubSystem операционная подсистема необходимая для запуска данного файла (GUI, консоль...)


 
TUser ©   (2004-04-15 10:54) [5]

Я сам не спец по этому формату. Но там вот есть такая фишка в заголовке
5Ch Word SubSystem операционная подсистема необходимая для запуска данного файла (GUI, консоль...)  
SubSystem имеет следующие значения:

0000h - а черт его знает
0001h - Native, пошли вы все к такой-то матери, никто не нужен
0002h - Windows GUI, т.е. окошечная
0003h - Windows Character (консольное приложение)
0005h - OS/2 Character
0007h - Posix Character (формат PE с юниховского передран, вот и. . .)

Тебе надо наверное ловить $3


 
TUser ©   (2004-04-15 10:55) [6]

Ооопс. С одного сайта инфу выкопали ... :)


 
Jack128 ©   (2004-04-15 11:03) [7]

Угу.. Вообще любопытное чтиво -) Оказывается в exe"шник столько барахла пихают -))


 
TUser ©   (2004-04-15 11:43) [8]

Сечас начнется дискуссия по поводу качества борландовского компилятора :)


 
Def_E   (2004-04-15 21:41) [9]

Спасибо за ссылку на описание формата. С его помощью все решил.

Function ConsoleApplication(FileName:String):Boolean;
var
 fs: TFilestream;
 lfanew:longint;
 Subsystem:Word;
begin
fs := TFilestream.Create(FileName, fmOpenread or fmShareDenyNone);

fs.Seek($3C,soFromBeginning); //Offset to PE header
fs.Read(lfanew,sizeof(lfanew)); //File address of new exe header
fs.seek(lfanew+$5C, soFromBeginning); //Offset to optional header subsystem
fs.Read(Subsystem,sizeof(Subsystem));

if Subsystem=IMAGE_SUBSYSTEM_WINDOWS_CUI then Result:=true
 else Result:=False;

fs.Free;
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.035 c
1-1082275000
Master Paleva
2004-04-18 11:56
2004.05.02
Как прописать что-либо в реестр из Делфи


1-1082026377
Fast
2004-04-15 14:52
2004.05.02
Преобразование BYTE to BIN


7-1078808748
Shark
2004-03-09 08:05
2004.05.02
Delphi и SIEMENS S7


1-1081806015
griban11
2004-04-13 01:40
2004.05.02
StringGrid


1-1081936998
Aks
2004-04-14 14:03
2004.05.02
Текст инет-странички





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский