Windows Mobile 6.5 蜂窝菜单排序工具

Windows Mobile 6.5 的蜂窝菜单如果要自定义排序非常麻烦,需要设置移动到顶部或者修改注册表中的 Rank 值的大小来排序,两种方法都不能方便的排列为自己想要的顺序,于是就自己写一个程序来修改注册表,这样就可以直观一些。

程序主要是修改注册表中 HKEY_LOCAL_MACHINE\Security\Shell\StartInfo\Start\ 下面项目中的 Rank 值,首先把注册表中的项目读出来放到一个 DataTable 中,然后排序后再绑定到 ListBox 中,最后通过交换选中项目和要移动的目标项中的 Rank 值来达到排序的目的。

21255398_200906020024171.jpg

把注册表读到 DataTable 中

  Function GetReg()Function GetReg() As DataView
        
Dim regKey As RegistryKey = Registry.LocalMachine.OpenSubKey("Security\Shell\StartInfo\Start")
        
If regKey Is Nothing Then
            
Exit Function
        
End If
        
Dim dt As New DataTable("Menu")
        dt.Columns.Add(
"Name", System.Type.GetType("System.String"))
        dt.Columns.Add(
"Rank", System.Type.GetType("System.Int64"))
        dt.Columns.Add(
"Favorite", System.Type.GetType("System.Boolean"))
        dt.Columns.Add(
"FavoriteOrder", System.Type.GetType("System.Object"))
        
For Each key As String In regKey.GetSubKeyNames
            
Dim file As String = System.Environment.GetFolderPath(System.Environment.SpecialFolder.StartMenu) & "\程序\" & key
            
If Not key.EndsWith(".lnk"OrElse IO.File.Exists(file) Then
                
Dim rk As RegistryKey = Registry.LocalMachine.OpenSubKey("Security\Shell\StartInfo\Start\" & key)
                
Dim Rank As Long = rk.GetValue("Rank")
                
Dim Favorite As Boolean = rk.GetValue("Favorite")
                
Dim FavoriteOrder As Byte() = rk.GetValue("FavoriteOrder")
                
Dim row As DataRow = dt.NewRow
                row(
"Name"= key
                row(
"Rank"= Rank
                row(
"Favorite"= Favorite
                row(
"FavoriteOrder"= FavoriteOrder
                dt.Rows.Add(row)
            
End If
        
Next
        
Dim dv As New DataView
        dv.Table 
= dt
        dv.Sort 
= "Favorite DESC, FavoriteOrder DESC, Rank DESC, Name ASC"
        
Return dv
    
End Function

对项目进行排序

ContractedBlock.gif ExpandedBlockStart.gif Code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt            Dim drv As DataRowView = CType(Me.ListBox1.SelectedItem, DataRowView)
            
Dim drv2 As DataRowView = CType(Me.ListBox1.Items.Item(Me.ListBox1.SelectedIndex + 1), DataRowView)
            
Dim regKey As RegistryKey = Registry.LocalMachine.OpenSubKey("Security\Shell\StartInfo\Start\" & drv("Name"), True)
            
Dim regKey2 As RegistryKey = Registry.LocalMachine.OpenSubKey("Security\Shell\StartInfo\Start\" & drv2("Name"), True)

            
Dim Rank As Long = regKey.GetValue("Rank")
            
Dim Rank2 As Long = regKey2.GetValue("Rank")
            
If Rank = Rank2 Then Rank2 = Rank2 - 1
            regKey.SetValue(
"Rank", Rank2, RegistryValueKind.DWord)
            regKey2.SetValue(
"Rank", Rank, RegistryValueKind.DWord)

            
Dim Favorite As Boolean = regKey.GetValue("Favorite")
            
Dim Favorite2 As Boolean = regKey2.GetValue("Favorite")
            
Dim FavoriteOrder As Byte() = regKey.GetValue("FavoriteOrder")
            
Dim FavoriteOrder2 As Byte() = regKey2.GetValue("FavoriteOrder")
            
If Favorite <> Favorite2 Then
                regKey.SetValue(
"Favorite", Favorite2, RegistryValueKind.DWord)
                regKey2.SetValue(
"Favorite", Favorite, RegistryValueKind.DWord)
                regKey2.SetValue(
"FavoriteOrder", FavoriteOrder, RegistryValueKind.Binary)
                regKey.DeleteValue(
"FavoriteOrder")
            
End If

            
If Favorite AndAlso Favorite2 Then
                regKey.SetValue(
"FavoriteOrder", FavoriteOrder2, RegistryValueKind.Binary)
                regKey2.SetValue(
"FavoriteOrder", FavoriteOrder, RegistryValueKind.Binary)
            
End If

源码下载

fj.png1.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21255398/viewspace-604874/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/21255398/viewspace-604874/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值