程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [C/C++] Windows下模擬鼠標右鍵操作

[C/C++] Windows下模擬鼠標右鍵操作

編輯:C++入門知識

用Windows提供的Shell類,用戶可以在C++中查詢和執行鼠標右鍵的彈出菜單。如下面的例子通過模擬鼠標右鍵操作來達到將notepad.exe pin到taskbar的目的。注意其中的項名是帶快捷鍵符的。


[cpp] 
#define _CRT_SECURE_NO_WARNINGS  
#include <cstdio>  
#include <cstdlib>  
#include <cassert>  
#include <cstring>  
#include <windows.h>  
#include <iostream>  
#include <string>  
 
#include <shellapi.h>  
#include <Shobjidl.h>  
#include <shlobj.h>  
#import <Shell32.dll>   
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; 

#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <cstring>
#include <windows.h>
#include <iostream>
#include <string>

#include <shellapi.h>
#include <Shobjidl.h>
#include <shlobj.h>
#import <Shell32.dll>
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;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved