博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

下面的宏用于将剪贴板里面的url指定的文件在vs.net中打开以便编辑,目的是提高打开文件的速度
比如:你在ie中运行一个系统时,某一个页面有错,这个时候你需要修改这个页面,那么你只需要复制该页面的url,然后到vs.net中使用一个运行宏的快捷键就可以打开修改该页面了(最好事先打开了解决方案,这样该文件是作为解决方案中的一个文件打开的,而不是一个单独的与项目无关的文件)。如果不使用宏你将不得不打开解决方案资源管理器,一层一层的展开树,然后找到要修改的文件

Imports EnvDTE
Imports System.Diagnostics
Imports System.Windows.Forms
Imports System.Threading

Public Module RecordingModule
    
Dim ClipString As String
    
Sub TemporaryMacro()
        
'// take whatever is on the clipboard and save it to an xml file
        '// intended for cut & paste from QueryAnalyzer
        Dim ClipBoardThread As System.Threading.Thread = New System.Threading.Thread(AddressOf getClipString_core)
        
With ClipBoardThread
            .ApartmentState 
= ApartmentState.STA
            .IsBackground 
= True
            .Start()
            
'-- Wait for copy to happen
            .Join()
        
End With
        ClipBoardThread 
= Nothing
        
If ClipString <> "" Then
            
'虚拟目录名()
            Dim VirtualName = "kxframework"
            VirtualName 
= LCase(VirtualName) ' added 2008-4-2
            Dim pos = InStr(LCase(ClipString), "/" & VirtualName & "/")
            
If (pos = 0Then
                pos 
= InStr(LCase(ClipString), "\" & VirtualName & "\")
            
End If
            
If (pos <> 0Then
                ClipString 
= Right(ClipString, Len(ClipString) - pos - Len("\" & VirtualName & "\"+ 1)
            
End If
            pos 
= InStr(ClipString, "?")
            
If (pos <> 0Then
                ClipString 
= Left(ClipString, pos - 1)
            
End If
            
'组合成正确的物理路径
            ClipString = "E:\科信施工项目成本管理系统\" & VirtualName & "\" & ClipString
            ClipString 
= Replace(ClipString, "/""\")
            
If System.IO.File.Exists(ClipString) Then
                DTE.ItemOperations.OpenFile(ClipString)
            
Else
                MessageBox.Show(
"文件(" & ClipString & ")未找到!")
            
End If
        
End If
    
End Sub

    
Sub getClipString_core()
        ClipString 
= Clipboard.GetDataObject().GetData(System.Windows.Forms.DataFormats.StringFormat)
    
End Sub

End Module