Главная страница
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.47 MB
Время: 0.053 c
6-1143003562
Wano
2006-03-22 07:59
2006.08.06
JavaScript в IE


15-1152772975
Alien1769
2006-07-13 10:42
2006.08.06
Требование по ресурсам 1С


5-1137486493
scorp123
2006-01-17 11:28
2006.08.06
Проблема со свойством Text в ComboBox


15-1152146509
PATRIOT
2006-07-06 04:41
2006.08.06
Проблема с пересылкой файла


2-1152701048
Levin_610
2006-07-12 14:44
2006.08.06
постановка хука на клавиатуру и мышь?