如何在系统右键菜单加上我的程序?

jiangqiaohua 2008-01-25 04:11:50
我做了一个飞腾浏览器

http://www.skycn.com/soft/36219.html

我想在用户安装软件后

所有htm html右键菜单上有 "用飞腾浏览器打开" 应该怎么做啊
...全文
134 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Phenlit 2008-01-29
  • 打赏
  • 举报
回复
晕,今天进来一看,怎么看到一堆代码?吓得我一跳,马上直接跳过。。。

现在人都很喜欢拿代码直接贴上来吗?搞不明白!

我想解决问题都应该先讲的是方法吧,实在不行才会贴的代码,或者贴少量代码举例分析。。。
bqlhome 2008-01-28
  • 打赏
  • 举报
回复
兄弟不错,写起浏览器来啦,
不过你的软件好像特色中有一项”纯绿色“

你这一加菜单就不再是“绿色”了,呵呵。

要加还是很容易的,直接在上面某位所说的注册表项里加东西进去就可以了。
东方之珠 2008-01-28
  • 打赏
  • 举报
回复
学习
嗷嗷叫的老马 2008-01-28
  • 打赏
  • 举报
回复
MARK
麦壳饼 2008-01-28
  • 打赏
  • 举报
回复
不好意思 , 我发的第一个和第二个是重的
麦壳饼 2008-01-28
  • 打赏
  • 举报
回复



