右键文件关联

来源:互联网 发布:怪物猎人p3数据库安卓 编辑:程序博客网 时间:2024/04/29 22:04

// 获取桌面文件夹 LPSHELLFOLDER lpDeskFolder = NULL; ::SHGetDesktopFolder(&lpDeskFolder); if( lpDeskFolder == NULL ) { ASSERT(FALSE); return; } int nPathLen = m_strFolder.GetLength(); LPITEMIDLIST ParentPidl = NULL; DWORD dwEaten = 0; USES_CONVERSION; DWORD dwResult = lpDeskFolder->ParseDisplayName( GetSafeHwnd() , 0 , A2W(m_strFolder) , &dwEaten , &ParentPidl , 0); if( dwResult != NOERROR ) { ASSERT( FALSE ); return; } // 得到IShellFolder的信息 LPSHELLFOLDER lpParentFolder = NULL; lpDeskFolder->BindToObject( ParentPidl , 0 , IID_IShellFolder , (void **)&lpParentFolder ); if( lpParentFolder == NULL ) { lpDeskFolder->Release(); lpParentFolder->Release(); ASSERT( FALSE ); return; } LPITEMIDLIST lpItemIDList = NULL; //StringToWideChar(strFileName, wszPath, MAX_PATH); lpParentFolder->ParseDisplayName( GetSafeHwnd() , 0 , A2W(GetSelItemText(0)) , &dwEaten , &lpItemIDList , 0 ); // 得到文件得快捷菜单 LPCONTEXTMENU lpContextMenu = NULL; lpParentFolder->GetUIObjectOf( GetSafeHwnd() , 1 , (LPCITEMIDLIST *)&lpItemIDList , IID_IContextMenu , 0 , (void**)&lpContextMenu ); if( lpContextMenu == NULL ) { lpDeskFolder->Release(); lpParentFolder->Release(); ASSERT( FALSE ); return; } // 定义一个CMINVOKECOMMANDINFO结构. CMINVOKECOMMANDINFO ici; ZeroMemory( &ici, sizeof(ici)); ici.cbSize = sizeof(CMINVOKECOMMANDINFO); ici.hwnd = GetSafeHwnd(); // 如果是弹出文件属性的对话框就用这个 /* ici.lpVerb = "Properties"; lpContextMenu->InvokeCommand(&ici); */ // 下面是弹出右键菜单的代码 HMENU hMenu = CreatePopupMenu(); dwResult = CMF_EXPLORE; lpContextMenu->QueryContextMenu( hMenu, 0, 1, 0x7FFF, dwResult); // 显示菜单 POINT pt; GetCursorPos(&pt); int Cmd = TrackPopupMenu( hMenu , TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_RETURNCMD , pt.x , pt.y , 0 , GetSafeHwnd() , 0 ); ici.lpVerb = MAKEINTRESOURCE(Cmd - 1); ici.lpParameters = ""; ici.lpDirectory = ""; ici.nShow = SW_SHOWNORMAL; lpContextMenu->InvokeCommand(&ici); // 弹出右键菜单结束 lpContextMenu->Release(); lpParentFolder->Release(); lpDeskFolder->Release();




原创粉丝点击