www.pudn.com > 定时关机,定时锁定系统.zip > Shortcut.h


// Shortcut.h : header file 
// 
 
// CShortcut 
// Written 1996 by Rob Warner 
// rhwarner@southeast.net 
// http://users.southeast.net/~rhwarner 
// Distribute freely, modify to your heart's content  
// Let me know if you find it useful, or if you've improved it  
 
// To use: You must #include  in your stdafx.h. 
//         You must also initialize/uninitialize COM.  One way to do this is 
//         in your derived CWinApp::InitInstance(), add the following line: 
// 
//          ::CoInitialize(NULL); 
// 
//         And in your derived CWinApp::ExitInstance(), add the following line: 
// 
//          ::CoUnitialize(); 
// 
 
///////////////////////////////////////////////////////////////////////////// 
// CShortcut 
 
#ifndef _INC_SHORTCUT 
#define _INC_SHORTCUT 
 
#include  
 
typedef struct tagSHORTCUTSTRUCT { 
    CString strPath; 
    CString strTarget; 
    CString strStartDir; 
    CString strDescription; 
    CString strIconLocation; 
    CString strArgs; 
    int     nIconIndex; 
    WORD    wHotkey; 
    int     nShowCmd; 
} SHORTCUTSTRUCT, *LPSHORTCUTSTRUCT; 
 
class  
#ifdef _AFXEXT 
AFX_EXT_CLASS 
#endif 
CShortcut : public CObject 
{ 
// Constructors 
public: 
    CShortcut(); 
    CShortcut(LPCTSTR, BOOL bFill = FALSE); 
    BOOL Create(LPCTSTR, LPCTSTR, LPCTSTR, LPCTSTR, LPCTSTR, LPCTSTR, int, 
        WORD, int); 
    BOOL CreateEx(const LPSHORTCUTSTRUCT); 
 
// Attributes 
public: 
    // Accessors 
    CString GetPath()         { return m_strPath;         } 
    CString GetTarget()       { return m_strTarget;       } 
    CString GetStartDir()     { return m_strStartDir;     } 
    CString GetDescription()  { return m_strDescription;  } 
    CString GetArguments()    { return m_strArgs;         } 
    CString GetIconLocation() { return m_strIconLocation; } 
    int     GetIconIndex()    { return m_nIconIndex;      } 
    HICON   GetLargeIcon()    { return m_hLargeIcon;      } 
    HICON   GetSmallIcon()    { return m_hSmallIcon;      } 
    WORD    GetHotkey()       { return m_wHotkey;         } 
    int     GetShowCmd()      { return m_nShowCmd;        } 
 
    // Mutators 
    void SetPath(LPCTSTR lpsz)           { m_strPath         = lpsz;  m_bDirty = TRUE; } 
    void SetTarget(LPCTSTR lpsz)         { m_strTarget       = lpsz;  m_bDirty = TRUE; } 
    void SetStartDir(LPCTSTR lpsz)       { m_strStartDir     = lpsz;  m_bDirty = TRUE; } 
    void SetArguments(LPCTSTR lpsz)      { m_strArgs         = lpsz;  m_bDirty = TRUE; } 
    void SetIconIndex(const int n)       { m_nIconIndex      = n;     m_bDirty = TRUE; } 
    void SetHotkey(const WORD w)         { m_wHotkey         = w;     m_bDirty = TRUE; } 
    void SetShowCmd(const int n)         { m_nShowCmd        = n;     m_bDirty = TRUE; } 
    void SetDescription(LPCTSTR lpsz)    { m_strDescription  = lpsz;  m_bDirty = TRUE; } 
    void SetIconLocation(LPCTSTR lpsz)   { m_strIconLocation = lpsz;  m_bDirty = TRUE; } 
    void SetLargeIcon(const HICON hIcon) { m_hLargeIcon      = hIcon; m_bDirty = TRUE; } 
    void SetSmallIcon(const HICON hIcon) { m_hSmallIcon      = hIcon; m_bDirty = TRUE; } 
     
protected: 
    BOOL    m_bDirty; 
    CString m_strPath; 
    CString m_strTarget; 
    CString m_strStartDir; 
    CString m_strDescription; 
    CString m_strIconLocation; 
    CString m_strArgs; 
    int     m_nIconIndex; 
    HICON   m_hLargeIcon; 
    HICON   m_hSmallIcon; 
    WORD    m_wHotkey; 
    int     m_nShowCmd; 
 
// Operations 
public: 
    BOOL Save(); 
    BOOL FillData(); 
 
// Overrides 
 
// Implementation 
public: 
    virtual ~CShortcut(); 
 
#ifdef _DEBUG 
    virtual void Dump(CDumpContext&); 
#endif // _DEBUG 
 
protected: 
	void ExtractIcons(); 
    BOOL FileExists(LPCTSTR); 
    BOOL TargetExists(); 
    BOOL FillTarget      (IShellLink* psl); 
    BOOL FillIcons       (IShellLink* psl); 
    BOOL FillDescription (IShellLink* psl); 
    BOOL FillStartDir    (IShellLink* psl); 
    BOOL FillArguments   (IShellLink* psl); 
    BOOL FillHotkey      (IShellLink* psl); 
    BOOL FillShowCmd     (IShellLink* psl); 
}; 
 
#endif