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

Вниз

Как работать с IDL файлами в Delphi?   Найти похожие ветки 

 
Aldor_   (2004-07-13 15:40) [0]

В MSDN нашел описание нужных мне интерфейсов, однако вместо привычных разделов "Header" и "Library" там стоит "Headers and IDL files - shappmgr.h, shappmgr.idl". У меня таких файлов на компе даже нет (WinXP). Что с ними по правилам нужно делать?


 
Nikolay M. ©   (2004-07-13 15:47) [1]

В Add/Remove programs свою программу прописываешь?


 
Гаврила ©   (2004-07-13 15:48) [2]

//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (c) Microsoft Corporation. All rights reserved.
//
//--------------------------------------------------------------------------

cpp_quote("#ifndef _SHAPPMGR_H_")
cpp_quote("#define _SHAPPMGR_H_")

//
// shappmgr.idl : IDL source for shappmgr.h
//
import "oaidl.idl";
import "ocidl.idl";
import "appmgmt.h";

//
// IShellApp interface
//
[
   uuid(A3E14960-935F-11D1-B8B8-006008059382),     // IID_IShellApp
   object
]
interface IShellApp : IUnknown
{
   typedef enum _tagAppInfoFlags {
       AIM_DISPLAYNAME           = 0x00000001,
       AIM_VERSION               = 0x00000002,
       AIM_PUBLISHER             = 0x00000004,
       AIM_PRODUCTID             = 0x00000008,
       AIM_REGISTEREDOWNER       = 0x00000010,
       AIM_REGISTEREDCOMPANY     = 0x00000020,
       AIM_LANGUAGE              = 0x00000040,
       AIM_SUPPORTURL            = 0x00000080,
       AIM_SUPPORTTELEPHONE      = 0x00000100,
       AIM_HELPLINK              = 0x00000200,
       AIM_INSTALLLOCATION       = 0x00000400,
       AIM_INSTALLSOURCE         = 0x00000800,
       AIM_INSTALLDATE           = 0x00001000,
//        AIM_REQUIREDBYPOLICY      = 0x00002000,  Obsolete. Do not reuse.
       AIM_CONTACT               = 0x00004000,
       AIM_COMMENTS              = 0x00008000,
       AIM_IMAGE                 = 0x00020000,
       AIM_READMEURL             = 0x00040000,
       AIM_UPDATEINFOURL         = 0x00080000
   } APPINFODATAFLAGS;

   typedef struct _AppInfoData {
       DWORD cbSize;
       DWORD dwMask;                // APPINFODATAFLAGS, IN/OUT
       LPWSTR pszDisplayName;
       LPWSTR pszVersion;
       LPWSTR pszPublisher;
       LPWSTR pszProductID;
       LPWSTR pszRegisteredOwner;
       LPWSTR pszRegisteredCompany;
       LPWSTR pszLanguage;
       LPWSTR pszSupportUrl;
       LPWSTR pszSupportTelephone;
       LPWSTR pszHelpLink;
       LPWSTR pszInstallLocation;
       LPWSTR pszInstallSource;
       LPWSTR pszInstallDate;
       LPWSTR pszContact;
       LPWSTR pszComments;
       LPWSTR pszImage;
       LPWSTR pszReadmeUrl;
       LPWSTR pszUpdateInfoUrl;
   } APPINFODATA, *PAPPINFODATA;

   HRESULT GetAppInfo([in, out] PAPPINFODATA pai);

   typedef enum _tagAppActionFlags {
       APPACTION_INSTALL      = 0x00000001,
       APPACTION_UNINSTALL    = 0x00000002,
       APPACTION_MODIFY       = 0x00000004,
       APPACTION_REPAIR       = 0x00000008,
       APPACTION_UPGRADE      = 0x00000010,
       APPACTION_CANGETSIZE   = 0x00000020,
       APPACTION_MODIFYREMOVE = 0x00000080,
       APPACTION_ADDLATER     = 0x00000100,
       APPACTION_UNSCHEDULE   = 0x00000200
   } APPACTIONFLAGS;

   HRESULT GetPossibleActions([out] DWORD * pdwActions);
   //
   // Synchronously obtains the slow info for the app. This method call
   // can be very slow.
   //
   typedef struct _tagSlowAppInfo {
       ULONGLONG ullSize;
       FILETIME  ftLastUsed;
       int       iTimesUsed;
       LPWSTR    pszImage;
   } SLOWAPPINFO, *PSLOWAPPINFO;

   HRESULT GetSlowAppInfo([in] PSLOWAPPINFO psaid);
   //
   // Obtain the cached slow info for the app, this will be fast.
   //
   HRESULT GetCachedSlowAppInfo([in] PSLOWAPPINFO psaid);
   //
   // Returns S_OK if installed S_FALSE if not installed
   //
   HRESULT IsInstalled(void);
};

