vs.net宏的功能很是强大,很有意思。下面是我使用时写的一些宏。当然常用的宏还可以定义自己的快捷键。
1.自动添加javascript脚本
Sub Add_javascript()
Dim AddStr As String
AddStr = " <script language=""javascript"">" + Chr(13)
AddStr += " " + Chr(13)
AddStr += " function check()" + Chr(13)
AddStr += " {" + Chr(13)
AddStr += "}" + Chr(13)
AddStr += "</script>"
DTE.ActiveDocument.Selection.Text = AddStr
DTE.ActiveDocument.Selection.LineUp(False, 2)
DTE.ActiveDocument.Selection.EndOfLine()
DTE.ActiveDocument.Selection.NewLine()
DTE.ActiveDocument.Selection.Indent()
End Sub
2.加裁调试,参考例子里的。我用的vs2003.刚才运行后停止太快了,vs报告发生错误,是否发送错误?。
Sub AttachToDebug()
Dim attached As Boolean = False
Dim proc As EnvDTE.Process
For Each proc In DTE.Debugger.LocalProcesses
If (Right(proc.Name, 13) = "aspnet_wp.exe") Then
proc.Attach()
attached = True
Exit For
End If
Next
If attached = False Then
MsgBox("process aspnet_wp.exe is not running")
End If
3.Asp_regiis 运行方便一点,(安装 ASP.NET,.net有问题可以试一下)
Sub Asp_regiis()
DTE.ExecuteCommand("View.CommandWindow")
DTE.Windows.Item(Constants.vsWindowKindCommandWindow).Activate()
DTE.ExecuteCommand("Tools.Shell", "cmd /c ""C:/WINNT/Microsoft.NET/Framework/v1.1.4322/Aspnet_regiis.exe -i""")
End Sub
4.ping
Sub ping()
System.Diagnostics.Process.Start("cmd.exe", "/c ping 192.168.0.1")
End Sub
下面的也可以,麻烦一点
Sub ping()
DTE.ExecuteCommand("View.CommandWindow")
DTE.Windows.Item(Constants.vsWindowKindCommandWindow).Activate()
DTE.ExecuteCommand("Tools.Shell", "cmd /c ping 192.168.0.1")
End Sub
5.rar压缩
Sub Rar(ByVal SFile, ByVal DFile)
Dim RarPath As String = """C:/Program Files/WinRAR/rar.exe"""
Dim ExeStr As String = "cmd /c " + RarPath + " a -k -s -m1 " + DFile + " c:/MyMacros.vsmacros"
DTE.ExecuteCommand("View.CommandWindow")
DTE.Windows.Item(Constants.vsWindowKindCommandWindow).Activate()
DTE.ExecuteCommand("Tools.Shell", "cmd /c copy """ + SFile + """ c:/MyMacros.vsmacros")
System.Threading.Thread.Sleep(1000)
DTE.ExecuteCommand("Tools.Shell", ExeStr)
'' "rar a -k -s -m1 c:/1.rar c:/1.xls"
End Sub
Sub testRar()
Rar("c:/1.xls", "c:/2.rar")
End Sub
6.FTP自动压缩文件并上传
Sub FtpUpload()
Rar("D:/lcw/我的文档/Visual Studio Projects/VSMacros71/MyMacros/MyMacros.vsmacros", "c:/mymacros.rar")
System.Threading.Thread.Sleep(3000)
DTE.ItemOperations.NewFile("常规/文本文件")
Dim FtpStr = "open 192.168.0.1" + Chr(13)
FtpStr += "username" + Chr(13)
FtpStr += "password" + Chr(13)
FtpStr += "put ""c:/mymacros.rar""" + Chr(13)
FtpStr += "by" + Chr(13)
DTE.ActiveDocument.Selection.Text = FtpStr
DTE.ActiveDocument.Save("C:/TextFile1.dat")
DTE.ExecuteCommand("Window.CloseDocumentWindow")
DTE.ActiveWindow.Close(vsSaveChanges.vsSaveChangesNo)
DTE.ExecuteCommand("View.CommandWindow")
DTE.Windows.Item(Constants.vsWindowKindCommandWindow).Activate()
System.Threading.Thread.Sleep(1000)
DTE.ExecuteCommand("Tools.Shell", "ftp -s:c:/TextFile1.dat")
'DTE.ExecuteCommand("Tools.Shell", " c:/tel.txt")
System.Threading.Thread.Sleep(1000)
DTE.ExecuteCommand("Tools.Shell", "cmd /c del c:/TextFile1.dat")
DTE.ExecuteCommand("Tools.Shell", "cmd /c del c:/mymacros.rar")
DTE.Windows.Item(Constants.vsWindowKindCommandWindow).Close()
End Sub
7.代码中选择sql语句运行宏后输出查询结果。查询时间长的话会出错,最好是写判断查询的进程是否结束,结束再显示查询结果。
Sub SqlQuery()
Dim sql As String = "isqlw -S SERVER -d databasename -U username -P password -i c:/sqlin.txt -o c:/sqlout.txt"
Dim selection As TextSelection = DTE.ActiveDocument.Selection()
If selection.Text <> "" Then
Dim sw As StreamWriter
sw = File.CreateText("c:/sqlin.txt")
sw.WriteLine(selection.Text)
sw.Close()
DTE.ExecuteCommand("View.CommandWindow")
System.Threading.Thread.Sleep(1000)
DTE.ExecuteCommand("Tools.Shell", sql)
System.Threading.Thread.Sleep(3000)
''open
DTE.ItemOperations.OpenFile("C:/sqlout.txt")
System.Threading.Thread.Sleep(1000)
File.Delete("c:/sqlin.txt")
DTE.Windows.Item(Constants.vsWindowKindCommandWindow).Close()
File.Delete("c:/sqlout.txt")
Else
MsgBox("select sql to query")
End If
End Sub
8.打开编译临时目录
Sub Temp_Path()
DTE.ExecuteCommand("View.CommandWindow")
DTE.Windows.Item(Constants.vsWindowKindCommandWindow).Activate()
DTE.ExecuteCommand("Tools.Shell", "explorer ""C:/WINNT/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files""")
End Sub
9.杀掉asp.net进程,并删除编译临时目录
Public myProcesses() As System.Diagnostics.Process
Public myProcess As System.Diagnostics.Process
Sub Kill_Asp()
Dim a As String
'myProcesses = System.Diagnostics.Process.GetProcessesByName("aspnet_wp.exe")
myProcesses = System.Diagnostics.Process.GetProcesses()
For Each myProcess In myProcesses
a = myProcess.ProcessName()
If a = "aspnet_wp" Then
myProcess.Kill()
End If
Next
System.Threading.Thread.Sleep(3000)
System.IO.Directory.Delete("C:/WINNT/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/xpsweb", True)
End Sub