Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.06;
Скачать: CL | DM;

Вниз

Как получить информацию о процессе   Найти похожие ветки 

 
Handle   (2006-04-16 15:31) [0]

Как получить информацию о процессе такую как
FileDescription
FileVersion
ProductName
ProductVersion
CompanyName


 
begin...end ©   (2006-04-16 15:42) [1]

Это информация об исполняемом файле, а не о процессе. Зная путь к файлу, её можно получить с помощью GetFileVersionInfoSize + GetFileVersionInfo. Значения конкретных параметров затем можно будет выбрать через VerQueryValue.

См. многочисленные примеры в Сети, а также http://delphimaster.net/view/4-1139198374/


 
Handle   (2006-04-16 18:42) [2]


> begin...end ©   (16.04.06 15:42) [1]

Спасибо


 
Handle   (2006-04-16 19:01) [3]

To

> begin...end ©   (16.04.06 15:42) [1]


С FileVersion,ProductVersion понятно
А вот с FileDescription я чёто никак не допру,как это получить?


 
begin...end ©   (2006-04-16 20:40) [4]

> Handle   (16.04.06 19:01) [3]

> А вот с FileDescription я чёто никак не допру,как это получить?

Точно так же, как и FileVersion, ProductVersion и прочее. В ветке по ссылке, которую я привёл в [1], есть ссылка на пример в MSDN -- там как раз получается FileDescription. В одном файле может храниться информация о версии на нескольких языках -- это учтено в примере: там вначале получается список этих языков и кодовых страниц, а затем для каждого элемента списка запрашивается значение блока FileDescription, т.е. получается описание файла на каждом из доступных языков.

Поэтому всё, что нужно было -- перевести этот пример с Си на Паскаль. Например, так:

const
 FileName = "D:\Windows\system32\calc.exe";
type
 PLangAndCodePage = ^TLangAndCodePage;
 TLangAndCodePage = packed record
   wLanguage: Word;
   wCodePage: Word;
 end;
var
 I, InfoSize, BlockLength: Cardinal;
 pInfo: Pointer;
 pLangCP: PLangAndCodePage;
 pDesc: PChar;
begin
 InfoSize := GetFileVersionInfoSize(PChar(FileName), Cardinal(nil^));
 if InfoSize <> 0 then
 begin
   GetMem(pInfo, InfoSize);
   try
     if GetFileVersionInfo(PChar(FileName), 0, InfoSize, pInfo) then
       if VerQueryValue(pInfo, "\VarFileInfo\Translation", Pointer(pLangCP), BlockLength) then
         for I := 0 to Pred(BlockLength div sizeof(TLangAndCodePage)) do
         begin
           if VerQueryValue(pInfo, PChar(Format("\StringFileInfo\%.4x%.4x\FileDescription", [pLangCP.wLanguage, pLangCP.wCodePage])), Pointer(pDesc), BlockLength) then
             ShowMessage(pDesc);
           Inc(pLangCP)
         end
   finally
     FreeMem(pInfo, InfoSize)
   end
 end
end


 
Handle   (2006-04-16 22:13) [5]


> begin...end ©   (16.04.06 20:40) [4]

Спасибо что откликнулся на мою проблему.



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

Текущий архив: 2006.08.06;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.011 c
2-1153036383
qwe777
2006-07-16 11:53
2006.08.06
Форматнуть диск или как снести ОС


2-1153316894
fast2
2006-07-19 17:48
2006.08.06
Не подключается ADOQuery


15-1150354588
ilya39
2006-06-15 10:56
2006.08.06
Стоит ли ехать в Питер перед саммитом G8?


2-1153165789
Vivax
2006-07-17 23:49
2006.08.06
popupmenu


6-1143358786
Коля
2006-03-26 11:39
2006.08.06
Бьюсь с отправлением файла по соксу





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский