Главная страница
    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.045 c
9-1081817479
Voland2000
2004-04-13 04:51
2004.08.01
Phyz-forever


3-1089286411
Vopros
2004-07-08 15:33
2004.08.01
Имя пользователя


3-1089202599
Zhekson
2004-07-07 16:16
2004.08.01
как при помощи визуальных компон. формировать код SQL?


4-1087810017
Subdigger
2004-06-21 13:26
2004.08.01
CreateProcess


11-1078062680
nester
2004-02-29 16:51
2004.08.01
Вопрос про demoempty.





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