📄 intshcut.h
字号:
/*
* intshcut.h - Internet Shortcut interface definitions.
*
* Copyright 1995 - 1998 Microsoft Corporation. All rights reserved.
*/
#ifndef __INTSHCUT_H__
#define __INTSHCUT_H__
/* Headers
**********/
#include <isguids.h>
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++. */
#endif /* __cplusplus */
/* Constants
************/
/* Define API decoration for direct import of DLL functions. */
#ifdef _INTSHCUT_
#define INTSHCUTAPI
#else
#define INTSHCUTAPI DECLSPEC_IMPORT
#endif
/* HRESULTs */
//
// MessageId: E_FLAGS
//
// MessageText:
//
// The flag combination is invalid.
//
#define E_FLAGS MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1000)
//
// MessageId: IS_E_EXEC_FAILED
//
// MessageText:
//
// The URL's protocol handler failed to run.
//
#define IS_E_EXEC_FAILED MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x2002)
//
// MessageId: URL_E_INVALID_SYNTAX
//
// MessageText:
//
// The URL's syntax is invalid.
//
#define URL_E_INVALID_SYNTAX MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1001)
//
// MessageId: URL_E_UNREGISTERED_PROTOCOL
//
// MessageText:
//
// The URL's protocol does not have a registered protocol handler.
//
#define URL_E_UNREGISTERED_PROTOCOL MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1002)
/* Interfaces
*************/
//
// Input flags for IUniformResourceLocator::SetURL().
//
typedef enum iurl_seturl_flags
{
IURL_SETURL_FL_GUESS_PROTOCOL = 0x0001, // Guess protocol if missing
IURL_SETURL_FL_USE_DEFAULT_PROTOCOL = 0x0002, // Use default protocol if missing
}
IURL_SETURL_FLAGS;
//
// Input flags for IUniformResourceLocator()::InvokeCommand().
//
typedef enum iurl_invokecommand_flags
{
IURL_INVOKECOMMAND_FL_ALLOW_UI = 0x0001,
IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB = 0x0002, // Ignore pcszVerb
}
IURL_INVOKECOMMAND_FLAGS;
//
// Command info for IUniformResourceLocator::InvokeCommand().
//
typedef struct urlinvokecommandinfoA
{
DWORD dwcbSize; // Size of structure
DWORD dwFlags; // Bit field of IURL_INVOKECOMMAND_FLAGS
HWND hwndParent; // Parent window. Valid only if IURL_INVOKECOMMAND_FL_ALLOW_UI is set.
LPCSTR pcszVerb; // Verb to invoke. Ignored if IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB is set.
}
URLINVOKECOMMANDINFOA;
typedef URLINVOKECOMMANDINFOA *PURLINVOKECOMMANDINFOA;
typedef const URLINVOKECOMMANDINFOA CURLINVOKECOMMANDINFOA;
typedef const URLINVOKECOMMANDINFOA *PCURLINVOKECOMMANDINFOA;
typedef struct urlinvokecommandinfoW
{
DWORD dwcbSize; // Size of structure
DWORD dwFlags; // Bit field of IURL_INVOKECOMMAND_FLAGS
HWND hwndParent; // Parent window. Valid only if IURL_INVOKECOMMAND_FL_ALLOW_UI is set.
LPCWSTR pcszVerb; // Verb to invoke. Ignored if IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB is set.
}
URLINVOKECOMMANDINFOW;
typedef URLINVOKECOMMANDINFOW *PURLINVOKECOMMANDINFOW;
typedef const URLINVOKECOMMANDINFOW CURLINVOKECOMMANDINFOW;
typedef const URLINVOKECOMMANDINFOW *PCURLINVOKECOMMANDINFOW;
#ifdef UNICODE
#define URLINVOKECOMMANDINFO URLINVOKECOMMANDINFOW
#define PURLINVOKECOMMANDINFO PURLINVOKECOMMANDINFOW
#define CURLINVOKECOMMANDINFO CURLINVOKECOMMANDINFOW
#define PCURLINVOKECOMMANDINFO PCURLINVOKECOMMANDINFOW
#else
#define URLINVOKECOMMANDINFO URLINVOKECOMMANDINFOA
#define PURLINVOKECOMMANDINFO PURLINVOKECOMMANDINFOA
#define CURLINVOKECOMMANDINFO CURLINVOKECOMMANDINFOA
#define PCURLINVOKECOMMANDINFO PCURLINVOKECOMMANDINFOA
#endif
//===========================================================================
//
// IUniformResourceLocator interface
//
// [OverView]
//
// Provides access to Internet Shortcuts.
//
// [Member functions]
//
// IUniformResourceLocator::SetURL
//
// This member function sets an object's URL.
//
// The dwInFlags parameter specifies the behavior:
//
// IURL_SETURL_FL_GUESS_PROTOCOL: The protocol scheme is guessed and added
// to the URL, if it is not specified in pcszURL.
//
// IURL_SETURL_FL_USE_DEFAULT_PROTOCOL: The default protocol scheme is added
// to the URL, if it is not specified in pcszURL.
//
// The function returns S_OK if the object's URL is set successfully.
// Otherwise, an error code is returned:
//
// E_OUTOFMEMORY: There is not enough memory to complete the operation.
//
// IS_E_EXEC_FAILED: The URL's protocol handler failed to run.
//
// URL_E_INVALID_SYNTAX: The URL's syntax is invalid.
//
// URL_E_UNREGISTERED_PROTOCOL: The URL's protocol does not have a
// registered protocol handler.
//
//
// IUniformResourceLocator::GetURL
//
// This member function retrieves an object's URL. The ppszURL is a
// pointer to a PSTR to be filled in which a pointer to the object's
// URL. When finished, this string should be freed using IMalloc::Free().
//
// The function returns S_OK if the object's URL was retrieved
// successfully. If the object does not have a URL associated with it,
// then S_FALSE is returned and *ppszURL is set to NULL. Otherwise, an
// error code is returned:
//
// E_OUTOFMEMORY: There is not enough memory to complete the operation.
//
// IS_E_EXEC_FAILED: The URL's protocol handler failed to run.
//
// URL_E_INVALID_SYNTAX: The URL's syntax is invalid.
//
// URL_E_UNREGISTERED_PROTOCOL: The URL's protocol does not have a
// registered protocol handler.
//
//
// IUniformResourceLocator::InvokeCommand
//
// This member function invokes a command on an object's URL. The purlici
// parameter is a pointer to a URLINVOKECOMMANDINFO structure which
// describes the command to be invoked.
//
// The function returns S_OK if the object's URL was opened successfully.
// If the object does not have a URL associated with it, the function
// returns S_FALSE. Otherwise, an error code is returned:
//
// E_OUTOFMEMORY: There is not enough memory to complete the operation.
//
// IS_E_EXEC_FAILED: The URL's protocol handler failed to run.
//
// URL_E_INVALID_SYNTAX: The URL's syntax is invalid.
//
// URL_E_UNREGISTERED_PROTOCOL: The URL's protocol does not have a
// registered protocol handler.
//
//===========================================================================
#undef INTERFACE
#define INTERFACE IUniformResourceLocatorA
DECLARE_INTERFACE_(IUniformResourceLocatorA, IUnknown)
{
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_
REFIID riid,
PVOID *ppvObject) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
/* IUniformResourceLocator methods */
STDMETHOD(SetURL)(THIS_
LPCSTR pcszURL,
DWORD dwInFlags) PURE;
STDMETHOD(GetURL)(THIS_
LPSTR *ppszURL) PURE;
STDMETHOD(InvokeCommand)(THIS_
PURLINVOKECOMMANDINFOA purlici) PURE;
};
#undef INTERFACE
#define INTERFACE IUniformResourceLocatorW
DECLARE_INTERFACE_(IUniformResourceLocatorW, IUnknown)
{
/* IUnknown methods */
STDMETHOD(QueryInterface)(THIS_
REFIID riid,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -