基于Visua C++2010 与 Windows 7 SDK开发windows7 Shell应用(1)-搜索文件夹

网友投稿 931 2022-09-15

基于Visua C++2010 与 Windows 7 SDK开发windows7 Shell应用(1)-搜索文件夹

基于Visua C++2010 与 Windows 7 SDK开发windows7 Shell应用(1)-搜索文件夹

windows7 shell 就是windows7操作系统的的控制台

对于熟悉了命令行的人而言,用键盘调用程序比鼠标更快更省力

您可以用"Shell:"命令调用一切可以用资源管理器打开的项目甚至是一次完成.需要很多步骤才能完成的任务.

我们在程序里面如何调用呢,我们来使用为了windows7而生的VS2010,基于C++开发一个shell应用,

基于VS2010+windows7调试通过,

详情请见代码注释

#define STRICT_TYPED_ITEMIDS#include #include #include #include #include #include // 显示界面设置清单挑选正确版本的Comctl32.dll#pragma comment(linker, "/"/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'/"")// 创建一个实例的ICondition的接口,设置搜索的条件HRESULT GetCondition(ICondition **ppCondition){ *ppCondition = NULL; // 创造条件接口。该接口可以帮助创造搜索文件夹的条件。 IConditionFactory2 *pConditionFactory; HRESULT hr = CoCreateInstance(CLSID_ConditionFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pConditionFactory)); if (SUCCEEDED(hr)) { ICondition *pConditionKind; hr = pConditionFactory->CreateStringLeaf(PKEY_Kind, COP_EQUAL, L"Document", NULL, CONDITION_CREATION_DEFAULT, IID_PPV_ARGS(&pConditionKind)); if (SUCCEEDED(hr)) { ICondition *pConditionSize; hr = pConditionFactory->CreateIntegerLeaf(PKEY_Size, COP_GREATERTHAN, 10240, CONDITION_CREATION_DEFAULT, IID_PPV_ARGS(&pConditionSize)); if (SUCCEEDED(hr)) { // 仅当所有条件满足的时候,开始检索文件夹 ICondition *rgConditions[] = {pConditionKind, pConditionSize}; hr = pConditionFactory->CreateCompoundFromArray(CT_AND_CONDITION, rgConditions, ARRAYSIZE(rgConditions), CONDITION_CREATION_DEFAULT, IID_PPV_ARGS(ppCondition)); pConditionSize->Release(); } pConditionKind->Release(); } pConditionFactory->Release(); } return hr;}//开辟了共同文件对话框到IShellItem和等待用户选择的结果文件。//然后显示在消息框中所选项目的名称。HRESULT OpenCommonFileDialogTo(IShellItem *pShellItemSearch){ // 打开文件对话框 IFileDialog* pFileDialog; HRESULT hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pFileDialog)); if (SUCCEEDED(hr)) { // S设置为我们想显示的文件夹 hr = pFileDialog->SetFolder(pShellItemSearch); if (SUCCEEDED(hr)) { // 显示文件对话框 hr = pFileDialog->Show(NULL); if (SUCCEEDED(hr)) { // 获取被选择的文件 IShellItem *pShellItemSelected; hr = pFileDialog->GetResult(&pShellItemSelected); if (SUCCEEDED(hr)) { // 获取文件名称 PWSTR pszName; hr = pShellItemSelected->GetDisplayName(SIGDN_NORMALDISPLAY, &pszName); if (SUCCEEDED(hr)) { //显示它返回给用户 WCHAR szMsg[128]; StringCchPrintf(szMsg, ARRAYSIZE(szMsg), L"You Chose '%s'/r", pszName); MessageBox(NULL, szMsg, L"Search Folder Sample", MB_OK); CoTaskMemFree(pszName); } pShellItemSelected->Release(); } } } pFileDialog->Release(); } return hr;}/ /创建一个数组对象壳项目可访问使用IObjectCollection/ /或IShellItemArray。 IObjectCollection让项目被添加或从集合中删除。/ /对于代码需要运行在windows7上使用SHCreateShellItemArrayFromIDLists()HRESULT CreateShellItemArray(REFIID riid, void **ppv){ *ppv = NULL; IShellLibrary *pLibrary; HRESULT hr = CoCreateInstance(CLSID_ShellLibrary, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pLibrary)); if (SUCCEEDED(hr)) { hr = pLibrary->GetFolders(LFF_ALLITEMS, riid, ppv); pLibrary->Release(); } return hr;}/ /这助手创建的范围对象,它是检索的项目集合/ /定义在搜索的运作情况。HRESULT CreateScope(IShellItemArray **ppsia){ *ppsia = NULL; IObjectCollection *pObjects; HRESULT hr = CreateShellItemArray(IID_PPV_ARGS(&pObjects)); if (SUCCEEDED(hr)) { IShellItem *psi; if (SUCCEEDED(SHCreateItemInKnownFolder(FOLDERID_DocumentsLibrary, 0, NULL, IID_PPV_ARGS(&psi)))) { pObjects->AddObject(psi); psi->Release(); } //其他项目可以添加到pObjects类似上面的代码。 hr = pObjects->QueryInterface(ppsia); pObjects->Release(); } return hr;}//这个程序是一个如何使用ISearchFolderItemFactory接口创建搜索文件夹的示例。//它创建了一个搜索,然后打开了共同文件对话框的显示搜索结果。int wmain(){ //文件对话框拖放功能需要OLE HRESULT hr = OleInitialize(NULL); if (SUCCEEDED(hr)) { ISearchFolderItemFactory *pSearchFolderItemFactory; hr = CoCreateInstance(CLSID_SearchFolderItemFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pSearchFolderItemFactory)); if (SUCCEEDED(hr)) { IShellItemArray *psiaScope; hr = CreateScope(&psiaScope); if (SUCCEEDED(hr)) { hr = pSearchFolderItemFactory->SetScope(psiaScope); if (SUCCEEDED(hr)) { //设置的搜索显示名称 hr = pSearchFolderItemFactory->SetDisplayName(L"Sample Query"); if (SUCCEEDED(hr)) { ICondition* pCondition; hr = GetCondition(&pCondition); if (SUCCEEDED(hr)) { // 设置检索条件 hr = pSearchFolderItemFactory->SetCondition(pCondition); if (SUCCEEDED(hr)) { // 搜索IShellItem。这是一个虚拟桌面。 IShellItem* pShellItemSearch; hr = pSearchFolderItemFactory->GetShellItem(IID_PPV_ARGS(&pShellItemSearch)); if (SUCCEEDED(hr)) { OpenCommonFileDialogTo(pShellItemSearch); pShellItemSearch->Release(); } } pCondition->Release(); } } } psiaScope->Release(); } pSearchFolderItemFactory->Release(); } OleUninitialize(); } return 0;}

附带常用Windows7 shell命令行,大家可以举一反三

shell:Libraries

shell:MusicLibrary

shell:VideosLibrary

shell:OtherUsersFolder

shell:Device Metadata Store

shell:PublicSuggestedLocations

shell:DocumentsLibrary

shell:User Pinned

shell:UsersLibrariesFolder

shell:PicturesLibrary

shell:ImplicitAppShortcuts

shell:Ringtones

shell:CommonRingtones

Windows Vista & 7

shell:Common Programs

shell:GameTasks

shell:UserProfiles

shell:MyComputerFolder

shell:SyncSetupFolder

shell:DpapiKeys

shell:SamplePlaylists

shell:Favorites

shell:My Video

shell:SearchHomeFolder

shell:System

shell:CommonVideo

shell:SyncResultsFolder

shell:LocalizedResourcesDir

shell:Cookies

shell:Original Images

shell:CommonMusic

shell:My Pictures

shell:Cache

shell:Downloads

shell:CommonDownloads

shell:AppData

shell:SyncCenterFolder

shell:My Music

shell:ConflictFolder

shell:SavedGames

shell:InternetFolder

shell:Quick Launch

shell:SystemCertificates

shell:Contacts

shell:TreePropertiesFolder

shell:Profile

shell:Start Menu

shell:Common AppData

shell:PhotoAlbums

shell:ConnectionsFolder

shell:Administrative Tools

shell:PrintersFolder

shell:Default Gadgets

shell:ProgramFilesX86

shell:Searches

shell:Common Startup

shell:ControlPanelFolder

shell:SampleVideos

shell:SendTo

shell:ResourceDir

shell:ProgramFiles

shell:CredentialManager

shell:PrintHood

shell:MAPIFolder

shell:CD Burning

shell:AppUpdatesFolder

shell:Common Start Menu

shell:LocalAppDataLow

shell:Templates

shell:Gadgets

shell:Programs

shell:Recent

shell:SampleMusic

shell:Desktop

shell:CommonPictures

shell:RecycleBinFolder

shell:CryptoKeys

shell:Common Templates

shell:Startup

shell:Links

shell:OEM Links

shell:SamplePictures

shell:Common Desktop

shell:NetHood

shell:Games

shell:Common Administrative Tools

shell:NetworkPlacesFolder

shell:SystemX86

shell:History

shell:AddNewProgramsFolder

shell:Playlists

shell:ProgramFilesCommonX86

shell:PublicGameTasks

shell:ChangeRemoveProgramsFolder

shell:Public

shell:Common Documents

shell:CSCFolder

shell:Local AppData

shell:Windows

shell:UsersFilesFolder

shell:ProgramFilesCommon

shell:Fonts

shell:Personal

Windows 7 Shortcuts

Wireless Networks pop-up

rundll32.exe van.dll,RunVAN

Advanced Restore

sdclt.exe /restorewizardadmin

Restore Files

sdclt.exe /restorewizard

Backup Location & Settings

sdclt.exe /configure

Add Network Location (wizard)

rundll32.exe shwebsvc.dll,AddNetPlaceRunDll

Indexing Options

control.exe srchadmin.dll

Notification Cache

rundll32.exe shell32.dll,Options_RunDLL 5

Aero (Transparency) Off

Rundll32.exe DwmApi #104

Aero (Transparency) On

Rundll32.exe DwmApi #102

Welcome Center

rundll32.exe oobefldr.dll,ShowWelcomeCenter

Add/Remove Programs

RunDll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,0

Content Advisor

RunDll32.exe msrating.dll,RatingSetupUI

Control Panel

RunDll32.exe shell32.dll,Control_RunDLL

Date and Time Properties

RunDll32.exe shell32.dll,Control_RunDLL timedate.cpl

Display Settings

RunDll32.exe shell32.dll,Control_RunDLL access.cpl,,3

Device Manager

RunDll32.exe devmgr.dll DeviceManager_Execute

Folder Options - File Types

RunDll32.exe shell32.dll,Control_Options 2

Folder Options - General

RunDll32.exe shell32.dll,Options_RunDLL 0

Folder Options - Search

RunDll32.exe shell32.dll,Options_RunDLL 2

Folder Options - View

RunDll32.exe shell32.dll,Options_RunDLL 7

Forgotten Password Wizard

RunDll32.exe keymgr.dll,PRShowSaveWizardExW

Hibernate

RunDll32.exe powrprof.dll,SetSuspendState

Keyboard Properties

RunDll32.exe shell32.dll,Control_RunDLL main.cpl @1

Lock Screen

RunDll32.exe user32.dll,LockWorkStation

Mouse Properties

RunDll32.exe shell32.dll,Control_RunDLL main.cpl @0

Map Network Drive

RunDll32.exe shell32.dll,SHHelpShortcuts_RunDLL Connect

Network Connections

RunDll32.exe shell32.dll,Control_RunDLL ncpa.cpl

Power Options

RunDll32.exe Shell32.dll,Control_RunDLL powercfg.cpl

Regional Settings

RunDll32.exe shell32.dll,Control_RunDLL intl.cpl,,3

Stored Usernames and Passwords

RunDll32.exe keymgr.dll,KRShowKeyMgr

System Properties: Advanced

RunDll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,4

System Properties: Automatic Updates

RunDll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,5

Taskbar Properties

RunDll32.exe shell32.dll,Options_RunDLL 1

User Accounts

RunDll32.exe shell32.dll,Control_RunDLL nusrmgr.cpl

Windows Security Center

RunDll32.exe shell32.dll,Control_RunDLL wscui.cpl

Windows - About

RunDll32.exe SHELL32.DLL,ShellAboutW

Unplug/Eject Hardware

RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll

Windows Firewall

RunDll32.exe shell32.dll,Control_RunDLL firewall.cpl

Wireless Network Setup

RunDll32.exe shell32.dll,Control_RunDLL NetSetup.cpl,@0,WNSW

Open Control Panel (All Items)

explorer.exe shell:::{21ec2020-3aea-1069-a2dd-08002b30309d}

Manage Wireless Networks

explorer.exe shell:::{1fa9085f-25a2-489b-85d4-86326eedcd87}

Sound Control Playback Tab

rundll32.exe shell32.dll,Control_RunDLLmmsys.cpl

Sound Control Sounds Tab

rundll32.exe shell32.dll,Control_RunDLLmmsys.cpl,,2

Sound Control Recording Tab

rundll32.exe shell32.dll,Control_RunDLLmmsys.cpl,,1

Add/Remove Programs

rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl

Add/Remove Windows Components

rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2

Set Program Access and Computer Defaults

rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3

People Near Me

rundll32.exe shell32.dll,Control_RunDLL collab.cpl

People Near Me Sign In Tab

rundll32.exe shell32.dll,Control_RunDLL collab.cpl,,1

Screan Resolution

rundll32.exe shell32.dll,Control_RunDLL desk.cpl

Personalization

rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2

Screen Saver

rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1

Windows Firewall

rundll32.exe shell32.dll,Control_RunDLL firewall.cpl

Device Manager

rundll32.exe shell32.dll,Control_RunDLL hdwwiz.cpl

Power Options

rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl

Power Options Change Plan Settings

rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl,,1

System Properties

rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl

System Properties Hardware Tab

rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2

System Properties Advanced Tab

rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3

System Properties System Protection Tab

rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,4

System Properties Remote Tab

rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,5

Pen and Touch Tablet PC Settings

rundll32.exe shell32.dll,Control_RunDLL tabletpc.cpl

Pen and Touch Tablet PC Settings Flicks Tab

rundll32.exe shell32.dll,Control_RunDLL tabletpc.cpl,,1

Pen and Touch Tablet PC Settings Handwriting Tab

rundll32.exe shell32.dll,Control_RunDLL tabletpc.cpl,,2

Phone and Modem Options

rundll32.exe shell32.dll,Control_RunDLL telephon.cpl

Phone and Modem Options Modems Tab

rundll32.exe shell32.dll,Control_RunDLL telephon.cpl,,1

Phone and Modems Options Advanced Tab

rundll32.exe shell32.dll,Control_RunDLL telephon.cpl,,2

Date and Time

rundll32.exe shell32.dll,Control_RunDLL timedate.cpl

Date and Time Additional Clocks

rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1

Action Center

rundll32.exe shell32.dll,Control_RunDLL wscui.cpl

Unplug/Eject Hardware

RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll

Internet Explorer Specific Commands

Delete Temporary Internet Files:

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

Delete Cookies:

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2

Delete History:

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1

Delete Form Data:

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16

Delete Passwords:

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32

Delete All:

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255

Delete All + files and settings stored by Add-ons:

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 4351

本文作者专著《Visual C++2010开发权威指南》即将推出,敬请关注,Visual C++2010最近技术,Windows7开发最新技术!

欢迎技术交流!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Windows 7+mysql 5.6.40 集群搭建
下一篇:函数式编程中的基本概念(编程中函数的定义)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~