[C/C++] Windows下模拟鼠标右键操作

原文地址:http://blog.csdn.net/ariesjzj/article/details/8016476


用Windows提供的Shell类,用户可以在C++中查询和执行鼠标右键的弹出菜单。如下面的例子通过模拟鼠标右键操作来达到将notepad.exe pin到taskbar的目的。注意其中的项名是带快捷键符的。

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 
#import  
using namespace std;

int InvokeItemInPopupMenu(const char * path, const char * file_name, const char * item_name)
{
	CoInitialize(NULL); 

	Shell32::IShellDispatchPtr ptrShell;  
	ptrShell.CreateInstance(__uuidof(Shell32::Shell));  
	_variant_t var((short)Shell32::ssfRECENT);  

	Shell32::FolderPtr ptrFolder = ptrShell->NameSpace(path); 
	Shell32::FolderItemPtr ptrItem = ptrFolder->ParseName(file_name); 
	Shell32::FolderItemVerbsPtr t_verbs = ptrItem->Verbs();

	for (long i = 0; i < t_verbs->Count; ++i) {
		Shell32::FolderItemVerbPtr t_verb = t_verbs->Item(i);
		cout << t_verb->Name << endl;
		if (!strcmp(t_verb->Name, item_name)) {
			t_verb->DoIt();
			Sleep(100);
		}
	}

	ptrItem.Release(); 
	ptrFolder.Release(); 
	ptrShell.Release();  

	CoUninitialize(); 
	return 0; 
}
int main()
{
	InvokeItemInPopupMenu("C:\\Windows", "notepad.exe", "Pin to Tas&kbar");
	return 0;
}



你可能感兴趣的:(Windows)