亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? getname.cpp

?? 這個程序主要是利用Explorer中右健菜單來Copy全文件
?? CPP
字號:
//

#include "stdafx.h"
#include "CopyName.h"
#include "GetName.h"

#include "RegisterClass.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CGetName
BOOL AFXAPI CopyStringToClipboard(LPCTSTR szStr);

IMPLEMENT_DYNCREATE(CGetName, CCmdTarget)

CGetName::CGetName()
{
	EnableAutomation();
	
	
	AfxOleLockApp();
}

CGetName::~CGetName()
{
	
	AfxOleUnlockApp();
}


void CGetName::OnFinalRelease()
{

//	CCmdTarget::OnFinalRelease();
	delete this;
}


BEGIN_MESSAGE_MAP(CGetName, CCmdTarget)
	//{{AFX_MSG_MAP(CGetName)
		// 
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BEGIN_DISPATCH_MAP(CGetName, CCmdTarget)
	//{{AFX_DISPATCH_MAP(CGetName)
		// 
	//}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()


// {7ABA2FEC-05A0-11D2-8446-00A02491B6C9}
static const IID IID_IGetName =
{ 0x7aba2fec, 0x5a0, 0x11d2, { 0x84, 0x46, 0x0, 0xa0, 0x24, 0x91, 0xb6, 0xc9 } };

BEGIN_INTERFACE_MAP(CGetName, CCmdTarget)
	INTERFACE_PART(CGetName, IID_IGetName, Dispatch)

    INTERFACE_PART(CGetName, IID_IContextMenu, MenuExt)
    INTERFACE_PART(CGetName, IID_IShellExtInit, ShellInit)

END_INTERFACE_MAP()

// {7ABA2FED-05A0-11D2-8446-00A02491B6C9}
//IMPLEMENT_OLECREATE(CGetName, "CopyName.GetName", 0x7aba2fed, 0x5a0, 0x11d2, 0x84, 0x46, 0x0, 0xa0, 0x24, 0x91, 0xb6, 0xc9)

/////////////////////////////////////////////////////////////////////////////
// CGetName method Handle
IMPLEMENT_OLECREATE_EX(CGetName, "CopyFileName", 0x7aba2fed, 0x5a0, 0x11d2, 0x84, 0x46, 0x0, 0xa0, 0x24, 0x91, 0xb6, 0xc9)

STDMETHODIMP CGetName::XMenuExt::QueryInterface(REFIID riid, void** ppv)
{
    METHOD_PROLOGUE(CGetName, MenuExt);
    TRACE("CGetName::XMenuExt::QueryInterface\n");
    return pThis->ExternalQueryInterface(&riid, ppv);
}

STDMETHODIMP_(ULONG) CGetName::XMenuExt::AddRef(void)
{
    METHOD_PROLOGUE(CGetName, MenuExt);
    return pThis->ExternalAddRef();
}

STDMETHODIMP_(ULONG) CGetName::XMenuExt::Release(void)
{
    METHOD_PROLOGUE(CGetName, MenuExt);
    return pThis->ExternalRelease();
}

STDMETHODIMP CGetName::XMenuExt::QueryContextMenu( HMENU hmenu,UINT indexMenu,
    UINT idCmdFirst, UINT idCmdLast,UINT uFlags)
{

    ::InsertMenu(hmenu, indexMenu++, MF_STRING | MF_BYPOSITION,
        idCmdFirst + ID_NEWCMD, "Copy FileName");

    return ResultFromScode(MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_NULL, (USHORT)2));
}

STDMETHODIMP CGetName::XMenuExt::InvokeCommand(LPCMINVOKECOMMANDINFO lpici)
{
    METHOD_PROLOGUE(CGetName, MenuExt);
//    char szTest[MAX_PATH * 2];

    if (HIWORD(lpici->lpVerb ))
    {
        AfxMessageBox("E_FAIL");
        return E_FAIL;
    }

    if (LOWORD(lpici->lpVerb) > ID_NEWCMD)
    {
        AfxMessageBox("Invalid Arg");
        return E_INVALIDARG;
    }

    if (LOWORD(lpici->lpVerb) == ID_NEWCMD)
    {
		CopyStringToClipboard(pThis->m_szFileName);
//      wsprintf(szTest, "Context menu for file: %s", pThis->m_szFileName);
//      ::MessageBox(lpici->hwnd, szTest, "Context Menu Handler", MB_OK);
    }
    else
        ::MessageBox(lpici->hwnd, "ID != ID_NEWCMD", "Context Menu Handler", MB_OK);
        
    return NOERROR;
}

