在windows中有一个很好的方式就是右键执行程序,怎么做?下面就是,比较简单
show me the code#include
#include
#include
using namespace std;
void add(string strMenuText, string strApplication);
void del(string strMenuText);
int main() {
add("上传文档到xx云", "d:/filesystemfile1.exe");
system("pause");
return 0;
}
void add(string strMenuText, string strApplication) {
HKEY hresult;
long value;
string strRegKeyName = strMenuText;
string strRegKey = "*\\shell\\" + strRegKeyName;//if txt file, please use "txtfile\\shell\\用我的文本编辑程序打开"
string strRegSubkey = "*\\shell\\" + strRegKeyName + "\\command";
strApplication = strApplication + " %1";
DWORD dwPos;
value = RegCreateKeyEx(HKEY_CLASSES_ROOT, (LPSTR)(LPCSTR)strRegKey.c_str(), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_CREATE_SUB_KEY | KEY_ALL_ACCESS, NULL, &hresult, &dwPos);
value = RegSetValueEx(hresult, NULL, 0, REG_SZ, (BYTE*)(LPCTSTR)strMenuText.c_str(), strMenuText.length());
value = RegCreateKeyEx(HKEY_CLASSES_ROOT, (LPSTR)(LPCSTR)strRegSubkey.c_str(), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_CREATE_SUB_KEY | KEY_ALL_ACCESS, NULL, &hresult, &dwPos);
value = RegSetValueEx(hresult, NULL, 0, REG_SZ, (const BYTE*)(LPCTSTR)strApplication.c_str(), strApplication.length());
::RegCloseKey(hresult);
}
void del(string strMenuText) {
HKEY hKey;
//string strRegKeyName = "我的加密";
string strRegKeyName = strMenuText;
string strRegKey = "*\\shell\\" + strRegKeyName;
string strRegSubkey = "*\\shell";
//打开父键
long lRet = ::RegOpenKeyEx(HKEY_CLASSES_ROOT, (LPSTR)(LPCSTR)strRegKey.c_str(), 0, KEY_READ, &hKey);
//删除“command”子键
::RegDeleteKey(hKey, LPCTSTR("command"));
::RegCloseKey(hKey);
lRet = ::RegOpenKeyEx(HKEY_CLASSES_ROOT, (LPSTR)(LPCSTR)strRegSubkey.c_str(), 0, KEY_READ, &hKey);
//删除“加密”子键
::RegDeleteKey(hKey, LPCTSTR(strRegKeyName.c_str()));
::RegCloseKey(hKey);
}
执行后
执行后会右键加上“上传文档到xx云”,点击就会执行自己指定的程序,很方便吧。当然,执行的程序是要自己做了。