ProcedureDLL DllRegisterServer()
InDLL:
If RegCreateKeyEx_(#HKEY_CLASSES_ROOT, "*\shellex\ContextMenuHandlers\MysticBoy.CFP", 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, #Null, @hKey1, 0)<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS:EndIf
RegSetValueEx_(hKey1, "", 0, #REG_SZ, "{851aab5c-2008-4157-9c5d-a28dfa7b2660}", 38)
If hKey1:RegCloseKey_(hKey1):hKey1 = 0:EndIf
If RegCreateKeyEx_(#HKEY_CLASSES_ROOT, "MysticBoy.CFP\shellex\ContextMenuHandlers", 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, #Null, @hKey1, 0)<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS:EndIf
RegSetValueEx_(hKey1, "", 0, #REG_SZ, "{851aab5c-2008-4157-9c5d-a28dfa7b2660}", 38)
If hKey1:RegCloseKey_(hKey1):hKey1 = 0:EndIf
If RegCreateKeyEx_(#HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved", 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, #Null, @hKey1, 0)<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS:EndIf
RegSetValueEx_(hKey1, "{851aab5c-2008-4157-9c5d-a28dfa7b2660}", 0, #REG_SZ, "MysticBoy.CFP", 15)
If hKey1:RegCloseKey_(hKey1):hKey1 = 0:EndIf
*szBuffer = AllocateMemory(#MAX_PATH)
If *szBuffer And GetModuleFileName_(?InDLL&$FFFF0000, *szBuffer, #MAX_PATH)
If RegCreateKeyEx_(#HKEY_CLASSES_ROOT, "CLSID\{851aab5c-2008-4157-9c5d-a28dfa7b2660}", 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, #Null, @hKey1, 0)<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS:EndIf
RegSetValueEx_(hKey1, "", 0, #REG_SZ, "MysticBoy.CFP", 15)
If hKey1:RegCloseKey_(hKey1):hKey1 = 0:EndIf
If RegCreateKeyEx_(#HKEY_CLASSES_ROOT, "CLSID\{851aab5c-2008-4157-9c5d-a28dfa7b2660}\InProcServer32", 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, #Null, @hKey1, 0)<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS:EndIf
RegSetValueEx_(hKey1, "", 0, #REG_SZ, *szBuffer, Len(PeekS(*szBuffer))+1)
RegSetValueEx_(hKey1, "ThreadingModel", 0, #REG_SZ, "Apartment", 10)
If hKey1:RegCloseKey_(hKey1):hKey1 = 0:EndIf
Else
ProcedureReturn #SELFREG_E_CLASS
EndIf
FreeMemory(*szBuffer)
ProcedureReturn #S_OK
EndProcedure

ProcedureDLL DllUnregisterServer()
If RegDeleteKey_(#HKEY_CLASSES_ROOT, "*\shellex\ContextMenuHandlers\MysticBoy.CFP")<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS::EndIf
If RegDeleteKey_(#HKEY_CLASSES_ROOT, "MysticBoy.CFP\shellex\ContextMenuHandlers")<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS::EndIf
If RegDeleteKey_(#HKEY_CLASSES_ROOT, "MysticBoy.CFP\shellex")<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS::EndIf
If RegDeleteKey_(#HKEY_CLASSES_ROOT, "MysticBoy.CFP")<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS::EndIf
If RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved", 0, #KEY_ALL_ACCESS, @hKey1)<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS:EndIf
If RegDeleteValue_(hKey1, "{851aab5c-2008-4157-9c5d-a28dfa7b2660}")<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS::EndIf
If hKey1:RegCloseKey_(hKey1):hKey1 = 0:EndIf
If RegOpenKeyEx_(#HKEY_CLASSES_ROOT, "CLSID\{851aab5c-2008-4157-9c5d-a28dfa7b2660}", 0, #KEY_ALL_ACCESS, @hKey1)<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS:EndIf
If RegDeleteKey_(hKey1, "InProcServer32")<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS::EndIf
If hKey1:RegCloseKey_(hKey1):hKey1 = 0:EndIf
If RegOpenKeyEx_(#HKEY_CLASSES_ROOT, "CLSID", 0, #KEY_ALL_ACCESS, @hKey1)<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS:EndIf
If RegDeleteKey_(hKey1, "{851aab5c-2008-4157-9c5d-a28dfa7b2660}")<>#ERROR_SUCCESS:ProcedureReturn #SELFREG_E_CLASS::EndIf
If hKey1:RegCloseKey_(hKey1):hKey1 = 0:EndIf
ProcedureReturn #S_OK
EndProcedure

ProcedureDLL AttachProcess(Instance)
DisableThreadLibraryCalls_(Instance)
hModule = Instance

BuildCOMVTable_IClassFactory(ShellMenuObject)
BuildCOMVTable_IShellExtInit(ShellMenuObject)
BuildCOMVTable_IContextMenu(ShellMenuObject)

ProcedureReturn #True
EndProcedure

ProcedureDLL DllGetClassObject(*rclsid.GUID, *riid.GUID, *ppv.LONG)
If *ppv
If CompareCLSID(*rclsid, ?CLSID_ContextMenuHandler)
If CompareIID(*riid, ?IID_IClassFactory)
*ppv\l = New_ShellMenuObject() ; returns the IClassFactory
ProcedureReturn #S_OK
Else
*ppv\l = 0
ProcedureReturn #CLASS_E_CLASSNOTAVAILABLE
EndIf
Else
*ppv\l = 0
ProcedureReturn #CLASS_E_CLASSNOTAVAILABLE
EndIf
Else
*ppv\l = 0
ProcedureReturn #CLASS_E_CLASSNOTAVAILABLE
EndIf
EndProcedure

ProcedureDLL DllCanUnloadNow()
If ExistingObjectCount = 0
ProcedureReturn #S_OK
Else
ProcedureReturn #S_FALSE
EndIf
EndProcedure

DataSection
CommandString:
Data.s "复制完整路径(&F)"
CommandHelpLine:
Data.s "复制此文件的完整路径."+Chr(0)
EndDataSection

麦壳饼 2008-01-28
  • 打赏
  • 举报
回复

[code=VBScript]
Declare PutFileName2Clipboard(filename.s)
EnableCOMDebugging

Global ExistingObjectCount
Global hModule

COMClass(ShellMenuObject)
COMInterface(ShellMenuObject, IClassFactory)
COMInterface(ShellMenuObject, IShellExtInit)
COMInterface(ShellMenuObject, IContextMenu)

COMClassData(ShellMenuObject)
nLockCount.l
m_pDataObj.IDataObject
File$
EndCOMClassData

COMConstructor(ShellMenuObject)
ExistingObjectCount + 1
COMConstructorReturn IClassFactory ;
EndCOMConstructor

COMDestructor(ShellMenuObject)
ExistingObjectCount - 1
EndCOMDestructor

EndCOMClass(ShellMenuObject, IClassFactory, IShellExtInit, IContextMenu)

DefineCLSID(CLSID_ContextMenuHandler, $851aab5c, $2008, $4157, $9c, $5d, $a2, $8d, $fa, $7b, $26, $60)



Procedure Error(message$)
wError = GetLastError_()
If wError
*ErrorBuffer = AllocateMemory(1024)
FormatMessage_(#FORMAT_MESSAGE_FROM_SYSTEM, 0, wError, 0, *ErrorBuffer, 1024, 0)
message$+Chr(10)+PeekS(*ErrorBuffer)
FreeMemory(*ErrorBuffer)
EndIf
MessageRequester("错误", message$)
EndProcedure

Procedure Ansi2Uni(*st, *Buffer, blen)
If Len(PeekS(*st))<blen
ProcedureReturn MultiByteToWideChar_(#CP_ACP, 0, *st, -1, *Buffer, blen)
Else
ProcedureReturn 0
EndIf
EndProcedure


#CMF_DEFAULTONLY = 1

Enumeration
#GCS_VERBA
#GCS_HELPTEXTA
#GCS_VALIDATEA
#GCS_VERBW
#GCS_HELPTEXTW
#GCS_VALIDATEW
EndEnumeration
#GCS_UNICODE = 4
#GCS_VERB = #GCS_VERBA
#GCS_HELPTEXT = #GCS_HELPTEXTA
#GCS_VALIDATE = #GCS_VALIDATEA

Structure CMINVOKECOMMANDINFO
cbSize.l
fMask.l
hwnd.l
lpVerb.l
lpParameters.l
lpDirectory.l
nShow.l
dwHotKey.l
hIcon.l
EndStructure

Structure CMINVOKECOMMANDINFOEX Extends CMINVOKECOMMANDINFO
lpTitle.l
lpVerbW.l
lpParametersW.l
lpDirectoryW.l
lpTitleW.l
ptInvoke.POINT
EndStructure

#SEE_MASK_UNICODE = $4000
#CMIC_MASK_UNICODE = #SEE_MASK_UNICODE

#SELFREG_E_FIRST = $80009E40
#SELFREG_E_CLASS = #SELFREG_E_FIRST+1

#GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4


Procedure ShellMenuObject_IClassFactory_CreateInstance(*THIS.ShellMenuObject, *pUnkOuter.IUnknown, *riid.GUID, *ppvObject) COMMethodOf(ShellMenuObject)
If *pUnkOuter
ProcedureReturn #CLASS_E_NOAGGREGATION
Else
IUnknown.IUnknown = *THIS
ProcedureReturn IUnknown\QueryInterface(*riid, *ppvObject)
EndIf
ProcedureReturn hr
EndProcedure


COMEmptyMethod(ShellMenuObject, IClassFactory, LockServer, #E_FAIL)


Procedure ShellMenuObject_IShellExtInit_Initialize(*THIS.ShellMenuObject, *pidlFolder.ITEMIDLIST, *pdtobj.IDataObject, hkeyProgID) COMMethodOf(ShellMenuObject)
If *THIS\m_pDataObj
*THIS\m_pDataObj\Release()
*THIS\m_pDataObj = 0
EndIf
If *pdtobj
*THIS\m_pDataObj = *pdtobj
*pdtobj\AddRef()
fe.FORMATETC\cfFormat = #CF_HDROP
fe\ptd = #Null
fe\dwAspect = #DVASPECT_CONTENT
fe\lindex = -1
fe\tymed = #TYMED_HGLOBAL
If *pdtobj\GetData(@fe, @medium.STGMEDIUM)=#S_OK
uCount = DragQueryFile_(medium\hGlobal, -1, #Null, 0)
If uCount=1
*m_szFile = AllocateMemory(#MAX_PATH)
DragQueryFile_(medium\hGlobal, 0, *m_szFile, #MAX_PATH)
If Len(PeekS(*m_szFile))=0
uCount = 0
Else
*THIS\File$ = PeekS(*m_szFile)
EndIf
FreeMemory(*m_szFile)
EndIf
ReleaseStgMedium_(@medium)
If uCount=1
ProcedureReturn #S_OK
EndIf
EndIf
EndIf
ProcedureReturn #S_FALSE
EndProcedure

Procedure ShellMenuObject_IContextMenu_QueryContextMenu(*THIS.ShellMenuObject, hmenu, indexMenu, idCmdFirst, idCmdLast, uFlags) COMMethodOf(ShellMenuObject)
If #CMF_DEFAULTONLY&uFlags:ProcedureReturn 0:EndIf
cmd = indexMenu
mii.MENUITEMINFO
mii\cbSize = SizeOf(MENUITEMINFO)
mii\fMask = #MIIM_STRING|#MIIM_ID
mii\fType = #MFT_STRING
mii\wID = idCmdFirst
mii\dwTypeData = ?CommandString
If InsertMenuItem_(hmenu, 0, #True, @mii)=#False
ProcedureReturn 1<<31
EndIf
ProcedureReturn 1
EndProcedure

Procedure ShellMenuObject_IContextMenu_GetCommandString(*THIS.ShellMenuObject, idCmd, uFlags, pwReserved, pszName, cchMax) COMMethodOf(ShellMenuObject)
If idCmd=cmd
Select uFlags
Case #GCS_HELPTEXTA
CopyMemory(?CommandHelpLine, pszName, Len(PeekS(?CommandHelpLine)))
Case #GCS_HELPTEXTW
If Ansi2Uni(?CommandHelpLine, pszName, cchMax)=0
ProcedureReturn #S_FALSE
EndIf
Case #GCS_VALIDATEA
ProcedureReturn #S_OK
Case #GCS_VALIDATEW
ProcedureReturn #S_OK
Case #GCS_VERBA
PokeS(pszName, PeekS(?CommandString))
Case #GCS_VERBW
If Ansi2Uni(?CommandString, pszName, cchMax)=0
ProcedureReturn #S_FALSE
EndIf
Default
ProcedureReturn #S_FALSE
EndSelect
Else
ProcedureReturn #S_FALSE
EndIf
ProcedureReturn #S_OK
EndProcedure

Procedure ShellMenuObject_IContextMenu_InvokeCommand(*THIS.ShellMenuObject, *pici.CMINVOKECOMMANDINFOEX) COMMethodOf(ShellMenuObject)
If *pici\cbSize=SizeOf(CMINVOKECOMMANDINFOEX)
If *pici\fMask&#CMIC_MASK_UNICODE
If (*pici\lpVerbW&$ffff)=cmd
PutFileName2Clipboard(*THIS\File$);
ProcedureReturn #NOERROR
EndIf
EndIf
EndIf
If *pici\cbSize>=SizeOf(CMINVOKECOMMANDINFO)
If (*pici\lpVerb&$ffff)=cmd
PutFileName2Clipboard(*THIS\File$);
ProcedureReturn #NOERROR
EndIf
Else
ProcedureReturn #S_FALSE
EndIf
EndProcedure
Procedure PutFileName2Clipboard(filename.s)
ClearClipboard()
SetClipboardText(filename);
EndProcedure


[/code]
麦壳饼 2008-01-28
  • 打赏
  • 举报
回复

Declare PutFileName2Clipboard(filename.s)
EnableCOMDebugging

Global ExistingObjectCount
Global hModule

COMClass(ShellMenuObject)
COMInterface(ShellMenuObject, IClassFactory)
COMInterface(ShellMenuObject, IShellExtInit)
COMInterface(ShellMenuObject, IContextMenu)

COMClassData(ShellMenuObject)
nLockCount.l
m_pDataObj.IDataObject
File$
EndCOMClassData

COMConstructor(ShellMenuObject)
ExistingObjectCount + 1
COMConstructorReturn IClassFactory ;
EndCOMConstructor

COMDestructor(ShellMenuObject)
ExistingObjectCount - 1
EndCOMDestructor

EndCOMClass(ShellMenuObject, IClassFactory, IShellExtInit, IContextMenu)

DefineCLSID(CLSID_ContextMenuHandler, $851aab5c, $2008, $4157, $9c, $5d, $a2, $8d, $fa, $7b, $26, $60)



Procedure Error(message$)
wError = GetLastError_()
If wError
*ErrorBuffer = AllocateMemory(1024)
FormatMessage_(#FORMAT_MESSAGE_FROM_SYSTEM, 0, wError, 0, *ErrorBuffer, 1024, 0)
message$+Chr(10)+PeekS(*ErrorBuffer)
FreeMemory(*ErrorBuffer)
EndIf
MessageRequester("错误", message$)
EndProcedure

Procedure Ansi2Uni(*st, *Buffer, blen)
If Len(PeekS(*st))<blen
ProcedureReturn MultiByteToWideChar_(#CP_ACP, 0, *st, -1, *Buffer, blen)
Else
ProcedureReturn 0
EndIf
EndProcedure


#CMF_DEFAULTONLY = 1

Enumeration
#GCS_VERBA
#GCS_HELPTEXTA
#GCS_VALIDATEA
#GCS_VERBW
#GCS_HELPTEXTW
#GCS_VALIDATEW
EndEnumeration
#GCS_UNICODE = 4
#GCS_VERB = #GCS_VERBA
#GCS_HELPTEXT = #GCS_HELPTEXTA
#GCS_VALIDATE = #GCS_VALIDATEA

Structure CMINVOKECOMMANDINFO
cbSize.l
fMask.l
hwnd.l
lpVerb.l
lpParameters.l
lpDirectory.l
nShow.l
dwHotKey.l
hIcon.l
EndStructure

Structure CMINVOKECOMMANDINFOEX Extends CMINVOKECOMMANDINFO
lpTitle.l
lpVerbW.l
lpParametersW.l
lpDirectoryW.l
lpTitleW.l
ptInvoke.POINT
EndStructure

#SEE_MASK_UNICODE = $4000
#CMIC_MASK_UNICODE = #SEE_MASK_UNICODE

#SELFREG_E_FIRST = $80009E40
#SELFREG_E_CLASS = #SELFREG_E_FIRST+1

#GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4


Procedure ShellMenuObject_IClassFactory_CreateInstance(*THIS.ShellMenuObject, *pUnkOuter.IUnknown, *riid.GUID, *ppvObject) COMMethodOf(ShellMenuObject)
If *pUnkOuter
ProcedureReturn #CLASS_E_NOAGGREGATION
Else
IUnknown.IUnknown = *THIS
ProcedureReturn IUnknown\QueryInterface(*riid, *ppvObject)
EndIf
ProcedureReturn hr
EndProcedure


COMEmptyMethod(ShellMenuObject, IClassFactory, LockServer, #E_FAIL)


Procedure ShellMenuObject_IShellExtInit_Initialize(*THIS.ShellMenuObject, *pidlFolder.ITEMIDLIST, *pdtobj.IDataObject, hkeyProgID) COMMethodOf(ShellMenuObject)
If *THIS\m_pDataObj
*THIS\m_pDataObj\Release()
*THIS\m_pDataObj = 0
EndIf
If *pdtobj
*THIS\m_pDataObj = *pdtobj
*pdtobj\AddRef()
fe.FORMATETC\cfFormat = #CF_HDROP
fe\ptd = #Null
fe\dwAspect = #DVASPECT_CONTENT
fe\lindex = -1
fe\tymed = #TYMED_HGLOBAL
If *pdtobj\GetData(@fe, @medium.STGMEDIUM)=#S_OK
uCount = DragQueryFile_(medium\hGlobal, -1, #Null, 0)
If uCount=1
*m_szFile = AllocateMemory(#MAX_PATH)
DragQueryFile_(medium\hGlobal, 0, *m_szFile, #MAX_PATH)
If Len(PeekS(*m_szFile))=0
uCount = 0
Else
*THIS\File$ = PeekS(*m_szFile)
EndIf
FreeMemory(*m_szFile)
EndIf
ReleaseStgMedium_(@medium)
If uCount=1
ProcedureReturn #S_OK
EndIf
EndIf
EndIf
ProcedureReturn #S_FALSE
EndProcedure

Procedure ShellMenuObject_IContextMenu_QueryContextMenu(*THIS.ShellMenuObject, hmenu, indexMenu, idCmdFirst, idCmdLast, uFlags) COMMethodOf(ShellMenuObject)
If #CMF_DEFAULTONLY&uFlags:ProcedureReturn 0:EndIf
cmd = indexMenu
mii.MENUITEMINFO
mii\cbSize = SizeOf(MENUITEMINFO)
mii\fMask = #MIIM_STRING|#MIIM_ID
mii\fType = #MFT_STRING
mii\wID = idCmdFirst
mii\dwTypeData = ?CommandString
If InsertMenuItem_(hmenu, 0, #True, @mii)=#False
ProcedureReturn 1<<31
EndIf
ProcedureReturn 1
EndProcedure

Procedure ShellMenuObject_IContextMenu_GetCommandString(*THIS.ShellMenuObject, idCmd, uFlags, pwReserved, pszName, cchMax) COMMethodOf(ShellMenuObject)
If idCmd=cmd
Select uFlags
Case #GCS_HELPTEXTA
CopyMemory(?CommandHelpLine, pszName, Len(PeekS(?CommandHelpLine)))
Case #GCS_HELPTEXTW
If Ansi2Uni(?CommandHelpLine, pszName, cchMax)=0
ProcedureReturn #S_FALSE
EndIf
Case #GCS_VALIDATEA
ProcedureReturn #S_OK
Case #GCS_VALIDATEW
ProcedureReturn #S_OK
Case #GCS_VERBA
PokeS(pszName, PeekS(?CommandString))
Case #GCS_VERBW
If Ansi2Uni(?CommandString, pszName, cchMax)=0
ProcedureReturn #S_FALSE
EndIf
Default
ProcedureReturn #S_FALSE
EndSelect
Else
ProcedureReturn #S_FALSE
EndIf
ProcedureReturn #S_OK
EndProcedure

Procedure ShellMenuObject_IContextMenu_InvokeCommand(*THIS.ShellMenuObject, *pici.CMINVOKECOMMANDINFOEX) COMMethodOf(ShellMenuObject)
If *pici\cbSize=SizeOf(CMINVOKECOMMANDINFOEX)
If *pici\fMask&#CMIC_MASK_UNICODE
If (*pici\lpVerbW&$ffff)=cmd
PutFileName2Clipboard(*THIS\File$);
ProcedureReturn #NOERROR
EndIf
EndIf
EndIf
If *pici\cbSize>=SizeOf(CMINVOKECOMMANDINFO)
If (*pici\lpVerb&$ffff)=cmd
PutFileName2Clipboard(*THIS\File$);
ProcedureReturn #NOERROR
EndIf
Else
ProcedureReturn #S_FALSE
EndIf
EndProcedure
Procedure PutFileName2Clipboard(filename.s)
ClearClipboard()
SetClipboardText(filename);
EndProcedure

Phenlit 2008-01-25
  • 打赏
  • 举报
回复
注册表功能是很强大,通过API来写注册得到的功能更强大
Phenlit 2008-01-25
  • 打赏
  • 举报
回复
另外,也可以通过写注册表解决

如在
\HKEY-CLASSES-ROOT\HTMLFILE\SHELL下面建立自己的项,并在项当中建产command项,默认值设成你自己的要打开网页的程序,就行了,
如,在html文件建立phenlit菜单项
\HKEY-CLASSES-ROOT\HTMLFILE\SHELL\phenlit\command
并将command下的默认值设成要打开html文件的程序路径及打开参数,就行了
Phenlit 2008-01-25
  • 打赏
  • 举报
回复
关联菜单
CreatePopupMenu

DestroyMenu

TrackPopupMenu

GetSystemMenu

SetWindowLong
xmkasj 2008-01-25
  • 打赏
  • 举报
回复
用优化大师可以实现,直接在右击上添加自己喜欢的程序,很方便!~
东方之珠 2008-01-25
  • 打赏
  • 举报
回复
QQ、迅雷就有右键菜单。我没用过,估计要用API才行!
jiangqiaohua 2008-01-25
  • 打赏
  • 举报
回复
我需要我的软件 安装后实现
gongxuchao 2008-01-25
  • 打赏
  • 举报
回复
用一些软件可以实现吧.
比如说:超级兔子..那个就能实现

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