如何在程序中创建另一个程序的快捷方式

如何在程序中创建另一个程序的快捷方式,第1张

以下是一些资料,供参考:

------------------------------------------

编程思想:

------------------------------------------

Windows外壳(Shell)的快捷方式是以OLE技术的组件对象模型COM(Component Object Modal)为基础而设计的。利用COM模型,一个应用程序可以调用另一应用程序的某些功能。这方面的技术细节请参阅有关文献。

在了解了上述基本原理后,创建Windows的快捷方式就比较容易了。首先利用OLE通过调用CoCreateInstance()函数建立一个IID_IShellLink实例,并同时得到其接口指针。利用这个接口指针可以对其各项属性进行设置。为了使这些信息以快捷方式的数据文件(*.lnk)格式保存起来,还需要从IID_IShellLink对象取得其IID_IPersistFile接口指针,以便于调用其成员函数Save()保存前面设置的信息。

至于如何删除快捷方式以及创建和删除文件夹,则只需要简单地调用文件 *** 作函数SHFileOperation()就可以了。

另外应该注意,在完成上述 *** 作之后,都要调用SHChangeNotify()函数通知Windows外壳有关变化以使之及时更新其显示状态。

//创建快捷方式

BOOL CreateLink (

LPSTR szPath,//快捷方式的目标应用程序名

LPSTR szLink)//快捷方式的数据文件名(*.lnk)

{

HRESULT hres

IShellLink * psl

IPersistFile* ppf

WORD wsz[ MAX_PATH]

//创建一个IShellLink实例

hres = CoCreateInstance( CLSID_ShellLink, NULL,

CLSCTX_INPROC_SERVER, IID_IShellLink,

(void **)&psl)

if( FAILED( hres))

return FALSE

//设置目标应用程序

psl ->SetPath( szPath)

//设置快捷键(此处设为Shift+Ctrl+'R')

psl ->SetHotkey( MAKEWORD( 'R',

HOTKEYF_SHIFT |HOTKEYF_CONTROL))

//从IShellLink获取其IPersistFile接口

//用于保存快捷方式的数据文件 (*.lnk)

hres = psl ->QueryInterface( IID_IPersistFile,

(void**)&ppf)

if( FAILED( hres))

return FALSE

// 确保数据文件名为ANSI格式

MultiByteToWideChar( CP_ACP, 0, szLink, -1,

wsz, MAX_PATH)

//调用IPersistFile::Save

//保存快捷方式的数据文件 (*.lnk)

hres = ppf ->Save( wsz, STGM_READWRITE)

//释放IPersistFile和IShellLink接口

ppf ->Release( )

psl ->Release( )

return TRUE

}

先在你要创建快捷方式的程序上点右键,选择“创建快捷方式”,然后把它移到(先复制快捷方式再粘贴也行)C:\Documents

and

Settings\Administrator\「开始」菜单\程序

或者直接将程序图标托到左下角的“开始”


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11867298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存