| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
雷速体育发帖软件开发QQ118000023C语言培训|一对一辅导|零基础学编程LightningChart 快速先进的.Net图表控件
共有 147 人关注过本帖
标题:如何在Windows右键菜单加上自己的程序
只看楼主 收藏
古123
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-2-5
结帖率:100%
  已结贴   问题点数:20  回复次数:8   
如何在Windows右键菜单加上自己的程序
比如我做一个记事本名字为“记事本B”,在任意一个txt格式文件右键,菜单上会显示“用记事本B打开”;
而且可以筛选文件格式,打开时默认用我的程序。
6 天前 10:52
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:96
帖 子:4186
专家分:28690
注 册:2009-4-8
  得分:4 
注册表

无知
5 天前 02:15
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:209
帖 子:4203
专家分:25787
注 册:2008-10-15
  得分:6 
每种文件在注册表里,都注册了打开方式。你按照 这种的格式去写个 注册表 文件,需要使用时,导入就可以了。
这个注册表的文件,可以你手动选择一次打开方式,然后到注册表里,这种文件类型中导出生成。

授人于鱼,不如授人于渔
早已停用QQ了
5 天前 09:16
古123
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-2-5
  得分:0 
回复 3楼 风吹过b
谢谢!
我找到这段代码,能加在Windows右键菜单上,但不是我想要的
比如Windows上一个文件“123.txt”,我右键只能打开记事本B这个程序(记事本B指我做的程序),但在记事本B中不能打开“123.txt”这个文件。
还有我想知道如何将电脑上某些格式默认打开程序设为我的程序,比如双击电脑上任一“.jpg”“.png”格式或其他格式默认用我的程序打开。
我没学过注册表,所以才想来问一下。谢谢!
下面是我找到的代码。
程序代码:
'' 关闭打开的键
Private Declare Function RegCloseKey Lib "advapi32.dll" _
                          (ByVal hKey As Long) As Long
'建立键
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
                          (ByVal hKey As Long, _
                          ByVal lpSubKey As String, _
                          phkResult As Long) As Long
'写入启动值
Private Declare 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
'删除项目
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
'打开注册表subkey的hkey
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" ( _
                          ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const REG_SZ = 1

'删除注册表键函数
Function DeleteKey(RootKey As Long, ParentKeyName As String, SubKeyName As String)
    Dim hKey As Long
    RegOpenKey RootKey, ParentKeyName, hKey
    RegDeleteKey hKey, SubKeyName
    RegCloseKey hKey
End Function

Private Sub Command1_Click()
    '把应用程序加入右键菜单
    Dim hKey As Long, ret As Long
    '建立注册表项
    RegCreateKey HKEY_CLASSES_ROOT, "*\shell\我的记事本\command", hKey  'Any To Icon为右键菜单显示的名称
    '设置右键菜单项目
    ret = RegSetValueEx(hKey, "", 0, REG_SZ, ByVal App.Path & "\" & App.EXEName & ".exe", ByVal LenB(StrConv(App.Path & "\" & App.EXEName & ".exe", vbFromUnicode)) + 1)
    If ret = 0 Then
        MsgBox "右键菜单写入成功"
    Else
        MsgBox "右键菜单写入失败"
    End If
    RegCloseKey hKey '关闭注册表项
End Sub

Private Sub Command2_Click()
    '这里必须分步执行,如同删除文件夹一样,不能删除非空的文件夹,此处重要。
    DeleteKey HKEY_CLASSES_ROOT, "*\shell\我的记事本", "command"
    DeleteKey HKEY_CLASSES_ROOT, "*\shell", "我的记事本"
    MsgBox "成功删除右键菜单项", , "提示"
End Sub
5 天前 11:38
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:209
帖 子:4203
专家分:25787
注 册:2008-10-15
  得分:5 
比如Windows上一个文件“123.txt”,我右键只能打开记事本B这个程序(记事本B指我做的程序),但在记事本B中不能打开“123.txt”这个文件。

意思是说通过这个右键,能调用你的程序,但你的程序无法自动打开这个右键的文件?
在程序里,使用 COMMAND 对象,从这个对象中读取命令行参数,发现是文件,并且存在的,调用打开命令进行打开。

授人于鱼,不如授人于渔
早已停用QQ了
5 天前 12:31
古123
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-2-5
  得分:0 
以下是引用风吹过b在2018-7-11 12:31:47的发言:

意思是说通过这个右键,能调用你的程序,但你的程序无法自动打开这个右键的文件?

是的,请问怎么解决?
5 天前 16:57
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:209
帖 子:4203
专家分:25787
注 册:2008-10-15
  得分:5 
意思是说通过这个右键,能调用你的程序,但你的程序无法自动打开这个右键的文件?
在程序里,使用 COMMAND 对象,从这个对象中读取命令行参数,发现是文件,并且存在的,调用打开命令进行打开。

授人于鱼,不如授人于渔
早已停用QQ了
5 天前 17:11
古123
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2017-2-5
  得分:0 
回复 7楼 风吹过b
谢谢,但我不懂注册表,有相关的函数吗?
5 天前 17:17
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:209
帖 子:4203
专家分:25787
注 册:2008-10-15
  得分:0 
在程序里,使用 COMMAND 对象,从这个对象中读取命令行参数,发现是文件,并且存在的,调用打开命令进行打开。

授人于鱼,不如授人于渔
早已停用QQ了
4 天前 12:39







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050125 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved