这是vb的世界,这是程序源代码的海洋,我借此与众多朋友共同交流编程思想,编程技巧,望我能够在帮助大家的同时,得到大家的恩惠。魔灵圣域欢迎大家的到来。

消除用vb制作的系统右键菜单有下划线的方法,另赠送强大右键注册功能

2008-10-06 10:46:01 / 个人分类:VB 类别

在用vb制作系统右键菜单时,会出现在在字体下方有下划线的问题,超级解霸也有此毛病,我经过分析,终于让我发现了消除这一讨厌的下划线的方法,内幕全在注册表的设置上。只要用英文名做项,右键要显示的汉语名做默认值,这样就如你所愿了。请看以下程序。
p+b0Qv1o)?gx0l!M0VBGood社区门户@ Auy a^F
'**************************************************************************VBGood社区门户}#u*Zs!xq9B8w
'**模 块 名:注册dll和ocx和tlb - Module1
:s'u5\XPZo {0'**说    明:魔灵圣域 版权所有2008 - 2009(C) by icecept(魔灵)
F:a)g3_cj@x0'**创 建 人:icecept(魔灵)
D AXG o Rn2g+iy6Q0'**日    期:2008-10-06 01:26:10
;Q~@%nK0V0'**修 改 人:icecept(魔灵)
,@ G@+o2M5S)H0'**日    期:VBGood社区门户5Fy-nF0RO
'**描    述:icecept(魔灵)制作
DPf'Aer0'**版    本:V1.0.0    http://icecept.blog.sohu.com
A#[2e*o&o@!_0?:g0p0'*************************************************************************
+Bg!IBG1Z0Option ExplicitVBGood社区门户]i^5]n/_k
'注册表常数声明VBGood社区门户!xH/^@&iz
Public Const HKEY_CLASSES_ROOT = &H80000000
%u/c+j5`]rr,q1@0Public Const HKEY_LOCAL_MACHINE = &H80000002VBGood社区门户|3\I:h/NX
Public Const REG_SZ = 1
P/^3p CN+h%O!M0'-注册表 API 声明...
b D0l+bV0'---------------------------------------------------------------
+U0A)JCQ0Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
5a{s/O,vZ/G0Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongVBGood社区门户f$g.q9F%f5\8R8VkJ
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
n4SHMA{ sJ!^y0Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
U;@:I,c$HB0s'Rf0'---------------------------------------------------------------
'?E+v5S/N;A Y0'获取系统路径的API函数VBGood社区门户A9O7DC8h RS}
Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
qKYh;V5I S0mtM n0Sub Main()
$M1O5n.pH k%Wg0    '句柄和返回值,返回值为0代表写入成功VBGood社区门户,XKQsA/p$[5_
    Dim hKey As Long, retu As Long
"N'\y0uj4P}7VO0    '应用程序绝对路径
9A0E9t_1^v o^6v0    Dim RegXy As String, winsys As StringVBGood社区门户7\Jy+[ B;dm
    winsys = Space(250)VBGood社区门户aq|2]nRj v'W|b6@$B
    winsys = Left(winsys, GetSystemDirectory(winsys, Len(winsys)))
"_e6r8L+J5O-j"P(aL/NG0    If Dir(CheckFilePath(App.Path) & "开闭光驱.exe") <> vbNullString Then
o {'_ A,S%~0        FileCopy CheckFilePath(App.Path) & "开闭光驱.exe", winsys & "\开闭光驱.exe"VBGood社区门户Ee1rX6e
        ' 建立注册表项,设置开光驱右键菜单
Y5L7@$O)ob0        RegCreateKey HKEY_CLASSES_ROOT, "*\shell\opendoor", hKeyVBGood社区门户#S*].D'A:A5@"aw2J
        retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "打开光驱", LenB(StrConv("打开光驱", vbFromUnicode)) + 1)VBGood社区门户,J1Cl bWq
        RegCreateKey HKEY_CLASSES_ROOT, "*\shell\opendoor\command", hKeyVBGood社区门户,[9k { W x
        retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal winsys & "\开闭光驱.exe /opendoor", LenB(StrConv(winsys & "\开闭光驱.exe /opendoor", vbFromUnicode)) + 1)VBGood社区门户X+w b$S.R pN
        '设置闭光驱右键菜单
J8y.e(@ VZj0        RegCreateKey HKEY_CLASSES_ROOT, "*\shell\closedoor", hKey
6MF[4u~F;b6n;S#s0        retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "关闭光驱", LenB(StrConv("关闭光驱", vbFromUnicode)) + 1)VBGood社区门户ZuKyfo
        RegCreateKey HKEY_CLASSES_ROOT, "*\shell\closedoor\command", hKeyVBGood社区门户-p#_QHM6c|i
        retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal winsys & "\开闭光驱.exe /closedoor", LenB(StrConv(winsys & "\开闭光驱.exe /closedoor", vbFromUnicode)) + 1)
i#Uj0Ek0    End If
`K ]._ {:s'a0    '注: RegSetValueEx第二项为空时把值填入第一行的默认项VBGood社区门户MX)|%O![ ?&c%O
    ' 建立注册表项,设置注册dllVBGood社区门户g`LDx
    RegCreateKey HKEY_CLASSES_ROOT, ".dll", hKey
3Th"r r%eg#f6m0    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "dllfile", LenB(StrConv("dllfile", vbFromUnicode)) + 1)
-N f3fP n ~0    RegCreateKey HKEY_CLASSES_ROOT, "dllfile\shell\regdll", hKey
!z],CCyF9W0    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "注册 dll 文件", LenB(StrConv("注册 dll 文件", vbFromUnicode)) + 1)
xn&fCG!q0    RegCreateKey HKEY_CLASSES_ROOT, "dllfile\shell\regdll\command", hKeyVBGood社区门户?i;gX/M8i
    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "regsvr32.exe " & Chr(34) & "%L" & Chr(34), LenB(StrConv("regsvr32.exe " & Chr(34) & "%L" & Chr(34), vbFromUnicode)) + 1)VBGood社区门户d \Ys^6~,v:P
    ' 建立注册表项,设置反注册dll
1n6k^8t9wF2q0    RegCreateKey HKEY_CLASSES_ROOT, "dllfile\shell\unregdll", hKey
4rA"{J(u!Xz0    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "注销 dll 文件", LenB(StrConv("注销 dll 文件", vbFromUnicode)) + 1)VBGood社区门户RC }'W6ZCO(?
    RegCreateKey HKEY_CLASSES_ROOT, "dllfile\shell\unregdll\command", hKey
-el w%WVa0    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "regsvr32.exe /u " & Chr(34) & "%L" & Chr(34), LenB(StrConv("regsvr32.exe /u " & Chr(34) & "%L" & Chr(34), vbFromUnicode)) + 1)
zBC;vXUH f%On0    ' 建立注册表项,设置注册ocxVBGood社区门户!K!dGyn IZD8B
    RegCreateKey HKEY_CLASSES_ROOT, ".ocx", hKeyVBGood社区门户1V1O7eg9l7mj;@
    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "ocxfile", LenB(StrConv("ocxfile", vbFromUnicode)) + 1)VBGood社区门户-H3d ^(G&R} rQ w
    RegCreateKey HKEY_CLASSES_ROOT, "ocxfile\shell\regocx", hKey
;[5Hc+^1b\-}{0    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "注册 ocx 文件", LenB(StrConv("注册 ocx 文件", vbFromUnicode)) + 1)VBGood社区门户\5i6j X2M$]N.x
    RegCreateKey HKEY_CLASSES_ROOT, "ocxfile\shell\regocx\command", hKeyVBGood社区门户1X c3Uf}h
    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "regsvr32.exe " & Chr(34) & "%L" & Chr(34), LenB(StrConv("regsvr32.exe " & Chr(34) & "%L" & Chr(34), vbFromUnicode)) + 1)
9[kt8P H:^6w V0    ' 建立注册表项,设置反注册ocx
/~I`k q8RX2Tw0    RegCreateKey HKEY_CLASSES_ROOT, "ocxfile\shell\unregocx", hKeyVBGood社区门户&d/yo$|0}B
    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "注销 ocx 文件", LenB(StrConv("注销 ocx 文件", vbFromUnicode)) + 1)
)n a/AT A3W xdX$U0    RegCreateKey HKEY_CLASSES_ROOT, "ocxfile\shell\unregocx\command", hKeyVBGood社区门户t.m5V1t^4^O'T
    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "regsvr32.exe /u " & Chr(34) & "%L" & Chr(34), LenB(StrConv("regsvr32.exe /u " & Chr(34) & "%L" & Chr(34), vbFromUnicode)) + 1)
7m.HwW7Z0    ' 建立注册表项,设置注册tlbVBGood社区门户:~d0u$qLS8OC"E
    RegCreateKey HKEY_CLASSES_ROOT, ".tlb", hKeyVBGood社区门户r+L[Q(~(t ^:i
    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "tlbfile", LenB(StrConv("tlbfile", vbFromUnicode)) + 1)
_3F9X?2x VN7w'[S py0    RegCreateKey HKEY_CLASSES_ROOT, "tlbfile\shell\regtlb", hKeyVBGood社区门户P|o#uC
    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "注册类型库", LenB(StrConv("注册类型库", vbFromUnicode)) + 1)VBGood社区门户:P.g(`\!e ^
    RegCreateKey HKEY_CLASSES_ROOT, "tlbfile\shell\regtlb\command", hKeyVBGood社区门户M K E SV2g.S
    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "REGTLIB.EXE.exe " & Chr(34) & "%L" & Chr(34), LenB(StrConv("regsvr32.exe " & Chr(34) & "%L" & Chr(34), vbFromUnicode)) + 1)VBGood社区门户6G3M"^F*?(_7W_
    ' 建立注册表项,设置反注册tlb
8G%b8D%L&d)g_mo0    RegCreateKey HKEY_CLASSES_ROOT, "tlbfile\shell\unregtlb", hKeyVBGood社区门户tO7\0R`:B
    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "注销类型库", LenB(StrConv("注销类型库", vbFromUnicode)) + 1)
uY&oi s l0    RegCreateKey HKEY_CLASSES_ROOT, "tlbfile\shell\unregtlb\command", hKeyVBGood社区门户AD8^ W4n/O
    retu = RegSetValueEx(hKey, vbNullString, 0, REG_SZ, ByVal "REGTLIB.EXE /u " & Chr(34) & "%L" & Chr(34), LenB(StrConv("regsvr32.exe /u " & Chr(34) & "%L" & Chr(34), vbFromUnicode)) + 1)
!`J2p]b0    RegCloseKey hKey
q8HQ,?qM [pK](i/Y5b0    End
,j/J"zaq9c-U zn;o0End Sub
;aHm)x D6nI? O8`$S0Public Function CheckFilePath(FilePath As String) As String
&oV fC8pd2q0@L0    '存、读档时对文件路径的检查VBGood社区门户!p7b+j*Z A a
    If Right(FilePath, 1) = "\" ThenVBGood社区门户*c[,ZyE
        CheckFilePath = FilePathVBGood社区门户H-L{p0^3dLv
    Else
JA({S!z*P n0        CheckFilePath = FilePath & "\"
-Y.H,LJ FO0    End IfVBGood社区门户 Ev/n\_@t
End Function
L$@6m!e Ic"O S0
)xM1n,XZ*@~0================================================================================VBGood社区门户CN8CC4K

删除建立的右键菜单VBGood社区门户Z{6Ua*{ s'Kj
VBGood社区门户7?0e.\1Qt;N@

'**************************************************************************
.BYr9ZRo0\m){0'**模 块 名:删除右键菜单 - Module1
p,m*Og&{0'**说    明:魔灵圣域 版权所有2008 - 2009(C) by icecept(魔灵)
zby/x0E1en,w F0'**创 建 人:icecept(魔灵)
v5pSRsQ0'**日    期:2008-10-10 00:14:59
HK Y|m_t:k0[0'**修 改 人:icecept(魔灵)VBGood社区门户,G)Qi'gu7Y
'**日    期:
Z8l s7kT0@[J0'**描    述:icecept(魔灵)制作VBGood社区门户-x!G/{ebzR
'**版    本:V1.0.0    http://icecept.blog.sohu.comVBGood社区门户q%r!W3qn O`
'*************************************************************************VBGood社区门户Q&rO,}srJ%_6U@
VBGood社区门户9x7o U8Jl Qy w a
'=====================================
8h*A!~Vez OSs.G0'     注册表的读写    声明VBGood社区门户/Rl5Z|6Do4nN
'=====================================
?*{\H8bhZ0'删除项目
)j \9G E-^0Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
8w/^{LPt]| H/x-c0Private Const HKEY_CLASSES_ROOT = &H80000000VBGood社区门户8l^u6o-pE0Y%D
Private Const REG_SZ = 1
GPjU}(q8C9SL0Sub Main()VBGood社区门户0d/}8e5U B
    '以下删除右键的步骤是:先删除主项,在删除子项
