精华内容
下载资源
问答
  • WIN7开始菜单添加程序快捷方式

    千次阅读 2013-06-02 16:50:02
    win7为开始菜单添加自定义程序快捷方式和XP不同,所以老是忘。忘了之后查百度还很难查到。今天记下来,以后也许还用得上。 1,首先创建一个程序的快捷方式。 2,把这个快捷方式剪切到:C:\Users\All Users\...

    win7为开始菜单添加自定义程序快捷方式和XP不同,所以老是忘。忘了之后查百度还很难查到。今天记下来,以后也许还用得上。

    1,首先创建一个程序的快捷方式。

    2,把这个快捷方式剪切到:C:\Users\All Users\Microsoft\Windows\Start Menu 

    齐活。效果如下:

    展开全文
  • 比如我要将eclipse添加菜单中,那么只需要~/.local/share/applications/下新建一个.desktop文件,我命名为eclipse.desktop #sudo vi eclipse.desktop 然后将下面的文本拷贝进去,修改自己的执行路径和名字就可以...
    比如我要将eclipse添加到菜单中,那么只需要在~/.local/share/applications/下新建一个.desktop文件,我命名为eclipse.desktop
    
    #sudo vi eclipse.desktop
    然后将下面的文本拷贝进去,修改自己的执行路径和名字就可以了
    [Desktop Entry]
    Version = 1.0
    Encoding = UTF-8
    Name = Eclipse
    GenericName = Eclipse
    Comment = An IDE for Java and C/C++
    Exec = /usr/local/eclipse/eclipse
    Icon = /usr/local/eclipse/icon.xpm
    Terminal = false
    Type = Application
    Categories = GNOME;Application;Development;
    Name[zh_CN] = Eclipse
    Comment[zh_CN] = 一款开发Java和C/C++的集成环境
    GenericName[zh_CN] = Eclipse

    下面简单介绍下各个字段的意思:
    关键字"Version":[可选] 该数值指定了当前 Desktop Entry 文件所遵循的 Desktop Entry 文件标准版本。
    关键字"Encoding":[1.0 版本不推荐使用] 该数值指定了当前 Desktop Entry 文件中特定字符串所使用的编码方式。尽管Desktop Entry 文件标准 1.0 不再推荐使用该关键字,但由于历史原因该关键字仍然广泛出现在现有的 Desktop Entry 文件中。
    关键字"Name":[必选]该数值指定了相关应用程序的名称。比如在清单1中关键字"Name"的数值是"Eclipse"。打开文件浏览器,进入"/usr/share/applications"目录,就可以看见"eclipse.desktop"文件所定义的快捷方式的显示样式。其中,快捷方式的显示名称由关键字"Name"的数值所决定,快捷方式所使用的图标由下文中将要介绍的关键字"Icon"的数值来决定
    关键字"GenericName":[可选]该数值指定了相关应用程序的通用名称。比如在清单1中关键字"GenericName"的数值是"Eclipse"。打开应用程序浏览器,就可以看见字符串"User Tutorial"被显示在图标的右侧
    关键字"Comment":[可选]该数值是对当前Desktop Entry的简单描述。
    关键字"Type":[必选]关键字"Type"定义了Desktop Entry文件的类型。常见的"Type"数值是"Application"和"Link"。"Type = Application"表示当前Desktop Entry文件指向了一个应用程序;而"Type = Link"表示当前Desktop Entry文件指向了一个URL (Uniform Resource Locator)。
    关键字"Exec":[可选]关键字"Exec"只有在"Type"类型是"Application"时才有意义。"Exec"的数值定义了启动指定应用程序所要执行的命令,在此命令是可以带参数的。在本例中,关键字"Exec"的数值是字符串"/usr/local/eclipse/eclipse"。在shell中输入该字符串并按回车键同样可以启动指定应用程序。
    关键字"URL":[可选]关键字"URL"只有在"Type"类型是"Link"时才有意义。"URL"的数值定义了该Desktop Entry文件指向的URL
    关键字"Icon":[可选]该数值定义了当前Desktop Entry文件在应用程序浏览器或是在文件浏览器中所显示的图标。如果关键字"Icon"的数值是以绝对路径的格式给出,那么其数值所指定图标文件将被使用;反之,Linux系统将使用"Icon Theme Specification"在系统指定图标目录下定位所需要使用的图标文件。比如在本例中关键字"Icon"的数值是"/usr/local/eclipse/icon.xpm".
    关键字"StartupNotify":[可选]关键字"StartupNotify"的数值是布尔值(true 或是 false)。该关键字只有在"Type"类型是"Application"时才有意义。其数值的含义由规范"Startup Notification Protocol Specifications"定义,在此不再详述。
    关键字"Terminal":[可选]和"StartupNotify"一样,关键字"StartupNotify"的数值也是布尔值,并且该关键字只有在"Type"类型是"Application"时才有意义。其数值指出了相关应用程序(即关键字"Exec"的数值)是否需要在终端窗口中运行。
    关键字"Categories":[可选]关键字"Categories"只有在"Type"类型是"Application"时才有意义。"Categories"的数值指出了相关应用程序在菜单中显示的类别。比如本例中将eclipse分类在应用程序->编程子菜单中。具体菜单分类由规范"Desktop Specification Menu"具体定义。
    关键字"OnlyShowIn"和"NotShowIn":[可选]这两个关键字分别定义了当前Desktop Entry是否在特定Linux 桌面系统(例如:Linux GNOME 或 Linux KDE)下显示(由"OnlyShowIn"定义),或不显示(由"NotShowIn"定义)。
    关键字"X-SuSE-translate":[SUSE Linux特有]关键字"X-SuSE-translate"是SUSE Linux(http://www.novell.com/linux/)特有的。"X-SuSE-translate"符合SUSE RPM Package风格。"X-SuSE-translate"数值表示是否要对关键字"Name"和"GenericName"进行翻译。
    本地化关键字"[LOCALE]"根据"Desktop Entry Specification"规范,在关键字后加上字符串"[LOCALE]"就可以对该关键字进行特定的本地化定义。"LOCALE"的合法取值为:LOCALE= lang_COUNTRY.ENCODING@MODIFIER
    在此,域"_COUNTRY",".ENCODING"和"@MODIFIER"是可以被忽略的。当指定Desktop Entry文件被解析时,解析器应当根据当前POSIX locale来正确获取本地化的关键字数值。
    其余关键字:除了出现的关键字外,"Desktop Entry Specification"还定义了"Hidden","TryExec","MimeType"等可选关键字。用户可以根据需要进行选取。
    展开全文
  • VC++创建快捷方式、删除快捷方式添加开始菜单程序菜单并删除程序菜单的实例,这些小技巧都是平时软件开发过程经常用到的功能,有必要掌握。删除快捷方式只需要简单地调用文件操作函数SHFileOperation()就...

    VC++创建快捷方式、删除快捷方式、添加开始菜单程序组菜单并删除程序组菜单的实例,这些小技巧都是在平时软件开发过程中经常用到的功能,有必要掌握。删除快捷方式只需要简单地调用文件操作函数SHFileOperation()就可以了,在完成上述操作后,要调用SHChangeNotify()通知Windows外壳更新状态变化。

    VC++增加程序组(创建文件夹)和快捷方式,及删除操作相关代码如下:

    001 //浏览文件夹
    002 BOOL CShortCutDlg::BrowseForFolder(
    003     LPITEMIDLIST pidlRoot,//浏览开始处的PIDL
    004     LPITEMIDLIST *ppidlDestination,
    005                 //浏览结束时所选择的PIDL
    006     LPCSTR lpszTitle)//浏览对话框中的提示文字
    007 {
    008     BROWSEINFO BrInfo ;
    009     ZeroMemory( &BrInfo, sizeof(BrInfo)) ;
    010     BrInfo.hwndOwner = HWND_DESKTOP ;
    011     BrInfo.pidlRoot = pidlRoot ;
    012     BrInfo.lpszTitle = lpszTitle ;
    013     //浏览文件夹
    014     *ppidlDestination= SHBrowseForFolder(&BrInfo);
    015     //用户选择了取消按钮
    016     if(NULL == *ppidlDestination)
    017         return FALSE ;
    018     return TRUE ;
    019 }
    020 //取得快捷方式的目标应用程序名
    021 BOOL CShortCutDlg::SelectMenuItem( LPSTR szFileName)
    022 {
    023     OPENFILENAME ofn ;
    024     static CHAR szFilter[] = "Programs\0*.exe\0" ;
    025     ZeroMemory(&ofn, sizeof( OPENFILENAME)) ;
    026     ofn.lStructSize = sizeof( OPENFILENAME) ;
    027     ofn.hwndOwner = HWND_DESKTOP;
    028     ofn.lpstrFilter = szFilter ;
    029     ofn.nFilterIndex = 0 ;
    030     ofn.nMaxFile = MAX_PATH ;
    031     ofn.lpstrTitle = "请选择目标应用程序:" ;
    032     ofn.lpstrFile = szFileName ;
    033     ofn.Flags = OFN_FILEMUSTEXIST |
    034             OFN_PATHMUSTEXIST | OFN_EXPLORER ;
    035     //文件浏览
    036     if(!GetOpenFileName( &ofn))//选择了取消按钮
    037         return FALSE ;
    038     return TRUE ;
    039 }
    040 //取得要创建的快捷方式的名字
    041 BOOL CShortCutDlg::GetShortcutCrt(LPSTR szPath)
    042 {
    043     LPITEMIDLIST pidlBeginAt, pidlDestination ;
    044  
    045     // 取得开始菜单或桌面的PIDL
    046     SHGetSpecialFolderLocation( HWND_DESKTOP,
    047                 nBeginAt, &pidlBeginAt) ;
    048     // 取得要创建的快捷方式所在的位置
    049     if( !BrowseForFolder(pidlBeginAt, &pidlDestination,
    050                 "请选择快捷方式所在的位置:"))
    051         return FALSE ;
    052     // 把PIDL转换为路径名
    053     SHGetPathFromIDList( pidlDestination, szPath) ;
    054     // 取得快捷方式名称
    055     CNameDlg name_dlg;
    056     if(name_dlg.DoModal() == IDCANCEL)
    057         return FALSE ;
    058     //把快捷方式名和扩展名.LNK添加到路径名后
    059     //形成完整的快捷方式数据文件名
    060     wsprintf(szPath+lstrlen(szPath),"\\%s.lnk",
    061                 name_dlg.m_strName) ;
    062     return TRUE ;
    063 }
    064 //创建快捷方式
    065 BOOL CShortCutDlg::CreateLink (
    066     LPSTR szPath,//快捷方式的目标应用程序名
    067     LPSTR szLink)//快捷方式的数据文件名(*.lnk)
    068 {
    069     HRESULT hres ;
    070     IShellLink * psl ;
    071     IPersistFile* ppf ;
    072     WORD wsz[ MAX_PATH] ;
    073     //创建一个IShellLink实例
    074     hres = CoCreateInstance( CLSID_ShellLink, NULL,
    075         CLSCTX_INPROC_SERVER, IID_IShellLink,
    076         (void **)&psl) ;
    077     if( FAILED( hres))
    078         return FALSE ;
    079     //设置目标应用程序
    080     psl -> SetPath( szPath) ;
    081     //设置快捷键(此处设为Shift+Ctrl+'R')
    082     psl -> SetHotkey( MAKEWORD( 'R',
    083         HOTKEYF_SHIFT |HOTKEYF_CONTROL)) ;
    084     //从IShellLink获取其IPersistFile接口
    085     //用于保存快捷方式的数据文件 (*.lnk)
    086     hres = psl -> QueryInterface( IID_IPersistFile,
    087         (void**)&ppf) ;
    088     if( FAILED( hres))
    089         return FALSE ;
    090     // 确保数据文件名为ANSI格式
    091     MultiByteToWideChar( CP_ACP, 0, szLink, -1,
    092         wsz, MAX_PATH) ;
    093     //调用IPersistFile::Save
    094     //保存快捷方式的数据文件 (*.lnk)
    095     hres = ppf -> Save( wsz, STGM_READWRITE) ;
    096     //释放IPersistFile和IShellLink接口
    097     ppf -> Release( ) ;
    098     psl -> Release( ) ;
    099     return TRUE;
    100 }
    101 BOOL CShortCutDlg::DeleteFolder( LPSTR pszFolder)
    102 {
    103     SHFILEOPSTRUCT fos ;
    104  
    105     ZeroMemory( &fos, sizeof( fos)) ;
    106     fos.hwnd = HWND_DESKTOP;
    107     fos.wFunc = FO_DELETE ;
    108     fos.fFlags = FOF_SILENT | FOF_ALLOWUNDO ;
    109     fos.pFrom = pszFolder ;
    110     // 删除文件夹及其内容
    111     if( 0 != SHFileOperation( &fos))
    112         return FALSE ;
    113     return TRUE;
    114 }
    115 //取得要删除的快捷方式
    116 BOOL CShortCutDlg::GetShortcutDel (
    117         LPSTR lpszInitDir,//选择文件的开始目录
    118         LPSTR lpszShortcut)//快捷方式名
    119 {
    120     OPENFILENAME ofn ;
    121     char szFilter[] = "Shortcuts\0*.lnk\0" ;
    122     ZeroMemory(&ofn,sizeof( OPENFILENAME));
    123     ofn.lStructSize = sizeof( OPENFILENAME) ;
    124     ofn.hwndOwner = HWND_DESKTOP ;
    125     ofn.lpstrFilter = szFilter ;
    126     ofn.nFilterIndex = 0 ;
    127     ofn.nMaxFile = MAX_PATH ;
    128     ofn.lpstrTitle = "请选择要删除的快捷方式:" ;
    129     ofn.lpstrFile = lpszShortcut;
    130     ofn.lpstrInitialDir = lpszInitDir ;
    131     ofn.Flags = OFN_FILEMUSTEXIST |
    132         OFN_PATHMUSTEXIST | OFN_EXPLORER |
    133         OFN_NODEREFERENCELINKS ;
    134     //文件浏览
    135     if(! GetOpenFileName( &ofn))//选择了取消按钮
    136         return FALSE ;
    137     return TRUE ;
    138 }
    139 //删除快捷方式的数据文件 (*.lnk)
    140 BOOL CShortCutDlg::DeleteLink( LPSTR lpszShortcut)
    141 {
    142     SHFILEOPSTRUCT fos ;
    143     ZeroMemory( &fos, sizeof(fos)) ;
    144     fos.hwnd = HWND_DESKTOP ;
    145     fos.wFunc = FO_DELETE ;
    146     fos.pFrom = lpszShortcut;
    147     fos.pTo = NULL ;
    148     fos.fFlags = FOF_SILENT | FOF_ALLOWUNDO ;
    149     //删除快捷方式(*.lnk)
    150     if( 0 != SHFileOperation( &fos))
    151         return FALSE ;
    152     return TRUE ;
    153 }
    154 // 通知shell有关变化
    155 void CShortCutDlg::NotifyShell(LONG wEventId,//事件标志
    156             LPSTR szPath)//路径
    157 {
    158     SHChangeNotify( wEventId,
    159                     SHCNF_FLUSH | SHCNF_PATH,
    160                     szPath,0);
    161     //取得szPath的父目录
    162     char* p;
    163     for( p=szPath+lstrlen(szPath)-1;
    164             *p != '\\';
    165             p--);
    166     *p='\0';
    167     SHChangeNotify(SHCNE_UPDATEDIR
    168             |SHCNE_INTERRUPT,
    169             SHCNF_FLUSH | SHCNF_PATH,szPath,0);
    170 }
    171 void CShortCutDlg::OnCreateGroup()
    172 {
    173     UpdateData(TRUE);
    174     if(m_nLocation==0)
    175     {
    176         //设置起始文件夹为桌面
    177         nBeginAt=CSIDL_DESKTOPDIRECTORY ;
    178     }
    179     else
    180     {
    181         //设置起始文件夹为“开始”菜单
    182         nBeginAt=CSIDL_STARTMENU;
    183     }
    184     LPITEMIDLIST pidlBeginAt, pidlDestination ;
    185     char szPath[ MAX_PATH] ;
    186     // 取得开始菜单或桌面的PIDL
    187     SHGetSpecialFolderLocation( HWND_DESKTOP,
    188             nBeginAt, &pidlBeginAt) ;
    189     // 取得新建文件夹的父文件夹
    190     if( !BrowseForFolder(pidlBeginAt ,
    191             &pidlDestination,
    192             "请选择新建文件夹/菜单组的位置:"))
    193         return ;
    194     // 把PIDL转换为路径名
    195     SHGetPathFromIDList( pidlDestination, szPath) ;
    196     //取得新建文件夹的名字
    197     CNameDlg name_dlg;
    198     if(name_dlg.DoModal() == IDCANCEL)
    199         return;
    200     //形成完整的新建文件夹名
    201     wsprintf(szPath+lstrlen(szPath),"\\%s",