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

Вниз

Как работать с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.037 c
14-1090096367
KilkennyCat
2004-07-18 00:32
2004.08.01
Встреча мастаков в 31-го в Выборге.


1-1089881798
Th
2004-07-15 12:56
2004.08.01
Проблема с определением позиции каретки в TMemo


14-1089281302
kaif
2004-07-08 14:08
2004.08.01
Как можно опошлить любую хорошую идею


1-1090239944
Lenor
2004-07-19 16:25
2004.08.01
сравнение TMemo.Lines


9-1074707880
Zak3D[@Tm]
2004-01-21 20:58
2004.08.01
MP3 и Gif ы в Delphi???





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