6[#_h7`(fo0    '这里必须分步执行,如同删除文件夹一样,不能删除非空的文件夹,此处重要。
wB^6\b'`Ec0    '也就是说在删除的项中可以有值,但不能有项
!~GH(Lm0Nc0    RegDeleteKey HKEY_CLASSES_ROOT, "dllfile\shell\regdll\command"
o"c1oUv3O0    RegDeleteKey HKEY_CLASSES_ROOT, "dllfile\shell\regdll"
7EIm5W&Wq0    RegDeleteKey HKEY_CLASSES_ROOT, "dllfile\shell\unregdll\command"
[kzLY F3rf0    RegDeleteKey HKEY_CLASSES_ROOT, "dllfile\shell\unregdll"
j(m+L)[r0    RegDeleteKey HKEY_CLASSES_ROOT, "ocxfile\shell\regocx\command"
;{8D5z1k2WT6K0    RegDeleteKey HKEY_CLASSES_ROOT, "ocxfile\shell\regocx"
5k m*@I*c/B0    RegDeleteKey HKEY_CLASSES_ROOT, "ocxfile\shell\unregocx\command"VBGood社区门户1oi3R!g5J(S
    RegDeleteKey HKEY_CLASSES_ROOT, "ocxfile\shell\unregocx"VBGood社区门户:x'_7~F!JHnl
    RegDeleteKey HKEY_CLASSES_ROOT, "tlbfile\shell\regtlb\command"
k7scy-L2KC3?0    RegDeleteKey HKEY_CLASSES_ROOT, "tlbfile\shell\regtlb"VBGood社区门户4gg&j:r)W&g:`2{
    RegDeleteKey HKEY_CLASSES_ROOT, "tlbfile\shell\unregtlb\command"VBGood社区门户TA/\,{#X DU!NA!s
    RegDeleteKey HKEY_CLASSES_ROOT, "tlbfile\shell\unregtlb"
,QB;H|8X0    RegDeleteKey HKEY_CLASSES_ROOT, "*\shell\opendoor\command"VBGood社区门户B4|F:u1DGn7V
    RegDeleteKey HKEY_CLASSES_ROOT, "*\shell\opendoor"
Z?0q,MGJv3u0    RegDeleteKey HKEY_CLASSES_ROOT, "*\shell\closedoor\command"
$t,J&g vu`)cd]:E0    RegDeleteKey HKEY_CLASSES_ROOT, "*\shell\closedoor"
.J-f!uM$k4y9JE"l0    MsgBox "右键删除成功", vbOKOnly Or vbInformation
c q8O%Rrb:b o0End Sub
bdI&V!M"G0
:dk?[nU DW0附件: 注册dll和ocx和tlb.rar

TAG: VB 右键 菜单 注册表 api 系统

魔灵圣域之VB世界 icecept 发布于2008-10-10 09:33:40
删除一楼建立的右键菜单
'**************************************************************************8Qf.v{V/FR~r
'**模 块 名:删除右键菜单 - Module1&X)f.q Io+|
'**说    明:魔灵圣域 版权所有2008 - 2009(C) by icecept(魔灵)V;d
@n
n7F0bD

'**创 建 人:icecept(魔灵)
EYOM(T Sg {1M6c|'**日    期:2008-10-10 00:14:59
&qA I6a:n p'**修 改 人:icecept(魔灵)
c
c8E/N,@$t*H
agVVBGood社区门户
'**日    期:
3{ y.}.L U-P'F4o!t'**描    述:icecept(魔灵)制作
"UlAAt {?_'**版    本:V1.0.0    http://icecept.blog.sohu.com
:@ kR,Z"S yn'*************************************************************************
e@;}
f@"Vz

`r9Q!Z0F V$|'=====================================
!H R
Q-_y$P"]z        jk
'     注册表的读写    声明blog.vbgood.com3qeR?1]R2s
'=====================================
g
x(@ O'T'NfM(QKVBGood社区门户
'删除项目
(^[+K*Y]*y&Ry]Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
,qm4Z5N:m-|(o;LrPrivate Const HKEY_CLASSES_ROOT = &H80000000\7b4H s6U&R
Private Const REG_SZ = 1{(mPpAe
Sub Main()
$QB"]9Z&T/H2i l    '以下删除右键的步骤是:先删除主项,在删除子项4G9i`8r/md
    '这里必须分步执行,如同删除文件夹一样,不能删除非空的文件夹,此处重要。
N)tO        }0DVBGood社区门户    '也就是说在删除的项中可以有值,但不能有项4|K9I        f }-v
    RegDeleteKey HKEY_CLASSES_ROOT, "dllfile\shell\regdll\command"
2WC4@Kbv1~blog.vbgood.com    RegDeleteKey HKEY_CLASSES_ROOT, "dllfile\shell\regdll"
}6K ^+Cu&VE    RegDeleteKey HKEY_CLASSES_ROOT, "dllfile\shell\unregdll\command")`,Zhj+hy2Xym
    RegDeleteKey HKEY_CLASSES_ROOT, "dllfile\shell\unregdll"3q^`4^s
    RegDeleteKey HKEY_CLASSES_ROOT, "ocxfile\shell\regocx\command"
h xz5w(F@r
x5go
    RegDeleteKey HKEY_CLASSES_ROOT, "ocxfile\shell\regocx"
!_$`?1g r8]        S)x[Zblog.vbgood.com    RegDeleteKey HKEY_CLASSES_ROOT, "ocxfile\shell\unregocx\command"blog.vbgood.comT @@)H3l%HS \g7G@
    RegDeleteKey HKEY_CLASSES_ROOT, "ocxfile\shell\unregocx"
4ZYB9xM/]blog.vbgood.com    RegDeleteKey HKEY_CLASSES_ROOT, "tlbfile\shell\regtlb\command"
(h:wh0oN
_0R
    RegDeleteKey HKEY_CLASSES_ROOT, "tlbfile\shell\regtlb"VBGood社区门户:Hp,s|eZ d
    RegDeleteKey HKEY_CLASSES_ROOT, "tlbfile\shell\unregtlb\command"blog.vbgood.com+A:j#?Y
R6bz1Y

    RegDeleteKey HKEY_CLASSES_ROOT, "tlbfile\shell\unregtlb";zz?$Y A1t8}m!U
    RegDeleteKey HKEY_CLASSES_ROOT, "*\shell\opendoor\command"\&p9m;P3M
    RegDeleteKey HKEY_CLASSES_ROOT, "*\shell\opendoor"        zp`aPR
    RegDeleteKey HKEY_CLASSES_ROOT, "*\shell\closedoor\command" cN!X_,x(n
    RegDeleteKey HKEY_CLASSES_ROOT, "*\shell\closedoor""o2M7R7Wg*ea
    MsgBox "右键删除成功", vbOKOnly Or vbInformation
g0G        e1a(m2\ yEnd SubP+C
u z1B&v


6@[+Y/HN2GR        K:EVBGood社区门户[ 本帖最后由 icecept 于 2008-10-10 09:41 编辑 ]

注册dll和ocx和tlb.rar
(2008-10-10 09:33:40, Size: 11.2 kB, Downloads: 20)

vb世界 tfzm 发布于2008-10-09 20:48:18
不错
收藏。
bacon发布于2008-10-08 18:17:00
好东西一定要收藏!!!
gujin162发布于2008-10-07 14:20:19
昨天就解决了~~8FL(gu mZP*A
(c,{7IkOMd#z8ncq
没留意你以前发的关于注册表的东西~~收藏收藏~~
魔灵圣域之VB世界 icecept 发布于2008-10-07 11:09:52
应用程序加入右键菜单和删除右键菜单
你先看以下的程序,看自己能举一反三吗?明天我把删除注册表值的程序发上来。F0@dxj,Y
Option Explicit
,q"R'_0E"hQ*FVBGood社区门户'=====================================
Y1r7P^^,B5Egg|        W'     注册表的读写    声明9du#ir2|;s2{
'=====================================#OfzN8X!sc;q^
'' 关闭打开的键        Q*BtEW.U
Private Declare Function RegCloseKey Lib "advapi32.dll" _
tU3b#YsC                          (ByVal hKey As Long) As Long;_;i'^HUIIg
'建立键YHn%UZr
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
@e4NE!sp'I                          (ByVal hKey As Long, _
)wF9{L Oz8|WN~blog.vbgood.com                          ByVal lpSubKey As String, _J3~Gf*aTb
                          phkResult As Long) As Longblog.vbgood.com,I({S kw
WK(TJ^

'写入启动值|T9lC8](w
Private Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" ( _
BrcV'D3Qblog.vbgood.com                          ByVal hKey As Long, ByVal lpValueName As String, _}'A&k'n8D eOD @2t
                          ByVal Reserved As Long, ByVal dwType As Long, _
C:W[vTZ&mN[

                          ByVal lpData As String, ByVal cbData As Long) As Long,aK;~
wi)Jb]

'删除项目
/`$EAU)h{d3p4Y{&Tblog.vbgood.comPrivate Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As LongVBGood社区门户|        ci5h DE
'打开注册表subkey的hkey
f)\U,}1t fWp8{Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" ( _
;Z"?5@BcC4_blog.vbgood.com                          ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
L ju2b2AK{Private Const HKEY_CLASSES_ROOT = &H80000000
.v
L9{8q}
Private Const REG_SZ = 1VBGood社区门户
? z/Z#`&Z9u@n

Private Sub Command1_Click()
,z}8K]DGblog.vbgood.com    '把应用程序加入右键菜单
B-\k.`4V']blog.vbgood.com    Dim hKey As Long, ret As Long
w7U:I#~u8dn/Zblog.vbgood.com    '建立注册表项
4XtM,?$h    RegCreateKey HKEY_CLASSES_ROOT, "*\shell\Any To Icon\command", hKey  'Any To Icon为右键菜单显示的名称V JM        x'S&k~l2RY]K P
    '设置右键菜单项目
{        z i        @^W6E    ret = RegSetValueEx(hKey, "", 0, REG_SZ, ByVal App.Path & "\" & App.EXEName & ".exe", ByVal LenB(StrConv(App.Path & "\" & App.EXEName & ".exe", vbFromUnicode)) + 1)
3bS+UY&h x_*[O    If ret = 0 Then
HZ+z LjH*uVBGood社区门户        MsgBox "右键菜单写入成功"
n"ROeI;VY:^:QzJ    Elseblog.vbgood.com
?6J7D$cv        ]'k

        MsgBox "右键菜单写入失败"
J8]jE v5N2AVBGood社区门户    End If
ed \e*e#{    RegCloseKey hKey '关闭注册表项VBGood社区门户fY ]Z8a2M
End Sube?g:lc
'注:RegSetValeEx的第五个值可改为 ByVal RegXy,第六句可改为 lenB(RegXy)
G {~LfY0D'Dim RegXy as long:RegXy =app.path & "\记事薄.exe"vj:p2n6z/Y.e!r!Mf
'regsetvalueex第二项为空时把值填入第一行的默认项,非空时,把值填入指定项目中的最后一行
7B\O&L5b/j
]7D
Private Sub Command2_Click()blog.vbgood.comy8hDB L
    '这里必须分步执行,如同删除文件夹一样,不能删除非空的文件夹,此处重要。
CK'Q1z,~ e(e*v
~

    DeleteKey HKEY_CLASSES_ROOT, "*\shell\Any To Icon", "command"4v        {{k:Yj2D#M
c5nh5R

    DeleteKey HKEY_CLASSES_ROOT, "*\shell", "Any To Icon"0tY#TP*w
    MsgBox "成功删除右键菜单项", , "提示"blog.vbgood.com2A5MJs&FL8YW
End Sub
GIC5@q'删除注册表键函数
ur zZ+aZ4Q9h-e$PFunction DeleteKey(RootKey As Long, ParentKeyName As String, SubKeyName As String)blog.vbgood.comM
ft(W v$kK.U

    Dim hKey As Long
;u]%e s$Bp6T'z d3YVBGood社区门户    RegOpenKey RootKey, ParentKeyName, hKey
!Pu:s6U        Oan#`blog.vbgood.com    RegDeleteKey hKey, SubKeyNamet9cY+C4^Y5j0g(g
    RegCloseKey hKeyKx"C4AnYzJ
End Function

gujin162发布于2008-10-06 14:19:10
如何消除?
9DVMk2`~'g!Q1t{我从注册表里面把你建立的键值全部删了,还有......
我来说两句

(可选)

Open Toolbar