呵呵,很简单啊。你在页面有个链接到服务键槐宽器上面的Web服务,在Web服务里面去执行稿亮你的开发的应用明历程序。我想这样应该可以达到你的目的吧。亲,记得给我分哦。
打字不易,采纳哦!
有个网页它上面需要显示当前电脑已经开启了的程序名字,类似任务管理器中看到的。设想的架构,本地会运模团行一个服务程核袭序,这个服务程序用来获取当前电脑上已经运行的程序名称。
网页在它需要显示当前电脑已经开启了的程序名字的时候发命令给本地旦氏橘服务程序,进而获得到程序的名字。
希望我的回答可以帮到您哦
仿腾讯 QQ 和 Skype 通过URL触发自己的程序(自定义协议)IURLSearchHook接口被浏宽带裤览器用来转换一个未知的URL协议地址。当浏览慎简器企图去打开一个未知协议的URL地址时,浏览器首先尝试从这个地址得到当前的协议,如果不成功,浏览器将创建在系统中注册的URL Search Hook对象并调用每一个对象的Translate方法,直到地址被转换或所有的URL Search Hook都尝试过。
也就是说,我们可以注册一种目前不存在的协议(类似HTTP),当浏览器遇到新的协议时会自动调用Translate方法来翻译我们的协议,甚至激活我们自己的程序。
以下源代码将实现注册一个新的自定义的Web协议:
//
// 注册自定义的Web协议
// return : ------------------------------------------------------------------------
// 0 - 失败
// 1 - 成功
// 2 - 已经存在
//
int RegWebProtocol ( LPCTSTR lpszProtocolName, LPCTSTR lpszAssociatedApp, int nIconIndex/*=0*/ )
{
if ( !lpszProtocolName ||
lstrlen(lpszProtocolName) <1 ||
!lpszAssociatedApp ||
lstrlen(lpszAssociatedApp) <行铅 1 )
return 0
CString csSubKey
DWORD dwBufSize = 0
// 该协议已经存在
HKEY hKey = NULL
if ( RegOpenKeyEx ( HKEY_CLASSES_ROOT,
lpszProtocolName,
0,
KEY_ALL_ACCESS,
&hKey ) == ERROR_SUCCESS )
{
return 2
}
else hKey = NULL
// 创建协议子键
if ( !CreateRegisterSubKey ( HKEY_CLASSES_ROOT, lpszProtocolName ) )
return 0
// 设置协议描述字符串
CString csProtocolDesccsProtocolDesc.Format ( _T("%sProtocol"), lpszProtocolName )
dwBufSize = csProtocolDesc.GetLength()
if ( !WriteRegister ( HKEY_CLASSES_ROOT, lpszProtocolName,
_T(""), REG_EXPAND_SZ, (PUCHAR)csProtocolDesc.GetBuffer(0),&dwBufSize) )
return 0
CString csAppFilecsAppFile.Format ( _T("%s"), lpszAssociatedApp )
dwBufSize = csAppFile.GetLength()
if ( !WriteRegister ( HKEY_CLASSES_ROOT, lpszProtocolName,
_T("URL Protocol"), REG_EXPAND_SZ, (PUCHAR)csAppFile.GetBuffer(0),&dwBufSize) )
return 0
// DefaultIcon 子键
csSubKey.Format ( _T("%s\\DefaultIcon"), lpszProtocolName )
if ( !CreateRegisterSubKey ( HKEY_CLASSES_ROOT, csSubKey ) )
return 0
CString csIconParametercsIconParameter.Format ( _T("%s,%d"), lpszAssociatedApp, nIconIndex )
dwBufSize = csIconParameter.GetLength()
if ( !WriteRegister ( HKEY_CLASSES_ROOT, csSubKey,
_T(""), REG_EXPAND_SZ, (PUCHAR)csIconParameter.GetBuffer(0),&dwBufSize) )
return 0
// shell\open\command 子键
csSubKey.Format ( _T("%s\\shell\\open\\command"), lpszProtocolName )
if ( !CreateRegisterSubKey ( HKEY_CLASSES_ROOT, csSubKey ) )
return 0
CString csCommandcsCommand.Format ( _T("\"%s\" \"%%1\""), lpszAssociatedApp )
dwBufSize = csCommand.GetLength()
if ( !WriteRegister ( HKEY_CLASSES_ROOT, csSubKey,
_T(""), REG_EXPAND_SZ, (PUCHAR)csCommand.GetBuffer(0),&dwBufSize) )
return 0
return 1
}
以下源代码将删除自定义的Web协议:
//
// 卸载自定义的Web协议
//
BOOL UnRegWebProtocol ( LPCTSTR lpszProtocolName )
{
if ( !lpszProtocolName || lstrlen(lpszProtocolName) <1 )
return FALSE
return RegDeleteAllSubKey ( HKEY_CLASSES_ROOT, lpszProtocolName )
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)