//
// IPublishedApp interface
//
[
   uuid(1BC752E0-9046-11D1-B8B3-006008059382),     // IID_IPublishedApp
   object
]
interface IPublishedApp : IShellApp
{
   typedef enum _tagPublishedAppInfoFlags {
       PAI_SOURCE        = 0x00000001,
       PAI_ASSIGNEDTIME  = 0x00000002,
       PAI_PUBLISHEDTIME = 0x00000004,
       PAI_SCHEDULEDTIME = 0x00000008,
       PAI_EXPIRETIME    = 0x00000010
   } PUBAPPINFOFLAGS;

   typedef struct _PubAppInfo {
       DWORD cbSize;
       DWORD dwMask;              // PUBAPPINFOFLAGS, IN/OUT
       LPWSTR pszSource;
       SYSTEMTIME  stAssigned;
       SYSTEMTIME  stPublished;
       SYSTEMTIME  stScheduled;
       SYSTEMTIME  stExpire;
   } PUBAPPINFO, *PPUBAPPINFO;

   HRESULT Install([in]LPSYSTEMTIME pstInstall);
   HRESULT GetPublishedAppInfo([in, out] PPUBAPPINFO ppai);
   HRESULT Unschedule(void);
};

//
// IEnumPublishedApps interface
//
[
   uuid(0B124F8C-91F0-11D1-B8B5-006008059382),     // IID_IEnumPublishedApps
   object
]
interface IEnumPublishedApps : IUnknown
{

   HRESULT Next([out] IPublishedApp** pia);
   HRESULT Reset(void);
};

//
// IAppPublisher interface
//
[
   uuid(07250A10-9CF9-11D1-9076-006008059382),     // IID_IAppPublisher
   object
]
interface IAppPublisher : IUnknown
{
   HRESULT GetNumberOfCategories(DWORD * pdwCat);
   HRESULT GetCategories(APPCATEGORYINFOLIST * pAppCategoryList);
   HRESULT GetNumberOfApps(DWORD * pdwApps);
   HRESULT EnumApps(GUID * pAppCategoryId, IEnumPublishedApps ** ppepa);
}

cpp_quote("#endif // _SHAPPMGR_H_")


 
Nikolay M. ©   (2004-07-13 15:52) [3]


> shappmgr.h, shappmgr.idl". У меня таких файлов на компе
> даже нет (WinXP).

А ты Visual Studio ставил, чтобы они были?


 
Aldor_   (2004-07-14 04:08) [4]

> Nikolay M. ©   (13.07.04 15:47) [1]
> В Add/Remove programs свою программу прописываешь?

 Немного наоборот: список считываю :)

> А ты Visual Studio ставил, чтобы они были?

 Насколько я понимаю, с VS поставляются _заголовки_, а вот сама библиотека (.idl???) должна ведь быть в винде, или я неправ?

Гаврила ©   (13.07.04 15:48) [2]
Спасибо большое, родные заголовки - то, что нужно :)
Только вот это смущает:

import "appmgmt.h";

import - это тоже самое что include? Если так, то какие из деклараций используют appmgmt.h? Если не трудно.

И все-таки главный вопрос - .idl - это библиотека? Можно писать LoadLibrary("shappmgr.idl")?


 
Aldor_   (2004-07-14 06:04) [5]

Хм, нашел библиотеку appmgr.dll, проверил функции из заголовков из [2]. Они там есть. Возможно, это и есть та самая библиотека. Тогда какой смысл в msdn не приводить ссылку на dll-файл,


 
Aldor_   (2004-07-14 06:08) [6]

Ошибся, нет там функций с такими названиями, "The specified procedure cannot be found".  Почти впервый раз в жизни ставлю отрицательный смайлик :((


 
Aldor_   (2004-07-14 11:55) [7]

На всякий случай пример таких деклараций:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/iapppublisher/E numApps.asp

 заодно ветку подниму...


 
Оши   (2004-07-14 12:15) [8]

import "appmgmt.h";
это не тоже самое что include ...


 
Aldor_   (2004-07-14 12:37) [9]

Оши   (14.07.04 12:15) [8]

 Спасибо, ухожу в гугл ("import vs include") :)


 
Aldor ©   (2004-07-16 23:16) [10]

Еще раз Up. Последний.



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

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

Наверх




Память: 0.5 MB
Время: 0.026 c
14-1089402150
Baron
2004-07-09 23:42
2004.08.01
Потрепать


6-1086031136
Erazzzer
2004-05-31 23:18
2004.08.01
Indy 10


1-1090014902
DeOptric2
2004-07-17 01:55
2004.08.01
Цвет


6-1085591356
DelphiN!
2004-05-26 21:09
2004.08.01
Ввести имя пользователя и пароль на сайте


1-1089890552
Уток
2004-07-15 15:22
2004.08.01
Получить изображение из вебстранички