STDMETHODIMP CGetName::XMenuExt::GetCommandString(UINT idCmd,UINT uType,
    UINT* pwReserved,LPSTR pszName,UINT cchMax)
{
    if (idCmd > ID_NEWCMD)
        return ResultFromScode(E_INVALIDARG);

    if (idCmd == ID_NEWCMD)
        lstrcpy(pszName, "Context Menu Test");

    return NOERROR;
}

// IUnknown for IShellExtInit
STDMETHODIMP CGetName::XShellInit::QueryInterface(REFIID riid, void** ppv)
{
    METHOD_PROLOGUE(CGetName, ShellInit);
    TRACE("CGetName::XShellInit::QueryInterface\n");
    return pThis->ExternalQueryInterface(&riid, ppv);
}

STDMETHODIMP_(ULONG) CGetName::XShellInit::AddRef(void)
{
    METHOD_PROLOGUE(CGetName, ShellInit);
    return pThis->ExternalAddRef();
}

STDMETHODIMP_(ULONG) CGetName::XShellInit::Release(void)
{
    METHOD_PROLOGUE(CGetName, ShellInit);
    return pThis->ExternalRelease();
}

STDMETHODIMP CGetName::XShellInit::Initialize(LPCITEMIDLIST pidlFolder, IDataObject *pdobj, HKEY hkeyProgID)
{
    METHOD_PROLOGUE(CGetName, ShellInit);
    TRACE("CGetName::XShellInit::Intialize\n");

    HRESULT hres = E_FAIL;
    FORMATETC fmte = {CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
    STGMEDIUM medium;

    //
    //  no data object, we dont deal with that.
    //
    if (pdobj == NULL)
    {
	    TRACE("CGetName::XShellInit::Initialize() no data object");
	    return E_FAIL;
    }

    //
    //  use the given IDataObject to get a list of filenames (CF_HDROP)
    //
    hres = pdobj->GetData(&fmte, &medium);

    if (FAILED(hres))
    {
	    TRACE("CGetName::XShellInit::Initialize() cant get data");
	    return E_FAIL;
    }
    //
    // a HDROP can contain more than one file if the user selects
    // multiple files and brings up a context menu your handler
    // will be called.	not all files will be your type! only the
    // first one will be.  unless your handler can deal with
    // any file type, the best thing to do is to not
    // support HDROPs with more than one file.
    //
    if (DragQueryFile((HDROP)medium.hGlobal, (UINT)-1, NULL, 0) == 1)
    {
    	DragQueryFile((HDROP)medium.hGlobal, 0, pThis->m_szFileName, sizeof(pThis->m_szFileName));
	    hres = S_OK;
    }
    else
    	hres = E_FAIL;
 
    //
    //	release the data.
    //
    ReleaseStgMedium(&medium);

    return hres;
}

/*
BOOL CGetName::CGetNameFactory::UpdateRegistry(BOOL bRegister)
{
	return TRUE;
}
*/

BOOL CGetName::CGetNameFactory::UpdateRegistry(BOOL bRegister)
{
	//REFCLSID	
	CRegisterClass	reg(m_clsid,"CopyFileName");

	VERIFY(reg.AddSymbolAlias("*","*") == 3);
	VERIFY(reg.AddSymbolAlias("Directory","Directory") == 4);

	reg.AddEntry("CLSID\\%1\\InProcServer32","Apartment","ThreadingModel");
	reg.AddEntry("%4\\shellex\\ContextMenuHandlers\\%2","%1");
	reg.AddEntry("%5\\shellex\\ContextMenuHandlers\\%2","%1");

	if(bRegister)
	{
		COleObjectFactory::UpdateRegistry(TRUE);
		return reg.Register();
	}
	else
	{
		reg.Register(FALSE);

#ifdef _AFXDLL
		return AfxOleUnregisterClass(m_clsid,NULL);

#else
		reg.RemoveKey("CLSID\\%1");
		reg.RemoveKey("%2");
		return TRUE;
#endif
	}
}

BOOL AFXAPI CopyStringToClipboard(LPCTSTR szStr)
{
	
	HGLOBAL hData;
	LPVOID lpData;
	CString szTemp;
	LPSTR	sz;
	long	nSize;

	szTemp = szStr;
	nSize = szTemp.GetLength()+1;
	sz = szTemp.LockBuffer();
	hData = GlobalAlloc(GHND,nSize);
	if(hData == NULL || 
		(lpData = GlobalLock(hData)) ==NULL )
	{
		GlobalFree(hData);
		return FALSE;
	}
	lstrcpy((LPSTR)lpData,sz);
	GlobalUnlock(hData);
	szTemp.UnlockBuffer();

	if(OpenClipboard(NULL))
	{
		EmptyClipboard();
		SetClipboardData(CF_TEXT,hData);
		CloseClipboard();
	}
	GlobalUnlock(hData);
	GlobalFree(hData);
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97久久超碰国产精品| 日韩一级成人av| 欧美肥妇bbw| 欧美国产成人精品| 加勒比av一区二区| 欧美日韩一区久久| 亚洲欧洲国产日韩| 国产精品一二三四| 91精品国产综合久久精品| **欧美大码日韩| 成人美女在线观看| 欧美精品一区男女天堂| 午夜精品影院在线观看| 91麻豆文化传媒在线观看| 欧美激情一区二区在线| 美女免费视频一区| 在线不卡欧美精品一区二区三区| 亚洲欧洲在线观看av| 国产一区二区免费在线| 精品少妇一区二区三区| 日韩电影在线看| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品一区一区三区| 欧美日韩视频专区在线播放| 亚洲精品免费播放| 色综合中文字幕国产| 国产精品久久久久三级| 盗摄精品av一区二区三区| 久久综合色8888| 精品一区二区三区在线观看| 日韩欧美黄色影院| 九九视频精品免费| 欧美精品一区二| 国产一区二区91| 国产精品―色哟哟| av在线播放一区二区三区| 中文字幕一区二区三区四区| 色综合天天天天做夜夜夜夜做| 国产精品美女久久久久久2018| 豆国产96在线|亚洲| 亚洲国产成人私人影院tom| 暴力调教一区二区三区| 亚洲色图欧美偷拍| 欧美精三区欧美精三区| 日韩精品欧美成人高清一区二区| 欧美一区永久视频免费观看| 奇米色一区二区| 久久免费看少妇高潮| 成人免费毛片嘿嘿连载视频| 亚洲视频免费观看| 欧美男生操女生| 激情欧美日韩一区二区| 亚洲国产精品二十页| 91蜜桃免费观看视频| 天堂一区二区在线| 久久男人中文字幕资源站| 99re这里都是精品| 日韩在线观看一区二区| 26uuu久久综合| 99精品热视频| 欧美aaaaa成人免费观看视频| 久久色在线观看| 一本到三区不卡视频| 日本不卡在线视频| 国产精品视频麻豆| 欧美精品亚洲二区| 国产xxx精品视频大全| 亚洲综合色区另类av| 欧美精品一区二区在线播放| 色av成人天堂桃色av| 久久99精品久久久久久久久久久久 | 91麻豆精品国产91久久久久久 | 欧美日韩一级黄| 国产一区在线精品| 亚洲国产一二三| 国产精品欧美精品| 日韩欧美国产高清| 91久久精品一区二区| 国产精品自拍三区| 午夜视频在线观看一区| 欧美韩国一区二区| 精品电影一区二区| 一本一道久久a久久精品| 九九精品一区二区| 亚洲一区二区三区小说| 国产欧美日韩精品在线| 欧美日韩成人综合在线一区二区 | 久久99精品久久久久婷婷| 中文字幕字幕中文在线中不卡视频| 欧美一级国产精品| 91国产福利在线| 99国产精品一区| 国产大陆a不卡| 美国精品在线观看| 午夜精品久久久久久久久久| 亚洲三级在线免费| 国产精品三级久久久久三级| 久久麻豆一区二区| 久久综合九色综合97婷婷女人| 欧美日韩激情一区二区三区| 色老汉av一区二区三区| 99久久久精品| 成av人片一区二区| 国产综合久久久久久鬼色| 日韩av中文字幕一区二区| 一级特黄大欧美久久久| 亚洲欧美日韩中文播放| 国产精品黄色在线观看| 国产精品午夜春色av| 国产精品色在线观看| 国产精品丝袜黑色高跟| 日本一区二区三区高清不卡| 国产日产欧美一区二区三区 | 日韩欧美一级特黄在线播放| 欧美性猛交xxxx乱大交退制版| 91看片淫黄大片一级| 97精品国产露脸对白| 99国产精品久久久久| 色一区在线观看| 欧洲视频一区二区| 欧美乱妇20p| 欧美白人最猛性xxxxx69交| 精品久久久久久久久久久久久久久| 日韩一区二区三免费高清| 日韩欧美一二三四区| 亚洲精品在线免费播放| 国产欧美日韩久久| 亚洲精品国产成人久久av盗摄 | 欧美三级欧美一级| 欧美男生操女生| 欧美精品一区二区三区四区| 久久综合中文字幕| 国产精品久久久久久久岛一牛影视| 国产精品欧美极品| 亚洲大片一区二区三区| 日本不卡中文字幕| 国产成人av电影在线| 色婷婷国产精品| 欧美一二区视频| 国产免费观看久久| 亚洲一区二区三区视频在线播放 | 国产喂奶挤奶一区二区三区 | 欧美激情一区二区三区不卡| 综合色中文字幕| 污片在线观看一区二区| 99精品久久99久久久久| 欧美日韩国产首页在线观看| 91精品婷婷国产综合久久性色| 欧美mv和日韩mv的网站| 亚洲女人小视频在线观看| 免费av网站大全久久| 粉嫩av一区二区三区| 欧美顶级少妇做爰| 中文字幕免费不卡| 五月激情丁香一区二区三区| 成人激情电影免费在线观看| 欧美视频一二三区| 国产清纯白嫩初高生在线观看91 | 国产激情一区二区三区四区 | 国产精品99久久久久久有的能看| 北条麻妃一区二区三区| 9191久久久久久久久久久| 久久精品亚洲乱码伦伦中文 | 亚洲国产sm捆绑调教视频 | 欧美日韩精品免费观看视频| 久久午夜羞羞影院免费观看| 亚洲愉拍自拍另类高清精品| 国产寡妇亲子伦一区二区| 欧美视频一区二区在线观看| 国产精品短视频| 国产一区二区三区美女| 欧美日韩国产小视频在线观看| 亚洲欧洲日本在线| 国产精品一线二线三线精华| 3d成人动漫网站| 一区二区三区 在线观看视频| 国产综合色精品一区二区三区| 欧美肥妇毛茸茸| 偷拍与自拍一区| 欧美视频三区在线播放| 亚洲激情网站免费观看| av一二三不卡影片| 久久久久久夜精品精品免费| 欧美aaaaaa午夜精品| 中文字幕在线观看不卡视频| 久久国产三级精品| 正在播放亚洲一区| 亚洲成av人片在线观看无码| 色婷婷av久久久久久久| 国产精品理论片| 成人免费视频免费观看| 国产精品美女久久久久aⅴ国产馆| 精品一区二区三区视频| 精品久久久三级丝袜| 奇米精品一区二区三区在线观看一| 精品视频在线免费看| 亚洲欧美日韩国产手机在线 | 精品日产卡一卡二卡麻豆| 肉色丝袜一区二区| 精品三级在线观看|