home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / intshcut.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  36KB  |  1,001 lines

  1. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  2.  
  3. /*
  4.  * intshcut.h - Internet Shortcut interface definitions.
  5.  *
  6.  * Copyright (c) 1995-1998, Microsoft Corporation.  All rights reserved.
  7.  */
  8.  
  9.  
  10. #ifndef __INTSHCUT_H__
  11. #define __INTSHCUT_H__
  12.  
  13. /* Headers
  14.  **********/
  15.  
  16. #include <isguids.h>
  17.  
  18.  
  19. #ifdef __cplusplus
  20. extern "C" {                        /* Assume C declarations for C++. */
  21. #endif   /* __cplusplus */
  22.  
  23.  
  24. /* Constants
  25.  ************/
  26.  
  27. /* Define API decoration for direct import of DLL functions. */
  28.  
  29. #ifdef _INTSHCUT_
  30. #define INTSHCUTAPI
  31. #else
  32. #define INTSHCUTAPI                 DECLSPEC_IMPORT
  33. #endif
  34.  
  35. /* HRESULTs */
  36.  
  37. //
  38. // MessageId: E_FLAGS
  39. //
  40. // MessageText:
  41. //
  42. //  The flag combination is invalid.
  43. //
  44. #define E_FLAGS                     MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1000)
  45.  
  46. //
  47. // MessageId: IS_E_EXEC_FAILED
  48. //
  49. // MessageText:
  50. //
  51. //  The URL's protocol handler failed to run.
  52. //
  53. #define IS_E_EXEC_FAILED            MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x2002)
  54.  
  55. //
  56. // MessageId: URL_E_INVALID_SYNTAX
  57. //
  58. // MessageText:
  59. //
  60. //  The URL's syntax is invalid.
  61. //
  62. #define URL_E_INVALID_SYNTAX        MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1001)
  63.  
  64. //
  65. // MessageId: URL_E_UNREGISTERED_PROTOCOL
  66. //
  67. // MessageText:
  68. //
  69. //  The URL's protocol does not have a registered protocol handler.
  70. //
  71. #define URL_E_UNREGISTERED_PROTOCOL MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1002)
  72.  
  73.  
  74. /* Interfaces
  75.  *************/
  76.  
  77. //
  78. // Input flags for IUniformResourceLocator::SetURL().
  79. //
  80. typedef enum iurl_seturl_flags
  81. {
  82.    IURL_SETURL_FL_GUESS_PROTOCOL        = 0x0001,     // Guess protocol if missing
  83.    IURL_SETURL_FL_USE_DEFAULT_PROTOCOL  = 0x0002,     // Use default protocol if missing
  84. }
  85. IURL_SETURL_FLAGS;
  86.  
  87.  
  88. //
  89. // Input flags for IUniformResourceLocator()::InvokeCommand().
  90. //
  91. typedef enum iurl_invokecommand_flags
  92. {
  93.    IURL_INVOKECOMMAND_FL_ALLOW_UI                  = 0x0001,
  94.    IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB          = 0x0002,    // Ignore pcszVerb
  95.    IURL_INVOKECOMMAND_FL_DDEWAIT                   = 0x0004,    // pass DDEWAIT to ShellExec
  96. }
  97. IURL_INVOKECOMMAND_FLAGS;
  98.  
  99.  
  100. //
  101. // Command info for IUniformResourceLocator::InvokeCommand().
  102. //
  103.  
  104. typedef struct urlinvokecommandinfoA
  105. {
  106.    DWORD  dwcbSize;          // Size of structure
  107.    DWORD  dwFlags;           // Bit field of IURL_INVOKECOMMAND_FLAGS
  108.    HWND   hwndParent;        // Parent window.  Valid only if IURL_INVOKECOMMAND_FL_ALLOW_UI is set.
  109.    LPCSTR pcszVerb;          // Verb to invoke.  Ignored if IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB is set.
  110. }
  111. URLINVOKECOMMANDINFOA;
  112. typedef URLINVOKECOMMANDINFOA *PURLINVOKECOMMANDINFOA;
  113. typedef const URLINVOKECOMMANDINFOA CURLINVOKECOMMANDINFOA;
  114. typedef const URLINVOKECOMMANDINFOA *PCURLINVOKECOMMANDINFOA;
  115.  
  116. typedef struct urlinvokecommandinfoW
  117. {
  118.    DWORD   dwcbSize;          // Size of structure
  119.    DWORD   dwFlags;           // Bit field of IURL_INVOKECOMMAND_FLAGS
  120.    HWND    hwndParent;        // Parent window.  Valid only if IURL_INVOKECOMMAND_FL_ALLOW_UI is set.
  121.    LPCWSTR pcszVerb;          // Verb to invoke.  Ignored if IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB is set.
  122. }
  123. URLINVOKECOMMANDINFOW;
  124. typedef URLINVOKECOMMANDINFOW *PURLINVOKECOMMANDINFOW;
  125. typedef const URLINVOKECOMMANDINFOW CURLINVOKECOMMANDINFOW;
  126. typedef const URLINVOKECOMMANDINFOW *PCURLINVOKECOMMANDINFOW;
  127.  
  128. #ifdef UNICODE
  129. #define URLINVOKECOMMANDINFO            URLINVOKECOMMANDINFOW
  130. #define PURLINVOKECOMMANDINFO           PURLINVOKECOMMANDINFOW
  131. #define CURLINVOKECOMMANDINFO           CURLINVOKECOMMANDINFOW
  132. #define PCURLINVOKECOMMANDINFO          PCURLINVOKECOMMANDINFOW
  133. #else
  134. #define URLINVOKECOMMANDINFO            URLINVOKECOMMANDINFOA
  135. #define PURLINVOKECOMMANDINFO           PURLINVOKECOMMANDINFOA
  136. #define CURLINVOKECOMMANDINFO           CURLINVOKECOMMANDINFOA
  137. #define PCURLINVOKECOMMANDINFO          PCURLINVOKECOMMANDINFOA
  138. #endif
  139.  
  140.  
  141. //===========================================================================
  142. //
  143. // IUniformResourceLocator interface
  144. //
  145. // [OverView]
  146. //
  147. //  Provides access to Internet Shortcuts.
  148. //
  149. // [Member functions]
  150. //
  151. // IUniformResourceLocator::SetURL
  152. //
  153. //   This member function sets an object's URL.
  154. //
  155. //   The dwInFlags parameter specifies the behavior:
  156. //
  157. //  IURL_SETURL_FL_GUESS_PROTOCOL: The protocol scheme is guessed and added
  158. //   to the URL, if it is not specified in pcszURL.
  159. //
  160. //  IURL_SETURL_FL_USE_DEFAULT_PROTOCOL: The default protocol scheme is added
  161. //   to the URL, if it is not specified in pcszURL.
  162. //
  163. //   The function returns S_OK if the object's URL is set successfully.
  164. //  Otherwise, an error code is returned:
  165. //
  166. //  E_OUTOFMEMORY:  There is not enough memory to complete the operation.
  167. //
  168. //  IS_E_EXEC_FAILED:  The URL's protocol handler failed to run.
  169. //
  170. //  URL_E_INVALID_SYNTAX:  The URL's syntax is invalid.
  171. //
  172. //  URL_E_UNREGISTERED_PROTOCOL:  The URL's protocol does not have a
  173. //   registered protocol handler.
  174. //
  175. //
  176. // IUniformResourceLocator::GetURL
  177. //
  178. //   This member function retrieves an object's URL.  The ppszURL is a
  179. //  pointer to a PSTR to be filled in which a pointer to the object's
  180. //  URL.  When finished, this string should be freed using IMalloc::Free().
  181. //
  182. //   The function returns S_OK if the object's URL was retrieved
  183. //  successfully.  If the object does not have a URL associated with it,
  184. //  then S_FALSE is returned and *ppszURL is set to NULL.  Otherwise, an
  185. //  error code is returned:
  186. //
  187. //  E_OUTOFMEMORY:  There is not enough memory to complete the operation.
  188. //
  189. //  IS_E_EXEC_FAILED:  The URL's protocol handler failed to run.
  190. //
  191. //  URL_E_INVALID_SYNTAX:  The URL's syntax is invalid.
  192. //
  193. //  URL_E_UNREGISTERED_PROTOCOL:  The URL's protocol does not have a
  194. //   registered protocol handler.
  195. //
  196. //
  197. // IUniformResourceLocator::InvokeCommand
  198. //
  199. //   This member function invokes a command on an object's URL.  The purlici
  200. //  parameter is a pointer to a URLINVOKECOMMANDINFO structure which
  201. //  describes the command to be invoked.
  202. //
  203. //   The function returns S_OK if the object's URL was opened successfully.
  204. //  If the object does not have a URL associated with it, the function
  205. //  returns S_FALSE.  Otherwise, an error code is returned:
  206. //
  207. //  E_OUTOFMEMORY:  There is not enough memory to complete the operation.
  208. //
  209. //  IS_E_EXEC_FAILED:  The URL's protocol handler failed to run.
  210. //
  211. //  URL_E_INVALID_SYNTAX:  The URL's syntax is invalid.
  212. //
  213. //  URL_E_UNREGISTERED_PROTOCOL:  The URL's protocol does not have a
  214. //   registered protocol handler.
  215. //
  216. //===========================================================================
  217.  
  218. #undef  INTERFACE
  219. #define INTERFACE IUniformResourceLocatorA
  220.  
  221. DECLARE_INTERFACE_(IUniformResourceLocatorA, IUnknown)
  222. {
  223.    /* IUnknown methods */
  224.  
  225.    STDMETHOD(QueryInterface)(THIS_
  226.                              REFIID riid,
  227.                              PVOID *ppvObject) PURE;
  228.    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  229.    STDMETHOD_(ULONG, Release)(THIS) PURE;
  230.  
  231.    /* IUniformResourceLocator methods */
  232.  
  233.    STDMETHOD(SetURL)(THIS_
  234.                      LPCSTR pcszURL,
  235.                      DWORD dwInFlags) PURE;
  236.  
  237.    STDMETHOD(GetURL)(THIS_
  238.                      LPSTR *ppszURL) PURE;
  239.  
  240.    STDMETHOD(InvokeCommand)(THIS_
  241.                             PURLINVOKECOMMANDINFOA purlici) PURE;
  242. };
  243.  
  244. #undef  INTERFACE
  245. #define INTERFACE IUniformResourceLocatorW
  246.  
  247. DECLARE_INTERFACE_(IUniformResourceLocatorW, IUnknown)
  248. {
  249.    /* IUnknown methods */
  250.  
  251.    STDMETHOD(QueryInterface)(THIS_
  252.                              REFIID riid,
  253.                              PVOID *ppvObject) PURE;
  254.    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  255.    STDMETHOD_(ULONG, Release)(THIS) PURE;
  256.  
  257.    /* IUniformResourceLocator methods */
  258.  
  259.    STDMETHOD(SetURL)(THIS_
  260.                      LPCWSTR pcszURL,
  261.                      DWORD dwInFlags) PURE;
  262.  
  263.    STDMETHOD(GetURL)(THIS_
  264.                      LPWSTR *ppszURL) PURE;
  265.  
  266.    STDMETHOD(InvokeCommand)(THIS_
  267.                             PURLINVOKECOMMANDINFOW purlici) PURE;
  268. };
  269.  
  270. #ifdef UNICODE
  271. #define IUniformResourceLocator         IUniformResourceLocatorW
  272. #define IUniformResourceLocatorVtbl     IUniformResourceLocatorWVtbl
  273. #else
  274. #define IUniformResourceLocator         IUniformResourceLocatorA
  275. #define IUniformResourceLocatorVtbl     IUniformResourceLocatorAVtbl
  276. #endif
  277.  
  278. typedef IUniformResourceLocator *PIUniformResourceLocator;
  279. typedef const IUniformResourceLocator CIUniformResourceLocator;
  280. typedef const IUniformResourceLocator *PCIUniformResourceLocator;
  281.  
  282.  
  283. /* Prototypes
  284.  *************/
  285.  
  286. //
  287. // Input flags for TranslateURL().
  288. //
  289. typedef enum translateurl_in_flags
  290. {
  291.    TRANSLATEURL_FL_GUESS_PROTOCOL         = 0x0001,     // Guess protocol if missing
  292.    TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL   = 0x0002,     // Use default protocol if missing
  293. }
  294. TRANSLATEURL_IN_FLAGS;
  295.  
  296.  
  297. //
  298. //   TranslateURL().  This function applies common translations to a URL
  299. //  string, creating a new URL string.
  300. //
  301. //   This function does not perform any validation on the syntax of the input
  302. //  URL string.  A successful return value does not indicate that the input
  303. //  or output URL strings are valid URLS.
  304. //
  305. //   The function returns S_OK if the URL string is translated successfully
  306. //  and *ppszTranslatedURL points to the translated URL string.  S_FALSE
  307. //  is returned if the URL string did not require translation.  An error
  308. //  code is returned if an error occurs.
  309. //
  310. //  Parameters:
  311. //   pcszURL -- A pointer to the URL string to be translated.
  312. //   dwInFlags -- A bit field of TRANSLATEURL_IN_FLAGS.
  313. //   ppszTranslatedURL -- A pointer to the newly created, translated URL
  314. //     string, if any.  *ppszTranslatedURL is only valid if S_OK is returned.
  315. //     If valid, *ppszTranslatedURL should be freed by calling LocalFree().
  316. //     *ppszTranslatedURL is NULL on error.
  317. //
  318.  
  319. INTSHCUTAPI HRESULT WINAPI TranslateURLA(PCSTR pcszURL,
  320.                                          DWORD dwInFlags,
  321.                                          PSTR *ppszTranslatedURL);
  322. INTSHCUTAPI HRESULT WINAPI TranslateURLW(PCWSTR pcszURL,
  323.                                          DWORD dwInFlags,
  324.                                          PWSTR UNALIGNED *ppszTranslatedURL);
  325. #ifdef UNICODE
  326. #define TranslateURL             TranslateURLW
  327. #else
  328. #define TranslateURL             TranslateURLA
  329. #endif   /* UNICODE */
  330.  
  331.  
  332. //
  333. // Input flags for URLAssociationDialog().
  334. //
  335. typedef enum urlassociationdialog_in_flags
  336. {
  337.    URLASSOCDLG_FL_USE_DEFAULT_NAME        = 0x0001,
  338.    URLASSOCDLG_FL_REGISTER_ASSOC          = 0x0002
  339. }
  340. URLASSOCIATIONDIALOG_IN_FLAGS;
  341.  
  342.  
  343. //
  344. //   URLAssocationDialog().  This function invokes the unregistered URL
  345. //  protocol dialog box, providing a standard ui for choosing the handler for
  346. //  an unregistered URL protocol.
  347. //
  348. //  The functions returns S_OK if the application is registered with the
  349. //  URL protocol.  S_FALSE is returned if nothing is registered (a one-time
  350. //  execution via the selected application is requested).
  351. //
  352. //  Parameters:
  353. //   hwndParent -- A handle to the window to be used as the parent
  354. //   dwInFlags -- A bit field of URLASSOCIATIONDIALOG_IN_FLAGS.  The
  355. //                flags are:
  356. //
  357. //                  URLASSOCDLG_FL_USE_DEFAULT_NAME: Use the default Internet
  358. //                   Shortcut file name.  Ignore pcszFile.
  359. //
  360. //                  URLASSOCDLG_FL_REGISTER_ASSOC: The application
  361. //                   selected is to be registered as the handler for URLs
  362. //                   of pcszURL's protocol.  An application is only
  363. //                   registered if this flag is set, and the user indicates
  364. //                   that a persistent association is to be made.
  365. //
  366. //   pcszFile -- The name of the Internet Shortcut file whose URL's protocol
  367. //               requires a protocol handler.  Before a verb, like "open", can
  368. //               be invoked on an Internet Shortcut, a protocol handler must be
  369. //               registered for its URL protocol.  If
  370. //               URLASSOCDLG_FL_USE_DEFAULT_NAME is set in dwInFlags, pcszFile
  371. //               is ignored, and a default Internet Shortcut file name is used.
  372. //               pcszFile is only used for ui.
  373. //   pcszURL -- The URL whose unregistered protocol requires a handler.
  374. //   pszAppBuf -- A buffer to be filled in on success with the path
  375. //                of the application selected by the user.  pszAppBuf's
  376. //                buffer is filled in with the empty string on failure.
  377. //   ucAppBufLen -- The length of pszAppBuf's buffer in characters.
  378. //
  379.  
  380. INTSHCUTAPI HRESULT WINAPI URLAssociationDialogA(HWND hwndParent,
  381.                                                  DWORD dwInFlags,
  382.                                                  PCSTR pcszFile,
  383.                                                  PCSTR pcszURL,
  384.                                                  PSTR pszAppBuf,
  385.                                                  UINT ucAppBufLen);
  386. INTSHCUTAPI HRESULT WINAPI URLAssociationDialogW(HWND hwndParent,
  387.                                                  DWORD dwInFlags,
  388.                                                  PCWSTR pcszFile,
  389.                                                  PCWSTR pcszURL,
  390.                                                  PWSTR pszAppBuf,
  391.                                                  UINT ucAppBufLen);
  392. #ifdef UNICODE
  393. #define URLAssociationDialog     URLAssociationDialogW
  394. #else
  395. #define URLAssociationDialog     URLAssociationDialogA
  396. #endif  /* UNICODE */
  397.  
  398.  
  399. //
  400. // Input flags for MIMEAssocationDialog().
  401. //
  402. typedef enum mimeassociationdialog_in_flags
  403. {
  404.    MIMEASSOCDLG_FL_REGISTER_ASSOC         = 0x0001
  405. }
  406. MIMEASSOCIATIONDIALOG_IN_FLAGS;
  407.  
  408.  
  409. //
  410. //   MIMEAssociationDialog().  Invokes the unregistered MIME content
  411. //  type dialog box.
  412. //
  413. //   This function does not perform any validation on the syntax of the
  414. //  input content type string.  A successful return value does not indicate
  415. //  that the input MIME content type string is a valid content type.
  416. //
  417. //   The function returns S_OK if the MIME content type is associated
  418. //  with the extension.  The extension is associated as the default
  419. //  extension for the content type.  S_FALSE is returned if nothing is
  420. //  registered.  Otherwise, the function returns one of the following
  421. //  errors:
  422. //
  423. //  E_ABORT -- The user cancelled the operation.
  424. //  E_FLAGS -- The flag combination passed in dwFlags is invalid.
  425. //  E_OUTOFMEMORY -- Not enough memory to complete the operation.
  426. //  E_POINTER -- One of the input pointers is invalid.
  427. //
  428. //  Parameters:
  429. //   hwndParent -- A handle to the window to be used as the parent
  430. //                 window of any posted child windows.
  431. //   dwInFlags -- A bit field of MIMEASSOCIATIONDIALOG_IN_FLAGS.  The
  432. //                flags are:
  433. //
  434. //              MIMEASSOCDLG_FL_REGISTER_ASSOC: If set, the application
  435. //               selected is to be registered as the handler for files of
  436. //               the given MIME type.  If clear, no association is to be
  437. //               registered.  An application is only registered if this
  438. //               flag is set, and the user indicates that a persistent
  439. //               association is to be made.  Registration is only possible
  440. //               if pcszFile contains an extension.
  441. //
  442. //   pcszFile -- A pointer to a string indicating the name of the file
  443. //               containing data of pcszMIMEContentType's content type.
  444. //   pcszMIMEContentType -- A pointer to a string indicating the content
  445. //                          type for which an application is sought.
  446. //   pszAppBuf -- A buffer to be filled in on success with the path of
  447. //                the application selected by the user.  pszAppBuf's buffer
  448. //                is filled in with the empty string on failure.
  449. //   ucAppBufLen -- The length of pszAppBuf's buffer in characters.
  450. //
  451.  
  452. INTSHCUTAPI HRESULT WINAPI MIMEAssociationDialogA(HWND hwndParent,
  453.                                                   DWORD dwInFlags,
  454.                                                   PCSTR pcszFile,
  455.                                                   PCSTR pcszMIMEContentType,
  456.                                                   PSTR pszAppBuf,
  457.                                                   UINT ucAppBufLen);
  458. INTSHCUTAPI HRESULT WINAPI MIMEAssociationDialogW(HWND hwndParent,
  459.                                                   DWORD dwInFlags,
  460.                                                   PCWSTR pcszFile,
  461.                                                   PCWSTR pcszMIMEContentType,
  462.                                                   PWSTR pszAppBuf,
  463.                                                   UINT ucAppBufLen);
  464. #ifdef UNICODE
  465. #define MIMEAssociationDialog    MIMEAssociationDialogW
  466. #else
  467. #define MIMEAssociationDialog    MIMEAssociationDialogA
  468. #endif  /* UNICODE */
  469.  
  470.  
  471. //
  472. //   InetIsOffline().  This function determines if the user wants to be
  473. //  "offline" (get all information from the cache).  The dwFlags must be
  474. //  0.
  475. //
  476. //   The function returns TRUE to indicate that the local system is not
  477. //  currently connected to the Internet.  The function returns FALSE to
  478. //  indicate that either the local system is connected to the Internet,
  479. //  or no attempt has yet been made to connect the local system to the
  480. //  Internet.  Applications that wish to support an off-line mode should
  481. //  do so if InetIsOffline() returns TRUE.
  482. //
  483. //   Off-line mode begins when the user has been prompted to dial-in to
  484. //  an Internet providor, but canceled the attempt.
  485. //
  486. INTSHCUTAPI
  487. BOOL
  488. WINAPI
  489. InetIsOffline(
  490.     DWORD dwFlags);
  491.  
  492.  
  493. #ifdef __cplusplus
  494. }                                   /* End of extern "C" {. */
  495. #endif   /* __cplusplus */
  496.  
  497.  
  498. #endif   /* ! __INTSHCUT_H__ */
  499.  
  500.  
  501.  
  502. /*
  503.  * intshcut.h - Internet Shortcut interface definitions.
  504.  *
  505.  * Copyright (c) 1995-1998, Microsoft Corporation.  All rights reserved.
  506.  */
  507.  
  508.  
  509. #ifndef __INTSHCUT_H__
  510. #define __INTSHCUT_H__
  511.  
  512. /* Headers
  513.  **********/
  514.  
  515. #include <isguids.h>
  516.  
  517.  
  518. #ifdef __cplusplus
  519. extern "C" {                        /* Assume C declarations for C++. */
  520. #endif   /* __cplusplus */
  521.  
  522.  
  523. /* Constants
  524.  ************/
  525.  
  526. /* Define API decoration for direct import of DLL functions. */
  527.  
  528. #ifdef _INTSHCUT_
  529. #define INTSHCUTAPI
  530. #else
  531. #define INTSHCUTAPI                 DECLSPEC_IMPORT
  532. #endif
  533.  
  534. /* HRESULTs */
  535.  
  536. //
  537. // MessageId: E_FLAGS
  538. //
  539. // MessageText:
  540. //
  541. //  The flag combination is invalid.
  542. //
  543. #define E_FLAGS                     MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1000)
  544.  
  545. //
  546. // MessageId: IS_E_EXEC_FAILED
  547. //
  548. // MessageText:
  549. //
  550. //  The URL's protocol handler failed to run.
  551. //
  552. #define IS_E_EXEC_FAILED            MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x2002)
  553.  
  554. //
  555. // MessageId: URL_E_INVALID_SYNTAX
  556. //
  557. // MessageText:
  558. //
  559. //  The URL's syntax is invalid.
  560. //
  561. #define URL_E_INVALID_SYNTAX        MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1001)
  562.  
  563. //
  564. // MessageId: URL_E_UNREGISTERED_PROTOCOL
  565. //
  566. // MessageText:
  567. //
  568. //  The URL's protocol does not have a registered protocol handler.
  569. //
  570. #define URL_E_UNREGISTERED_PROTOCOL MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1002)
  571.  
  572.  
  573. /* Interfaces
  574.  *************/
  575.  
  576. //
  577. // Input flags for IUniformResourceLocator::SetURL().
  578. //
  579. typedef enum iurl_seturl_flags
  580. {
  581.    IURL_SETURL_FL_GUESS_PROTOCOL        = 0x0001,     // Guess protocol if missing
  582.    IURL_SETURL_FL_USE_DEFAULT_PROTOCOL  = 0x0002,     // Use default protocol if missing
  583. }
  584. IURL_SETURL_FLAGS;
  585.  
  586.  
  587. //
  588. // Input flags for IUniformResourceLocator()::InvokeCommand().
  589. //
  590. typedef enum iurl_invokecommand_flags
  591. {
  592.    IURL_INVOKECOMMAND_FL_ALLOW_UI                  = 0x0001,
  593.    IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB          = 0x0002,    // Ignore pcszVerb
  594.    IURL_INVOKECOMMAND_FL_DDEWAIT                   = 0x0004,    // pass DDEWAIT to ShellExec
  595. }
  596. IURL_INVOKECOMMAND_FLAGS;
  597.  
  598.  
  599. //
  600. // Command info for IUniformResourceLocator::InvokeCommand().
  601. //
  602.  
  603. typedef struct urlinvokecommandinfoA
  604. {
  605.    DWORD  dwcbSize;          // Size of structure
  606.    DWORD  dwFlags;           // Bit field of IURL_INVOKECOMMAND_FLAGS
  607.    HWND   hwndParent;        // Parent window.  Valid only if IURL_INVOKECOMMAND_FL_ALLOW_UI is set.
  608.    LPCSTR pcszVerb;          // Verb to invoke.  Ignored if IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB is set.
  609. }
  610. URLINVOKECOMMANDINFOA;
  611. typedef URLINVOKECOMMANDINFOA *PURLINVOKECOMMANDINFOA;
  612. typedef const URLINVOKECOMMANDINFOA CURLINVOKECOMMANDINFOA;
  613. typedef const URLINVOKECOMMANDINFOA *PCURLINVOKECOMMANDINFOA;
  614.  
  615. typedef struct urlinvokecommandinfoW
  616. {
  617.    DWORD   dwcbSize;          // Size of structure
  618.    DWORD   dwFlags;           // Bit field of IURL_INVOKECOMMAND_FLAGS
  619.    HWND    hwndParent;        // Parent window.  Valid only if IURL_INVOKECOMMAND_FL_ALLOW_UI is set.
  620.    LPCWSTR pcszVerb;          // Verb to invoke.  Ignored if IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB is set.
  621. }
  622. URLINVOKECOMMANDINFOW;
  623. typedef URLINVOKECOMMANDINFOW *PURLINVOKECOMMANDINFOW;
  624. typedef const URLINVOKECOMMANDINFOW CURLINVOKECOMMANDINFOW;
  625. typedef const URLINVOKECOMMANDINFOW *PCURLINVOKECOMMANDINFOW;
  626.  
  627. #ifdef UNICODE
  628. #define URLINVOKECOMMANDINFO            URLINVOKECOMMANDINFOW
  629. #define PURLINVOKECOMMANDINFO           PURLINVOKECOMMANDINFOW
  630. #define CURLINVOKECOMMANDINFO           CURLINVOKECOMMANDINFOW
  631. #define PCURLINVOKECOMMANDINFO          PCURLINVOKECOMMANDINFOW
  632. #else
  633. #define URLINVOKECOMMANDINFO            URLINVOKECOMMANDINFOA
  634. #define PURLINVOKECOMMANDINFO           PURLINVOKECOMMANDINFOA
  635. #define CURLINVOKECOMMANDINFO           CURLINVOKECOMMANDINFOA
  636. #define PCURLINVOKECOMMANDINFO          PCURLINVOKECOMMANDINFOA
  637. #endif
  638.  
  639.  
  640. //===========================================================================
  641. //
  642. // IUniformResourceLocator interface
  643. //
  644. // [OverView]
  645. //
  646. //  Provides access to Internet Shortcuts.
  647. //
  648. // [Member functions]
  649. //
  650. // IUniformResourceLocator::SetURL
  651. //
  652. //   This member function sets an object's URL.
  653. //
  654. //   The dwInFlags parameter specifies the behavior:
  655. //
  656. //  IURL_SETURL_FL_GUESS_PROTOCOL: The protocol scheme is guessed and added
  657. //   to the URL, if it is not specified in pcszURL.
  658. //
  659. //  IURL_SETURL_FL_USE_DEFAULT_PROTOCOL: The default protocol scheme is added
  660. //   to the URL, if it is not specified in pcszURL.
  661. //
  662. //   The function returns S_OK if the object's URL is set successfully.
  663. //  Otherwise, an error code is returned:
  664. //
  665. //  E_OUTOFMEMORY:  There is not enough memory to complete the operation.
  666. //
  667. //  IS_E_EXEC_FAILED:  The URL's protocol handler failed to run.
  668. //
  669. //  URL_E_INVALID_SYNTAX:  The URL's syntax is invalid.
  670. //
  671. //  URL_E_UNREGISTERED_PROTOCOL:  The URL's protocol does not have a
  672. //   registered protocol handler.
  673. //
  674. //
  675. // IUniformResourceLocator::GetURL
  676. //
  677. //   This member function retrieves an object's URL.  The ppszURL is a
  678. //  pointer to a PSTR to be filled in which a pointer to the object's
  679. //  URL.  When finished, this string should be freed using IMalloc::Free().
  680. //
  681. //   The function returns S_OK if the object's URL was retrieved
  682. //  successfully.  If the object does not have a URL associated with it,
  683. //  then S_FALSE is returned and *ppszURL is set to NULL.  Otherwise, an
  684. //  error code is returned:
  685. //
  686. //  E_OUTOFMEMORY:  There is not enough memory to complete the operation.
  687. //
  688. //  IS_E_EXEC_FAILED:  The URL's protocol handler failed to run.
  689. //
  690. //  URL_E_INVALID_SYNTAX:  The URL's syntax is invalid.
  691. //
  692. //  URL_E_UNREGISTERED_PROTOCOL:  The URL's protocol does not have a
  693. //   registered protocol handler.
  694. //
  695. //
  696. // IUniformResourceLocator::InvokeCommand
  697. //
  698. //   This member function invokes a command on an object's URL.  The purlici
  699. //  parameter is a pointer to a URLINVOKECOMMANDINFO structure which
  700. //  describes the command to be invoked.
  701. //
  702. //   The function returns S_OK if the object's URL was opened successfully.
  703. //  If the object does not have a URL associated with it, the function
  704. //  returns S_FALSE.  Otherwise, an error code is returned:
  705. //
  706. //  E_OUTOFMEMORY:  There is not enough memory to complete the operation.
  707. //
  708. //  IS_E_EXEC_FAILED:  The URL's protocol handler failed to run.
  709. //
  710. //  URL_E_INVALID_SYNTAX:  The URL's syntax is invalid.
  711. //
  712. //  URL_E_UNREGISTERED_PROTOCOL:  The URL's protocol does not have a
  713. //   registered protocol handler.
  714. //
  715. //===========================================================================
  716.  
  717. #undef  INTERFACE
  718. #define INTERFACE IUniformResourceLocatorA
  719.  
  720. DECLARE_INTERFACE_(IUniformResourceLocatorA, IUnknown)
  721. {
  722.    /* IUnknown methods */
  723.  
  724.    STDMETHOD(QueryInterface)(THIS_
  725.                              REFIID riid,
  726.                              PVOID *ppvObject) PURE;
  727.    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  728.    STDMETHOD_(ULONG, Release)(THIS) PURE;
  729.  
  730.    /* IUniformResourceLocator methods */
  731.  
  732.    STDMETHOD(SetURL)(THIS_
  733.                      LPCSTR pcszURL,
  734.                      DWORD dwInFlags) PURE;
  735.  
  736.    STDMETHOD(GetURL)(THIS_
  737.                      LPSTR *ppszURL) PURE;
  738.  
  739.    STDMETHOD(InvokeCommand)(THIS_
  740.                             PURLINVOKECOMMANDINFOA purlici) PURE;
  741. };
  742.  
  743. #undef  INTERFACE
  744. #define INTERFACE IUniformResourceLocatorW
  745.  
  746. DECLARE_INTERFACE_(IUniformResourceLocatorW, IUnknown)
  747. {
  748.    /* IUnknown methods */
  749.  
  750.    STDMETHOD(QueryInterface)(THIS_
  751.                              REFIID riid,
  752.                              PVOID *ppvObject) PURE;
  753.    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  754.    STDMETHOD_(ULONG, Release)(THIS) PURE;
  755.  
  756.    /* IUniformResourceLocator methods */
  757.  
  758.    STDMETHOD(SetURL)(THIS_
  759.                      LPCWSTR pcszURL,
  760.                      DWORD dwInFlags) PURE;
  761.  
  762.    STDMETHOD(GetURL)(THIS_
  763.                      LPWSTR *ppszURL) PURE;
  764.  
  765.    STDMETHOD(InvokeCommand)(THIS_
  766.                             PURLINVOKECOMMANDINFOW purlici) PURE;
  767. };
  768.  
  769. #ifdef UNICODE
  770. #define IUniformResourceLocator         IUniformResourceLocatorW
  771. #define IUniformResourceLocatorVtbl     IUniformResourceLocatorWVtbl
  772. #else
  773. #define IUniformResourceLocator         IUniformResourceLocatorA
  774. #define IUniformResourceLocatorVtbl     IUniformResourceLocatorAVtbl
  775. #endif
  776.  
  777. typedef IUniformResourceLocator *PIUniformResourceLocator;
  778. typedef const IUniformResourceLocator CIUniformResourceLocator;
  779. typedef const IUniformResourceLocator *PCIUniformResourceLocator;
  780.  
  781.  
  782. /* Prototypes
  783.  *************/
  784.  
  785. //
  786. // Input flags for TranslateURL().
  787. //
  788. typedef enum translateurl_in_flags
  789. {
  790.    TRANSLATEURL_FL_GUESS_PROTOCOL         = 0x0001,     // Guess protocol if missing
  791.    TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL   = 0x0002,     // Use default protocol if missing
  792. }
  793. TRANSLATEURL_IN_FLAGS;
  794.  
  795.  
  796. //
  797. //   TranslateURL().  This function applies common translations to a URL
  798. //  string, creating a new URL string.
  799. //
  800. //   This function does not perform any validation on the syntax of the input
  801. //  URL string.  A successful return value does not indicate that the input
  802. //  or output URL strings are valid URLS.
  803. //
  804. //   The function returns S_OK if the URL string is translated successfully
  805. //  and *ppszTranslatedURL points to the translated URL string.  S_FALSE
  806. //  is returned if the URL string did not require translation.  An error
  807. //  code is returned if an error occurs.
  808. //
  809. //  Parameters:
  810. //   pcszURL -- A pointer to the URL string to be translated.
  811. //   dwInFlags -- A bit field of TRANSLATEURL_IN_FLAGS.
  812. //   ppszTranslatedURL -- A pointer to the newly created, translated URL
  813. //     string, if any.  *ppszTranslatedURL is only valid if S_OK is returned.
  814. //     If valid, *ppszTranslatedURL should be freed by calling LocalFree().
  815. //     *ppszTranslatedURL is NULL on error.
  816. //
  817.  
  818. INTSHCUTAPI HRESULT WINAPI TranslateURLA(PCSTR pcszURL,
  819.                                          DWORD dwInFlags,
  820.                                          PSTR *ppszTranslatedURL);
  821. INTSHCUTAPI HRESULT WINAPI TranslateURLW(PCWSTR pcszURL,
  822.                                          DWORD dwInFlags,
  823.                                          PWSTR UNALIGNED *ppszTranslatedURL);
  824. #ifdef UNICODE
  825. #define TranslateURL             TranslateURLW
  826. #else
  827. #define TranslateURL             TranslateURLA
  828. #endif   /* UNICODE */
  829.  
  830.  
  831. //
  832. // Input flags for URLAssociationDialog().
  833. //
  834. typedef enum urlassociationdialog_in_flags
  835. {
  836.    URLASSOCDLG_FL_USE_DEFAULT_NAME        = 0x0001,
  837.    URLASSOCDLG_FL_REGISTER_ASSOC          = 0x0002
  838. }
  839. URLASSOCIATIONDIALOG_IN_FLAGS;
  840.  
  841.  
  842. //
  843. //   URLAssocationDialog().  This function invokes the unregistered URL
  844. //  protocol dialog box, providing a standard ui for choosing the handler for
  845. //  an unregistered URL protocol.
  846. //
  847. //  The functions returns S_OK if the application is registered with the
  848. //  URL protocol.  S_FALSE is returned if nothing is registered (a one-time
  849. //  execution via the selected application is requested).
  850. //
  851. //  Parameters:
  852. //   hwndParent -- A handle to the window to be used as the parent
  853. //   dwInFlags -- A bit field of URLASSOCIATIONDIALOG_IN_FLAGS.  The
  854. //                flags are:
  855. //
  856. //                  URLASSOCDLG_FL_USE_DEFAULT_NAME: Use the default Internet
  857. //                   Shortcut file name.  Ignore pcszFile.
  858. //
  859. //                  URLASSOCDLG_FL_REGISTER_ASSOC: The application
  860. //                   selected is to be registered as the handler for URLs
  861. //                   of pcszURL's protocol.  An application is only
  862. //                   registered if this flag is set, and the user indicates
  863. //                   that a persistent association is to be made.
  864. //
  865. //   pcszFile -- The name of the Internet Shortcut file whose URL's protocol
  866. //               requires a protocol handler.  Before a verb, like "open", can
  867. //               be invoked on an Internet Shortcut, a protocol handler must be
  868. //               registered for its URL protocol.  If
  869. //               URLASSOCDLG_FL_USE_DEFAULT_NAME is set in dwInFlags, pcszFile
  870. //               is ignored, and a default Internet Shortcut file name is used.
  871. //               pcszFile is only used for ui.
  872. //   pcszURL -- The URL whose unregistered protocol requires a handler.
  873. //   pszAppBuf -- A buffer to be filled in on success with the path
  874. //                of the application selected by the user.  pszAppBuf's
  875. //                buffer is filled in with the empty string on failure.
  876. //   ucAppBufLen -- The length of pszAppBuf's buffer in characters.
  877. //
  878.  
  879. INTSHCUTAPI HRESULT WINAPI URLAssociationDialogA(HWND hwndParent,
  880.                                                  DWORD dwInFlags,
  881.                                                  PCSTR pcszFile,
  882.                                                  PCSTR pcszURL,
  883.                                                  PSTR pszAppBuf,
  884.                                                  UINT ucAppBufLen);
  885. INTSHCUTAPI HRESULT WINAPI URLAssociationDialogW(HWND hwndParent,
  886.                                                  DWORD dwInFlags,
  887.                                                  PCWSTR pcszFile,
  888.                                                  PCWSTR pcszURL,
  889.                                                  PWSTR pszAppBuf,
  890.                                                  UINT ucAppBufLen);
  891. #ifdef UNICODE
  892. #define URLAssociationDialog     URLAssociationDialogW
  893. #else
  894. #define URLAssociationDialog     URLAssociationDialogA
  895. #endif  /* UNICODE */
  896.  
  897.  
  898. //
  899. // Input flags for MIMEAssocationDialog().
  900. //
  901. typedef enum mimeassociationdialog_in_flags
  902. {
  903.    MIMEASSOCDLG_FL_REGISTER_ASSOC         = 0x0001
  904. }
  905. MIMEASSOCIATIONDIALOG_IN_FLAGS;
  906.  
  907.  
  908. //
  909. //   MIMEAssociationDialog().  Invokes the unregistered MIME content
  910. //  type dialog box.
  911. //
  912. //   This function does not perform any validation on the syntax of the
  913. //  input content type string.  A successful return value does not indicate
  914. //  that the input MIME content type string is a valid content type.
  915. //
  916. //   The function returns S_OK if the MIME content type is associated
  917. //  with the extension.  The extension is associated as the default
  918. //  extension for the content type.  S_FALSE is returned if nothing is
  919. //  registered.  Otherwise, the function returns one of the following
  920. //  errors:
  921. //
  922. //  E_ABORT -- The user cancelled the operation.
  923. //  E_FLAGS -- The flag combination passed in dwFlags is invalid.
  924. //  E_OUTOFMEMORY -- Not enough memory to complete the operation.
  925. //  E_POINTER -- One of the input pointers is invalid.
  926. //
  927. //  Parameters:
  928. //   hwndParent -- A handle to the window to be used as the parent
  929. //                 window of any posted child windows.
  930. //   dwInFlags -- A bit field of MIMEASSOCIATIONDIALOG_IN_FLAGS.  The
  931. //                flags are:
  932. //
  933. //              MIMEASSOCDLG_FL_REGISTER_ASSOC: If set, the application
  934. //               selected is to be registered as the handler for files of
  935. //               the given MIME type.  If clear, no association is to be
  936. //               registered.  An application is only registered if this
  937. //               flag is set, and the user indicates that a persistent
  938. //               association is to be made.  Registration is only possible
  939. //               if pcszFile contains an extension.
  940. //
  941. //   pcszFile -- A pointer to a string indicating the name of the file
  942. //               containing data of pcszMIMEContentType's content type.
  943. //   pcszMIMEContentType -- A pointer to a string indicating the content
  944. //                          type for which an application is sought.
  945. //   pszAppBuf -- A buffer to be filled in on success with the path of
  946. //                the application selected by the user.  pszAppBuf's buffer
  947. //                is filled in with the empty string on failure.
  948. //   ucAppBufLen -- The length of pszAppBuf's buffer in characters.
  949. //
  950.  
  951. INTSHCUTAPI HRESULT WINAPI MIMEAssociationDialogA(HWND hwndParent,
  952.                                                   DWORD dwInFlags,
  953.                                                   PCSTR pcszFile,
  954.                                                   PCSTR pcszMIMEContentType,
  955.                                                   PSTR pszAppBuf,
  956.                                                   UINT ucAppBufLen);
  957. INTSHCUTAPI HRESULT WINAPI MIMEAssociationDialogW(HWND hwndParent,
  958.                                                   DWORD dwInFlags,
  959.                                                   PCWSTR pcszFile,
  960.                                                   PCWSTR pcszMIMEContentType,
  961.                                                   PWSTR pszAppBuf,
  962.                                                   UINT ucAppBufLen);
  963. #ifdef UNICODE
  964. #define MIMEAssociationDialog    MIMEAssociationDialogW
  965. #else
  966. #define MIMEAssociationDialog    MIMEAssociationDialogA
  967. #endif  /* UNICODE */
  968.  
  969.  
  970. //
  971. //   InetIsOffline().  This function determines if the user wants to be
  972. //  "offline" (get all information from the cache).  The dwFlags must be
  973. //  0.
  974. //
  975. //   The function returns TRUE to indicate that the local system is not
  976. //  currently connected to the Internet.  The function returns FALSE to
  977. //  indicate that either the local system is connected to the Internet,
  978. //  or no attempt has yet been made to connect the local system to the
  979. //  Internet.  Applications that wish to support an off-line mode should
  980. //  do so if InetIsOffline() returns TRUE.
  981. //
  982. //   Off-line mode begins when the user has been prompted to dial-in to
  983. //  an Internet providor, but canceled the attempt.
  984. //
  985. INTSHCUTAPI
  986. BOOL
  987. WINAPI
  988. InetIsOffline(
  989.     DWORD dwFlags);
  990.  
  991.  
  992. #ifdef __cplusplus
  993. }                                   /* End of extern "C" {. */
  994. #endif   /* __cplusplus */
  995.  
  996.  
  997. #endif   /* ! __INTSHCUT_H__ */
  998.  
  999.  
  1000. #pragma option pop /*P_O_Pop*/
  1001.