Autor
		 | 
		
			Tema: Librería de Snippets para VB.NET !! (Compartan aquí sus snippets)  (Leído 607,207 veces)
		 | 
	 
 
	
		
			
				
					
						
							Eleкtro
							
								Ex-Staff 
								 
								  Desconectado
								Mensajes: 9.964
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
· Detectar la codificación de un archivo de texto (Para quien no entienda de BOM's y codificaciones, no existe una manera 100% fiable de detectar la codificación y puede dar falsos positivos) #Region " Detect Text Encoding "       ' [ Detect Text Encoding Function ]     '     ' Examples :     '     ' MsgBox(Detect_Text_Encoding("C:\ANSI File.txt").ToString) ' Result: System.Text.SBCSCodePageEncoding     ' MsgBox(Detect_Text_Encoding("C:\UTF8 File.txt").ToString) ' Result: System.Text.UTF8Encoding         Public Function Detect_Text_Encoding(TextFile As String) As System.Text.Encoding           Dim Bytes () As Byte = IO. File. ReadAllBytes(TextFile )           Dim detectedEncoding As System.Text.Encoding = Nothing           For Each info As System.Text.EncodingInfo In System.Text.Encoding.GetEncodings()               Dim currentEncoding As System.Text.Encoding = info.GetEncoding()             Dim preamble() As Byte = currentEncoding.GetPreamble()             Dim match As Boolean = True               If (preamble.Length > 0) And (preamble.Length <= Bytes.Length) Then                   For i As Integer = 0 To preamble.Length - 1                       If preamble(i) <> Bytes(i) Then                         match = False                         Exit For                     End If                   Next i               Else                   match = False               End If               If match Then                 detectedEncoding = currentEncoding                 Exit For             End If           Next info           If detectedEncoding Is Nothing Then             Return System.Text.Encoding.Default         Else             Return detectedEncoding         End If       End Function   #End Region 
 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Eleкtro
							
								Ex-Staff 
								 
								  Desconectado
								Mensajes: 9.964
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Permitir la escritura de 1 solo caracter en un textbox y deshabilitar el menú contextual, tiene algunas diferencias de la propiedad "MaxLength", no pega el primer caracter de una palabra del clipboards si la longitud de la palabra es de 1 caracter (es un code un poco "custom", util para especificar delimitadores de texto de un solo caracter, o cosas parecidas) #Region " [TextBox] Allow only 1 Character "       ' By Elektro H@cker         ' TextBox [Enter]     Private Sub TextBox_Enter(sender As Object, e As EventArgs) ' Handles TextBox1.MouseEnter           ' Allign the character in the TextBox space         ' If Not TextBox_Separator.TextAlign = HorizontalAlignment.Center Then TextBox_Separator.TextAlign = HorizontalAlignment.Center Then           ' Disable Copy/Paste contextmenu by creating a new one         If sender.ContextMenuStrip Is Nothing Then sender.ContextMenuStrip = New ContextMenuStrip       End Sub       ' TextBox [KeyPress]     Private Sub TextBox_KeyPress(sender As Object, e As KeyPressEventArgs) ' Handles TextBox1.KeyPress           Select Case sender.TextLength               Case 0 ' TextLength = 0                   Select Case e.KeyChar                       Case Chr(22) ' CTRL+V is pressed                           ' If Clipboard contains 0 or 1 character then paste the character.                         e.Handled = IIf(Clipboard.GetText.Length <= 1, False, True)                       Case Else ' Other key is pressed                         e.Handled = False ' Print the character.                   End Select ' e.KeyChar when TextLength = 0               Case 1 ' TextLength = 1                   Select Case e.KeyChar                       Case Convert.ToChar(Keys.Back) ' Backspace is pressed                         e.Handled = False ' Delete the character                       Case Chr(22) ' CTRL+V is pressed                           Select Case sender.SelectionLength                               Case 1 ' If 1 character is selected                                 ' If Clipboard contains 0 or 1 character then paste the character.                                 e.Handled = IIf(Clipboard.GetText.Length <= 1, False, True)                               Case Else ' If any text is selected                                 e.Handled = True ' Don't paste the characters.                           End Select                       Case Else ' Other key is pressed                         ' If any text is selected then don't print the character.                         e.Handled = IIf(sender.SelectionLength = 1, False, True)                   End Select ' e.KeyChar when TextLength = 1           End Select ' TextLength       End Sub       ' TextBox [TextChanged]     Private Sub TextBox_TextChanged(sender As Object, e As EventArgs) ' Handles TextBox1.TextChanged           ' // If NOT Text is empty then Save the character:         '         ' If Not String.IsNullOrEmpty(sender.text) _         ' Then My.Settings.User_Character = Convert.ToChar(sender.text)       End Sub       ' TextBox [Leave]     Private Sub TextBox_Leave(sender As Object, e As EventArgs) ' Handles TextBox1.Leave           ' // If Text is empty then restore the last saved character:         '         ' If String.IsNullOrEmpty(sender.text) _         ' Then sender.text = My.Settings.User_Character       End Sub   #End Region 
 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 29 Septiembre 2013, 18:41 pm por EleKtro H@cker »
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Eleкtro
							
								Ex-Staff 
								 
								  Desconectado
								Mensajes: 9.964
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Listar por el método Burbuja un Array de String o una Lista de String: #Region " BubbleSort Array "       ' BubbleSort Array     '     ' Examples :     '     ' Dim MyArray As String() = {"10", "333", "2", "45"}     ' For Each item In BubbleSort_Array(myarray) : MsgBox(item) : Next ' Result: {"2", "10", "45", "333"}       Private Function BubbleSort_Array(list As String()) As String()           Return list.Select(Function(s) New With { _             Key .OrgStr = s, _             Key .SortStr = System.Text.RegularExpressions.Regex.Replace( _                            s, "(\d+)|(\D+)", _                            Function(m) m.Value.PadLeft(list.Select(Function(y) y.Length).Max, _                            If(Char.IsDigit(m.Value(0)), " "c, Char.MaxValue))) _         }).OrderBy(Function(x) x.SortStr).Select(Function(x) x.OrgStr).ToArray       End Function   #End Region 
 
 #Region " BubbleSort IEnumerable(Of String) "         ' BubbleSort IEnumerable(Of String)     '     ' Examples :     '     ' Dim MyIEnumerable As IEnumerable(Of String) = {"10", "333", "2", "45"}     ' For Each item In BubbleSort_IEnumerable(MyIEnumerable) : MsgBox(item) : Next ' Result: {"2", "10", "45", "333"}       Private Function BubbleSort_IEnumerable(list As IEnumerable(Of String)) As IEnumerable(Of String)           Return list.Select(Function(s) New With { _             Key .OrgStr = s, _             Key .SortStr = System.Text.RegularExpressions.Regex.Replace( _                            s, "(\d+)|(\D+)", _                            Function(m) m.Value.PadLeft(list.Select(Function(y) y.Length).Max, _                            If(Char.IsDigit(m.Value(0)), " "c, Char.MaxValue))) _         }).OrderBy(Function(x) x.SortStr).Select(Function(x) x.OrgStr)       End Function   #End Region 
 
 #Region " BubbleSort List(Of String) "         ' BubbleSort List(Of String)     '     ' Examples :     '     ' Dim MyList As New List(Of String) From {"10", "333", "2", "45"}     ' For Each item In BubbleSort_List(MyList) : MsgBox(item) : Next ' Result: {"2", "10", "45", "333"}       Private Function BubbleSort_List(list As List(Of String)) As List(Of String)           Return list.Select(Function(s) New With { _             Key .OrgStr = s, _             Key .SortStr = System.Text.RegularExpressions.Regex.Replace( _                            s, "(\d+)|(\D+)", _                            Function(m) m.Value.PadLeft(list.Select(Function(x) x.Length).Max, _                            If(Char.IsDigit(m.Value(0)), " "c, Char.MaxValue))) _         }).OrderBy(Function(x) x.SortStr).Select(Function(x) x.OrgStr).ToList       End Function   #End Region 
 
 
 Listar por el  método Burbuja una Lista de DirectoryInfo o de FileInfo especificando la propiedad que se evaluará (por el momento solo funciona con propiedades "TopLevel"): #Region " BubbleSort List(Of DirectoryInfo) "       ' BubbleSort List(Of DirectoryInfo)     '     ' Examples :     '     ' Dim Folders As List(Of IO.DirectoryInfo) = IO.Directory.GetDirectories("C:\Windows", "*").Select(Function(p) New IO.DirectoryInfo(p)).ToList()     '     ' For Each folder In Bubble_Sort_List_DirectoryInfo(Folders, Function() New IO.DirectoryInfo("").Name)     '     MsgBox(folder.Name)     ' Next       Private Shared Function Bubble_Sort_List_DirectoryInfo(list As List(Of IO.DirectoryInfo), _                                                          exp As Linq.Expressions.Expression(Of Func(Of Object))) _                                                          As List(Of IO.DirectoryInfo)           Dim member As Linq.Expressions.MemberExpression = _             If(TypeOf exp.Body Is Linq.Expressions.UnaryExpression, _                DirectCast(DirectCast(exp.Body, Linq.Expressions.UnaryExpression).Operand, Linq.Expressions.MemberExpression), _                DirectCast(exp.Body, Linq.Expressions.MemberExpression))           Return list.Select(Function(s) New With { _         Key .OrgStr = s, _         Key .SortStr = System.Text.RegularExpressions.Regex.Replace( _                        s.Name, "(\d+)|(\D+)", _                        Function(m) m.Value.PadLeft( _                                    list. Select(Function(folder) DirectCast (DirectCast (member. Member, System. Reflection. PropertyInfo) _                                                                 . GetValue(folder,  Nothing),  Object). ToString. Length). Max(), _                                                                 If(Char.IsDigit(m.Value(0)), " "c, Char.MaxValue))) _         }).OrderBy(Function(x) x.SortStr).Select(Function(x) x.OrgStr).ToList       End Function   #End Region 
 
 #Region " BubbleSort List(Of FileInfo) "       ' BubbleSort List(Of FileInfo)     '     ' Examples :     '     ' Dim Files As List(Of IO.FileInfo) = IO.Directory.GetFiles("C:\Windows", "*").Select(Function(p) New IO.FileInfo(p)).ToList()     '     ' For Each file In Bubble_Sort_List_FileInfo(Files, Function() New IO.FileInfo("").Name)     '     MsgBox(file.Name)     ' Next       Private Shared Function Bubble_Sort_List_FileInfo(list As List(Of IO.FileInfo), _                                                          exp As Linq.Expressions.Expression(Of Func(Of Object))) _                                                          As List(Of IO.FileInfo)           Dim member As Linq.Expressions.MemberExpression = _             If(TypeOf exp.Body Is Linq.Expressions.UnaryExpression, _                DirectCast(DirectCast(exp.Body, Linq.Expressions.UnaryExpression).Operand, Linq.Expressions.MemberExpression), _                DirectCast(exp.Body, Linq.Expressions.MemberExpression))           Return list.Select(Function(s) New With { _         Key .OrgStr = s, _         Key .SortStr = System.Text.RegularExpressions.Regex.Replace( _                        s.Name, "(\d+)|(\D+)", _                        Function(m) m.Value.PadLeft( _                                    list. Select(Function(file) DirectCast (DirectCast (member. Member, System. Reflection. PropertyInfo) _                                                                 . GetValue(file,  Nothing),  Object). ToString. Length). Max(), _                                                                 If(Char.IsDigit(m.Value(0)), " "c, Char.MaxValue))) _         }).OrderBy(Function(x) x.SortStr).Select(Function(x) x.OrgStr).ToList       End Function   #End Region 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Eleкtro
							
								Ex-Staff 
								 
								  Desconectado
								Mensajes: 9.964
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Varias maneras de Activar/Desactivar una serie de contorles: #Region " Disable Controls "       ' [ Disable Controls ]     '     ' // By Elektro H@cker     '     ' Examples :     '     ' Disable_Controls(Button1)     ' Disable_Controls({Button1, Button2})     ' Disable_Controls(Of Button)(GroupBox1, False)     ' Disable_Controls(Of Button)(GroupBox1.Controls, False)       ' Disable Control(Control)     Private Sub Disable_Control(ByVal [control] As Control)         [control].Enabled = If([control].Enabled, False, True)     End Sub       ' Disable Controls({Control})     Private Sub Disable_Controls(ByVal Controls() As Control)         For Each [control] As Control In Controls             [control].Enabled = If([control].Enabled, False, True)         Next     End Sub       ' Disable Controls(Of Type)(Control)     Public Sub Disable_Controls(Of T As Control)(ByVal Container As Control)         For Each [control] As T In Container.Controls.OfType(Of T).Where(Function(ctrl) ctrl.Enabled)             [control].Enabled = False         Next     End Sub       ' Disable Controls(Of Type)(ControlCollection)     Public Sub Disable_Controls (Of T  As Control )(ByVal Collection As ControlCollection )         For Each [control ] As T In  Collection. OfType(Of T ). Where(Function(ctrl ) ctrl. Enabled)             [control].Enabled = False         Next     End Sub   #End Region 
 
 #Region " Enable Controls "       ' [ Enable Controls ]     '     ' // By Elektro H@cker     '     ' Examples :     '     ' Enable_Control(Button1)     ' Enable_Controls({Button1, Button2})     ' Enable_Controls(Of Button)(GroupBox1, False)     ' Enable_Controls(Of Button)(GroupBox1.Controls, False)       ' Enable Control(Control)     Private Sub Enable_Control(ByVal [control] As Control)         [control].Enabled = If(Not [control].Enabled, True, False)     End Sub       ' Enable Controls({Control})     Private Sub Enable_Controls(ByVal Controls() As Control)         For Each [control] As Control In Controls             [control].Enabled = If(Not [control].Enabled, True, False)         Next     End Sub       ' Enable Controls(Of Type)(Control)     Public Sub Enable_Controls(Of T As Control)(ByVal Container As Control)         For Each [control] As T In Container.Controls.OfType(Of T).Where(Function(ctrl) Not ctrl.Enabled)             [control].Enabled = True         Next     End Sub       ' Enable Controls(Of Type)(ControlCollection)     Public Sub Enable_Controls (Of T  As Control )(ByVal Collection As ControlCollection )         For Each [control ] As T In  Collection. OfType(Of T ). Where(Function(ctrl ) Not ctrl. Enabled)             [control].Enabled = True         Next     End Sub   #End Region 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Eleкtro
							
								Ex-Staff 
								 
								  Desconectado
								Mensajes: 9.964
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Una Class para manejar la aplicación mp3gain. Sirve para aplicar una ganancia NO destructiva a archivos MP3. http://mp3gain.sourceforge.net/EDITO: Código mejorado. #Region " mp3gain Helper "       ' [ mp3gain Helper ] ' ' // By Elektro H@cker ' ' ' Instructions: ' ' 1. Add the "mp3gain.exe" into the project. ' ' ' Examples : ' ' MsgBox(mp3gain.Is_Avaliable) ' Checks if mp3gain executable is avaliable. ' ' MsgBox(mp3gain.File_Has_MP3Gain_Tag("File.mp3")) ' Checks if file contains mp3gain APE tag ' ' mp3gain.Set_Gain("File.mp3", 95) ' Set the db Gain of file to 95 db (In a scale of "0/100" db) ' mp3gain.Set_Gain("File.mp3", 95, True) ' Set the db Gain of file to -95 db and preserve the datetime of file. ' ' mp3gain.Apply_Gain("File.mp3", +5) ' Apply a change of +5 db in the curent gain of file. ' mp3gain.Apply_Gain("File.mp3", -5) ' Apply a change of -5 db in the curent gain of file. ' ' mp3gain.Apply_Channel_Gain("File.mp3", mp3gain.Channels.Left, +10) ' Apply a change of +10 db in the curent Left channel gain of file. ' mp3gain.Apply_Channel_Gain("File.mp3", mp3gain.Channels.Right, -10) ' Apply a change of -10 db in the curent Right channel gain of file. ' ' mp3gain.Undo_Gain("File.mp3") ' Undo all MP3Gain db changes made in file. ' ' ' ------ ' EVENTS ' ------ ' Public WithEvents mp3gain As New mp3gain ' ' Sub mp3gain_Progress(Progress As Integer, e As EventArgs) Handles mp3gain.PercentDone '     ProgressBar1.Maximum = 100 '     ProgressBar1.Value = Progress ' End Sub ' ' Sub mp3gain_Exited(Message As String, e As EventArgs) Handles mp3gain.Exited '     ProgressBar1.Value = 0 '     MessageBox.Show(Message) ' End Sub       Public Class mp3gain   #Region " CommandLine parametter legend "       ' MP3Gain Parametter Legend:     '     ' /c   - Ignore clipping warning when applying gain.     ' /d   - Set global gain.     ' /e   - Skip Album analysis, even if multiple files listed.     ' /g   - apply gain     ' /p   - Preserve original file timestamp.     ' /r   - apply Track gain automatically (all files set to equal loudness)     ' /t   - Writes modified data to temp file, then deletes original instead of modifying bytes in original file.     ' /u   - Undo changes made (based on stored tag info).     ' /s c - Check stored tag info.   #End Region   #Region " Variables "       ' <summary>     ' Gets or sets the mp3gain.exe executable path.     ' </summary>     Public Shared mp3gain_Location As String = "c:\mp3gain.exe"       ' Stores the MP3Gain process ErrorOutput.     Private Shared ErrorOutput As String = String.Empty       ' Stores the MP3Gain process StandardOutput.     Private Shared StandardOutput As String = String.Empty ' Is not needed       ' Sets a Flag to know if file has MP3Gain APE tag.     Private Shared HasTag As Boolean = False   #End Region   #Region " Enumerations "       Enum Channels As Short         Left = 0  ' /l 0         Right = 1 ' /l 1     End Enum   #End Region   #Region " Events "       ' <summary>     ' Event raised when process progress changes.     ' </summary>     Public Shared Event PercentDone As EventHandler(Of PercentDoneEventArgs)     Public Class PercentDoneEventArgs : Inherits EventArgs         Public Property Progress As Integer     End Class       ' <summary>     ' Event raised when MP3Gain process has exited.     ' </summary>     Public Shared Event Exited As EventHandler(Of ExitedEventArgs)     Public Class ExitedEventArgs : Inherits EventArgs         Public Property Message As String     End Class   #End Region   #Region " Processes Info "       Private Shared Process_TagCheck As New Process() With { _     .StartInfo = New ProcessStartInfo With { _                 .CreateNoWindow = True, _                 .UseShellExecute = False, _                 .RedirectStandardError = False, _                 .RedirectStandardOutput = True _     }}       Private Shared Process_For_Tag As New Process() With { _     .StartInfo = New ProcessStartInfo With { _                 .CreateNoWindow = True, _                 .UseShellExecute = False, _                 .RedirectStandardError = False, _                 .RedirectStandardOutput = True _     }}       Private Shared Process_For_NonTag As New Process() With { _     .StartInfo = New ProcessStartInfo With { _                 .CreateNoWindow = True, _                 .UseShellExecute = False, _                 .RedirectStandardError = True, _                 .RedirectStandardOutput = True _     }}   #End Region   #Region " Miscellaneous functions "       ' <summary>     ' Checks if mp3gain.exe process is avaliable.     ' </summary>     Public Shared Function Is_Avaliable() As Boolean         Return IO. File. Exists(mp3gain_Location )     End Function       ' Checks if a file exist.     Private Shared Sub CheckFileExists (ByVal File As String)               ' Throw New Exception("File doesn't exist: " & File)             MessageBox. Show("File doesn't exist: " & File,  "MP3Gain", MessageBoxButtons. OK, MessageBoxIcon. Error)        End If       End Sub   #End Region   #Region " Gain Procedures "       ' <summary>     ' Checks if mp3gain APE tag exists in file.     ' </summary>     Public Shared Function File_Has_MP3Gain_Tag(ByVal MP3_File As String) As Boolean           CheckFileExists(MP3_File)           Process_TagCheck.StartInfo.FileName = mp3gain_Location         Process_TagCheck.StartInfo.Arguments = String.Format("/s c ""{0}""", MP3_File)         Process_TagCheck.Start()         Process_TagCheck.WaitForExit()           Return Process_TagCheck.StandardOutput.ReadToEnd.Trim.Split(Environment.NewLine).Count - 1           ' Process_TagCheck.Close()       End Function       ' <summary>     ' Set global db Gain in file.     ' </summary>     Public Shared Sub Set_Gain(ByVal MP3_File As String, _                                ByVal Gain As Integer, _                                Optional ByVal Preserve_Datestamp As Boolean = True)           Run_MP3Gain(MP3_File, String.Format("/c /e /r /t {1} /d {2} ""{0}""", _                                             MP3_File, _                                             If(Preserve_Datestamp, "/p", ""), _                                             If(Gain < 0, Gain + 89.0, Gain - 89.0)))       End Sub       ' <summary>     ' Apply db Gain change in file.     ' </summary>     Public Shared Sub Apply_Gain(ByVal MP3_File As String, _                                  ByVal Gain As Integer, _                                  Optional ByVal Preserve_Datestamp As Boolean = True)           Run_MP3Gain(MP3_File, String.Format("/c /e /r /t {1} /g {2} ""{0}""", _                                             MP3_File, _                                             If(Preserve_Datestamp, "/p", ""), _                                             Gain))       End Sub       ' <summary>     ' Apply db Gain change of desired channel in file.     ' Only works for Stereo MP3 files.     ' </summary>     Public Shared Sub Apply_Channel_Gain(ByVal MP3_File As String, _                                          ByVal Channel As Channels, _                                          ByVal Gain As Integer, _                                          Optional ByVal Preserve_Datestamp As Boolean = True)           Run_MP3Gain(MP3_File, String.Format("/c /e /r /l {2} {3} ""{0}""", _                                             MP3_File, _                                             If(Preserve_Datestamp, "/p", ""), _                                             If(Channel = Channels.Left, 0, 1), _                                             Gain))       End Sub       ' <summary>     ' Undo all MP3Gain db changes made in file (based on stored tag info).     ' </summary>     Public Shared Sub Undo_Gain(ByVal MP3_File As String, _                                 Optional ByVal Preserve_Datestamp As Boolean = True)           Run_MP3Gain(MP3_File, String.Format("/c /t {1} /u ""{0}""", _                                             MP3_File, _                                             If(Preserve_Datestamp, "/p", "")))       End Sub   #End Region   #Region " Run MP3Gain Procedures "       Private Shared Sub Run_MP3Gain(ByVal MP3_File As String, ByVal Parametters As String)           CheckFileExists(MP3_File)           HasTag = File_Has_MP3Gain_Tag(MP3_File)           Process_For_Tag.StartInfo.FileName = mp3gain_Location         Process_For_Tag.StartInfo.Arguments = Parametters           Process_For_NonTag.StartInfo.FileName = mp3gain_Location         Process_For_NonTag.StartInfo.Arguments = Parametters           If HasTag Then             Run_MP3Gain_For_Tag()         Else             Run_MP3Gain_For_NonTag()         End If       End Sub       Private Shared Sub Run_MP3Gain_For_Tag()           Process_For_Tag.Start()         Process_For_Tag.WaitForExit()           RaiseEvent Exited(Process_For_Tag.StandardOutput.ReadToEnd.Trim.Split(Environment.NewLine).LastOrDefault, Nothing)           StandardOutput = Nothing         ' Process_For_Tag.Close()       End Sub       Private Shared Sub Run_MP3Gain_For_NonTag()           Process_For_NonTag.Start()           While Not Process_For_NonTag.HasExited               Try                   ErrorOutput = Process_For_NonTag.StandardError.ReadLine.Trim.Split("%").First                 If CInt(ErrorOutput) < 101 Then                     RaiseEvent PercentDone(ErrorOutput, Nothing)                 End If               Catch : End Try           End While           StandardOutput = Process_For_NonTag.StandardOutput.ReadToEnd.Trim.Split(Environment.NewLine).Last           RaiseEvent Exited(StandardOutput, Nothing)           ErrorOutput = Nothing         StandardOutput = Nothing         ' Process_For_Tag.Close()       End Sub   #End Region   End Class   #End Region 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 11 Octubre 2013, 18:26 pm por EleKtro H@cker »
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Eleкtro
							
								Ex-Staff 
								 
								  Desconectado
								Mensajes: 9.964
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Un ayudante para manejar la librería TabLig Sharp:  https://github.com/mono/taglib-sharpLa librería sirve para editar los metadatos de archivos de música, entre otros formatos como imágenes png, etc... Mi Class está pensada para usarse con archivos MP3. #Region " TagLib Sharp Helper "     ' [ TagLib Sharp Helper ] ' ' // By Elektro H@cker ' ' ' Instructions: ' 1. Add a reference to "taglib-sharp.dll" into the project. ' ' ' Examples: ' ' MsgBox(TagLibSharp.FileIsCorrupt("C:\File.mp3")) ' Result: True or False ' MsgBox(TagLibSharp.FileIsWriteable("C:\File.mp3")) ' Result: True or False ' MsgBox(TagLibSharp.Get_Title("C:\File.mp3")) ' MsgBox(TagLibSharp.Get_Artist("C:\File.mp3")) ' MsgBox(TagLibSharp.Get_Album("C:\File.mp3")) ' MsgBox(TagLibSharp.Get_Genre("C:\File.mp3")) ' MsgBox(TagLibSharp.Get_Year("C:\File.mp3")) ' MsgBox(TagLibSharp.Get_Basic_TagInfo("C:\File.mp3")) ' TagLibSharp.RemoveTag("C:\File.mp3", TagLib.TagTypes.Id3v1 Or TagLib.TagTypes.Id3v2) ' Removes ID3v1 + ID3v2 Tags ' TagLibSharp.Set_Tag_Fields("C:\Test.mp3", Sub(x) x.Tag.Title = "Title Test"}) ' TagLibSharp.Set_Tag_Fields("C:\Test.mp3", {Sub(x) x.Tag.Title = "Title Test", Sub(x) x.Tag.Performers = {"Artist Test"}})     Public Class TagLibSharp       ''' <summary>     ''' Stores the Taglib object.     ''' </summary>     Private Shared TagFile  As TagLib. File = Nothing       ''' <summary>     ''' Checks if file is possibly corrupted.     ''' </summary>     Public Shared Function FileIsCorrupt (ByVal File As String) As Boolean           Try             Return TagLib. File. Create(File). PossiblyCorrupt           Catch ex As Exception             Throw New Exception(ex.Message)             Return True           Finally             If TagFile IsNot Nothing Then TagFile.Dispose()           End Try       End Function   ''' <summary> ''' Checks if file can be written. ''' </summary> Public Shared Function FileIsWriteable (ByVal File As String) As Boolean       Try         Return TagLib. File. Create(File). Writeable       Catch ex As Exception         Throw New Exception(ex.Message)         Return True       Finally         If TagFile IsNot Nothing Then TagFile.Dispose()       End Try   End Function   ''' <summary> ''' Get TagTypes of file. ''' </summary> Public Shared Function Get_Tags (ByVal File As String) As String       Try         Return TagLib. File. Create(File). TagTypes. ToString       Catch ex As Exception         Throw New Exception(ex.Message)         Return String.Empty       Finally         If TagFile IsNot Nothing Then TagFile.Dispose()       End Try   End Function   ''' <summary> ''' Remove a entire Tag from file. ''' </summary> Public Shared Sub RemoveTag (ByVal File As String,  ByVal TagTypes  As TagLib. TagTypes)       Try     Catch ex As Exception         Throw New Exception(ex.Message)         Exit Sub     End Try       Try           If Not TagFile.PossiblyCorrupt _         AndAlso TagFile.Writeable Then               TagFile.RemoveTags(TagTypes)             TagFile.Save()           End If       Catch ex As Exception         Throw New Exception(ex.Message)       Finally         If TagFile IsNot Nothing Then TagFile.Dispose()       End Try   End Sub   ''' <summary> ''' Gets the Title tag field of file. ''' </summary> Public Shared Function Get_Title (ByVal File As String) As String       Try         Return TagLib. File. Create(File). Tag. Title       Catch ex As Exception         Throw New Exception(ex.Message)         Return String.Empty       Finally         If TagFile IsNot Nothing Then TagFile.Dispose()       End Try   End Function   ''' <summary> ''' Gets the Artist tag field of file. ''' </summary> Public Shared Function Get_Artist (ByVal File As String) As String       Try         Return TagLib. File. Create(File). Tag. Performers(0)       Catch ex As Exception         Throw New Exception(ex.Message)         Return String.Empty       Finally         If TagFile IsNot Nothing Then TagFile.Dispose()       End Try   End Function   ''' <summary> ''' Gets the Album tag field of file. ''' </summary> Public Shared Function Get_Album (ByVal File As String) As String       Try         Return TagLib. File. Create(File). Tag. Album       Catch ex As Exception         Throw New Exception(ex.Message)         Return String.Empty       Finally         If TagFile IsNot Nothing Then TagFile.Dispose()       End Try   End Function   ''' <summary> ''' Gets the Genre tag field of file. ''' </summary> Public Shared Function Get_Genre (ByVal File As String) As String       Try         Return TagLib. File. Create(File). Tag. Genres(0)       Catch ex As Exception         Throw New Exception(ex.Message)         Return String.Empty       Finally         If TagFile IsNot Nothing Then TagFile.Dispose()       End Try   End Function   ''' <summary> ''' Gets the Year tag field of file. ''' </summary> Public Shared Function Get_Year (ByVal File As String) As String       Try         Return TagLib. File. Create(File). Tag. Year       Catch ex As Exception         Throw New Exception(ex.Message)         Return String.Empty       Finally         If TagFile IsNot Nothing Then TagFile.Dispose()       End Try   End Function   ''' <summary> ''' Gets the basic tag fields of file. ''' </summary> Public Shared Function Get_Basic_TagInfo (ByVal File As String) As String       Try           Return String.Format("Title: {1}{0}Artist: {2}{0}Album: {3}{0}Genre: {4}{0}Year: {5}", Environment.NewLine, _                              TagFile.Tag.Title, _                              TagFile.Tag.Performers(0), _                              TagFile.Tag.Album, _                              TagFile.Tag.Genres(0), _                              TagFile.Tag.Year)       Catch ex As Exception         Throw New Exception(ex.Message)         Return String.Empty       Finally         If TagFile IsNot Nothing Then TagFile.Dispose()       End Try   End Function   ''' <summary> ''' Sets a Tag field. ''' </summary> Public Shared Sub Set_Tag_Fields (ByVal File As String, _                                     ByVal FieldSetter  As Action (Of TagLib. File))       Try     Catch ex As Exception         Throw New Exception(ex.Message)         Exit Sub     End Try       Try           If Not TagFile.PossiblyCorrupt _         AndAlso TagFile.Writeable Then               FieldSetter(TagFile)             TagFile.Save()           End If       Catch ex As Exception         Throw New Exception(ex.Message)       Finally         If TagFile IsNot Nothing Then TagFile.Dispose()       End Try   End Sub   ''' <summary> ''' Sets multiple Tag fields. ''' </summary> Public Shared Sub Set_Tag_Fields (ByVal File As String, _                                     ByVal FieldSetter () As Action (Of TagLib. File))       Try     Catch ex As Exception         Throw New Exception(ex.Message)         Exit Sub     End Try       Try           If Not TagFile.PossiblyCorrupt _         AndAlso TagFile.Writeable Then               For Each Field In FieldSetter                 Field(TagFile)             Next               TagFile.Save()           End If       Catch ex As Exception         Throw New Exception(ex.Message)       Finally         If TagFile IsNot Nothing Then TagFile.Dispose()       End Try   End Sub   End Class   #End Region 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Eleкtro
							
								Ex-Staff 
								 
								  Desconectado
								Mensajes: 9.964
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Un ayudante de la librería UltraId3Lib:  http://home.fuse.net/honnert/UltraID3Lib/UltraID3Lib0968.zipLa diferencia entre esta librería y  TagLib Sharp es que  UltraID3Lib trabaja sólamente metadatos de tipo ID3v1 e ID3v2 (y las variantes de ID3v2, y los Covers) Esta librería está optimizada para trabajar archivos MP3, de hecho sólamente trabaja archivos mp3, además hice un pequeño test de velocidad y estos fueron los resultados:                                                                                                TagLib Sharp        UltraId3Lib Tiempo transcurrido para eliminar los tags ID3v1 + ID3v2 de 1.000 archivos mp3 (5,2 GB)       05:40 minutos       03:10 minutos Ahora... si tuviera que elegir entre la lógica interna que usa cada librería, lo cierto es que no sabría por cual decidirme, por eso hice un ayudante para las dos librerías xD. EDITO: He extendido la Class para manejar las carátulas de los mp3.EDITO: He vuelto ha extender la Class para exprimir un poco más la librería.#Region " UltraID3Lib "       ' [ UltraID3Lib Helper ] ' ' // By Elektro H@cker ' ' ' Instructions: ' 1. Add a reference to "UltraID3Lib.dll" into the project. ' ' ' Examples: ' ' MsgBox(UltraID3Lib.FileIsCorrupt("C:\File.mp3")) ' Result: True or False ' MsgBox(UltraID3Lib.ID3v1_Exist("C:\File.mp3"))   ' Result: True or False ' MsgBox(UltraID3Lib.ID3v2_Exist("C:\File.mp3"))   ' Result: True or False ' MsgBox(UltraID3Lib.IsVBR("C:\File.mp3"))         ' Result: True or False ' MsgBox(UltraID3Lib.Get_Metadata_Errors("C:\File.mp3")) ' MsgBox(UltraID3Lib.Get_Metadata_Warnings("C:\File.mp3")) ' ' MsgBox(UltraID3Lib.Get_ID3_Tags("C:\File.mp3")) ' MsgBox(UltraID3Lib.Get_Title("C:\File.mp3")) ' MsgBox(UltraID3Lib.Get_Artist("C:\File.mp3")) ' MsgBox(UltraID3Lib.Get_Album("C:\File.mp3")) ' MsgBox(UltraID3Lib.Get_Genre("C:\File.mp3")) ' MsgBox(UltraID3Lib.Get_Year("C:\File.mp3")) ' MsgBox(UltraID3Lib.Get_Basic_Tag_Fields("C:\File.mp3")) ' ' UltraID3Lib.Remove_ID3v1_Tag("C:\File.mp3") ' Removes ID3v1 Tag ' UltraID3Lib.Remove_ID3v2_Tag("C:\File.mp3") ' Removes ID3v2 Tag ' UltraID3Lib.Remove_ID3v1_ID3v2_Tags("C:\File.mp3") ' Removes ID3v1 + ID3v2 Tags ' ' UltraID3Lib.Set_Tag_Field("C:\File.mp3", Sub(x) x.ID3v2Tag.Title = "Title Test") ' UltraID3Lib.Set_Tag_Fields("C:\File.mp3", {Sub(x) x.ID3v2Tag.Title = "Title Test", Sub(x) x.ID3v2Tag.Artist = "Artist Test"}) ' ' UltraID3Lib.Set_Main_Cover("C:\File.mp3", "C:\Image.jpg") ' UltraID3Lib.Add_Cover("C:\File.mp3", "C:\Image.jpg") ' UltraID3Lib.Delete_Covers("C:\File.mp3") ' PictureBox1.BackgroundImage = UltraID3Lib.Get_Main_Cover("C:\File.mp3") ' ' For Each Genre As String In UltraID3Lib.Get_Generic_ID3_Genres() : MsgBox(Genre) : Next ' ' MsgBox(UltraID3Lib.Get_Bitrate("C:\File.mp3")) ' Result: 320 ' MsgBox(UltraID3Lib.Get_Duration("C:\File.mp3")) ' Result: 00:00:00:000 ' MsgBox(UltraID3Lib.Get_Frequency("C:\File.mp3")) ' Result: 44100 ' MsgBox(UltraID3Lib.Get_Channels("C:\File.mp3")) ' Result: JointStereo ' MsgBox(UltraID3Lib.Get_Layer("C:\File.mp3")) ' Result: MPEGLayer3 ' MsgBox(UltraID3Lib.Get_Filesize("C:\File.mp3")) ' Result: 6533677       Imports HundredMilesSoftware.UltraID3Lib   Public Class UltraID3Lib       ''' <summary>     ''' Stores the UltraID3Lib object.     ''' </summary>     Private Shared [UltraID3] As New UltraID3       ' ''' <summary>     ' ''' Stores the Picture things.     ' ''' </summary>     ' Private Shared CurrentPictureFrame As ID3v2PictureFrame ' Not used in this Class     ' Private Shared PictureTypes As ArrayList ' Not used in this Class     ' Private Shared PictureFrames As ID3FrameCollection ' Not used in this Class     ' Private Shared PictureIndex As Integer ' Not used in this Class       ''' <summary>     ''' Checks if file is possibly corrupt.     ''' </summary>     Public Shared Function FileIsCorrupt (ByVal File As String) As Boolean           Try             Return Convert.ToBoolean( _                        [UltraID3].GetExceptions(ID3ExceptionLevels.Error).Length _                      + [UltraID3].GetExceptions(ID3ExceptionLevels.Warning).Length)           Catch ex As Exception             Throw New Exception(ex.Message)         End Try       End Function       ''' <summary>     ''' Checks for errors inside file metadata.     ''' </summary>     Public Shared Function Get_Metadata_Errors (ByVal File As String) As String           Try             Return String.Join(Environment.NewLine, _                                [UltraID3].GetExceptions(ID3ExceptionLevels.Error) _                                .Select(Function(ex) ex.Message))           Catch ex As Exception             Throw New Exception(ex.Message)         End Try       End Function       ''' <summary>     ''' Checks for warnings inside file metadata.     ''' </summary>     Public Shared Function Get_Metadata_Warnings (ByVal File As String) As String           Try             Return String.Join(Environment.NewLine, _                                [UltraID3].GetExceptions(ID3ExceptionLevels.Warning) _                                .Select(Function(ex) ex.Message))           Catch ex As Exception             Throw New Exception(ex.Message)         End Try       End Function       ''' <summary>     ''' Checks if ID3v1 exists in file.     ''' </summary>     Public Shared Function ID3v1_Exist (ByVal File As String) As Boolean           Try             Return [UltraID3].ID3v1Tag.ExistsInFile         Catch ex As Exception             Throw New Exception(ex.Message)         End Try       End Function       ''' <summary>     ''' Checks if ID3v2 exists in file.     ''' </summary>     Public Shared Function ID3v2_Exist (ByVal File As String) As Boolean           Try             Return [UltraID3].ID3v2Tag.ExistsInFile         Catch ex As Exception             Throw New Exception(ex.Message)         End Try       End Function       ''' <summary>     ''' Gets ID3 TagTypes of file.     ''' </summary>     Public Shared Function Get_ID3_Tags (ByVal File As String) As String           Try               Return String.Format("{0}{1}", _                                  If([UltraID3].ID3v1Tag.ExistsInFile, "ID3v1, ", ""), _                                  If([UltraID3].ID3v2Tag.ExistsInFile, " ID3v2", "")).Trim           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function       ''' <summary>     ''' Removes entire ID3v1 Tag from file.     ''' </summary>     Public Shared Sub Remove_ID3v1_Tag (ByVal File As String)           Try             [UltraID3].ID3v1Tag.Clear()             [UltraID3].Write()           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Sub       ''' <summary>     ''' Removes entire ID3v2 Tag from file.     ''' </summary>     Public Shared Sub Remove_ID3v2_Tag (ByVal File As String)           Try             [UltraID3].ID3v2Tag.Clear()             [UltraID3].Write()           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Sub       ''' <summary>     ''' Removes entire ID3v1 + ID3v2 Tags from file.     ''' </summary>     Public Shared Sub Remove_ID3v1_ID3v2_Tags (ByVal File As String)           Try             [UltraID3].ID3v1Tag.Clear()             [UltraID3].ID3v2Tag.Clear()             [UltraID3].Write()           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Sub       ''' <summary>     ''' Gets the Title tag field of file.     ''' </summary>     Public Shared Function Get_Title (ByVal File As String) As String           Try             Return [UltraID3].Title           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function       ''' <summary>     ''' Gets the Artist tag field of file.     ''' </summary>     Public Shared Function Get_Artist (ByVal File As String) As String           Try             Return [UltraID3].Artist           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function       ''' <summary>     ''' Gets the Album tag field of file.     ''' </summary>     Public Shared Function Get_Album (ByVal File As String) As String           Try             Return [UltraID3].Album           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function       ''' <summary>     ''' Gets the Genre tag field of file.     ''' </summary>     Public Shared Function Get_Genre (ByVal File As String) As String           Try             Return [UltraID3].Genre           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function       ''' <summary>     ''' Gets the Year tag field of file.     ''' </summary>     Public Shared Function Get_Year (ByVal File As String) As String           Try             Return [UltraID3].Year           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function       ''' <summary>     ''' Gets the basic tag fields of file.     ''' </summary>     Public Shared Function Get_Basic_Tag_Fields (ByVal File As String) As String           Try               Return String.Format("Title: {1}{0}Artist: {2}{0}Album: {3}{0}Genre: {4}{0}Year: {5}", Environment.NewLine, _                                  [UltraID3].Title, _                                  [UltraID3].Artist, _                                  [UltraID3].Album, _                                  [UltraID3].Genre, _                                  [UltraID3].Year)           Catch ex As Exception             Throw New Exception(ex.Message)             Return String.Empty           End Try       End Function       ''' <summary>     ''' Sets a Tag field.     ''' </summary>     Public Shared Sub Set_Tag_Field (ByVal File As String, _                                      ByVal FieldSetter As Action(Of UltraID3))           Try             FieldSetter([UltraID3])             [UltraID3].Write()           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Sub       ''' <summary>     ''' Sets multiple Tag fields.     ''' </summary>     Public Shared Sub Set_Tag_Fields (ByVal File As String, _                                       ByVal FieldSetter() As Action(Of UltraID3))             Try               For Each Field As Action(Of UltraID3) In FieldSetter                 Field([UltraID3])             Next               [UltraID3].Write()           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Sub       ''' <summary>     ''' Sets Main Picture Cover.     ''' </summary>     Public Shared Sub Set_Main_Cover (ByVal File As String, _                              ByVal Picture As String)           Try             [UltraID3].ID3v2Tag.Frames.Add( _                        New ID3v23PictureFrame(New Bitmap(Picture), PictureTypes.CoverFront, String.Empty, TextEncodingTypes.Unicode))               [UltraID3].Write()           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Sub       ''' <summary>     ''' Adds a Picture Cover.     ''' </summary>     Public Shared Sub Add_Cover (ByVal File As String, _                                  ByVal Picture As String)           Try             [UltraID3].ID3v2Tag.Frames.Add( _                        New ID3v23PictureFrame(New Bitmap(Picture), PictureTypes.Other, String.Empty, TextEncodingTypes.Unicode))             [UltraID3].Write()           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Sub       ''' <summary>     ''' Deletes all Picture Covers.     ''' </summary>     Public Shared Sub Delete_Covers (ByVal File As String)           Try               [UltraID3].ID3v2Tag.Frames.Remove( _                        [UltraID3].ID3v2Tag.Frames.GetFrames(MultipleInstanceID3v2FrameTypes.ID3v22Picture))               [UltraID3].ID3v2Tag.Frames.Remove( _                        [UltraID3].ID3v2Tag.Frames.GetFrames(MultipleInstanceID3v2FrameTypes.ID3v23Picture))               [UltraID3].Write()           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Sub       ''' <summary>     ''' Gets Main Picture Cover.     ''' </summary>     Public Shared Function Get_Main_Cover (ByVal File As String) As Bitmap            Try               If [UltraID3].ID3v2Tag.Frames.GetFrame(MultipleInstanceID3v2FrameTypes.ID3v23Picture, False) IsNot Nothing Then                 Return DirectCast( _                        [UltraID3].ID3v2Tag.Frames.GetFrame(MultipleInstanceID3v2FrameTypes.ID3v23Picture, False),  _                        ID3v2PictureFrame).Picture             End If               If [UltraID3].ID3v2Tag.Frames.GetFrame(MultipleInstanceID3v2FrameTypes.ID3v22Picture, False) IsNot Nothing Then                 Return DirectCast( _                        [UltraID3].ID3v2Tag.Frames.GetFrame(MultipleInstanceID3v2FrameTypes.ID3v22Picture, False),  _                        ID3v2PictureFrame).Picture             End If               Return Nothing           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function       ''' <summary>     ''' Gets the generic ID3 genre names.     ''' </summary>     Public Shared Function Get_Generic_ID3_Genres() As String()         Return UltraID3.GenreInfos.Cast(Of GenreInfo).Select(Function(Genre) Genre.Name).ToArray     End Function       ''' <summary>     ''' Gets the Audio Bitrate.     ''' </summary>     Public Shared Function Get_Bitrate (ByVal File As String) As Short            Try             Return [UltraID3].FirstMPEGFrameInfo.Bitrate           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function       ''' <summary>     ''' Gets the Audio Duration.     ''' </summary>     Public Shared Function Get_Duration (ByVal File As String) As String           Try             Return String.Format("{0:00}:{1:00}:{2:00}:{3:000}", _                                   [UltraID3].FirstMPEGFrameInfo.Duration.Hours, _                                   [UltraID3].FirstMPEGFrameInfo.Duration.Minutes, _                                   [UltraID3].FirstMPEGFrameInfo.Duration.Seconds, _                                   [UltraID3].FirstMPEGFrameInfo.Duration.Milliseconds)           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function       ''' <summary>     ''' Gets the Audio Frequency.     ''' </summary>     Public Shared Function Get_Frequency (ByVal File As String) As Integer           Try             Return [UltraID3].FirstMPEGFrameInfo.Frequency           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function       ''' <summary>     ''' Gets the Audio MPEG Layer.     ''' </summary>     Public Shared Function Get_Layer (ByVal File As String) As String           Try             Return [UltraID3].FirstMPEGFrameInfo.Layer.ToString           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function       ''' <summary>     ''' Gets the Audio Channel mode.     ''' </summary>     Public Shared Function Get_Channels (ByVal File As String) As String           Try             Return [UltraID3].FirstMPEGFrameInfo.Mode.ToString           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function       ''' <summary>     ''' Gets the File Size.     ''' </summary>     Public Shared Function Get_Filesize (ByVal File As String) As Long           Try             Return [UltraID3].Size           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function       ''' <summary>     ''' Checks if VBR header is present in file.     ''' </summary>     Public Shared Function IsVBR (ByVal File As String) As Boolean           Try             Return [UltraID3].FirstMPEGFrameInfo.VBRInfo.WasFound           Catch ex As Exception             Throw New Exception(ex.Message)           End Try       End Function   End Class   #End Region 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación:  6 Octubre 2013, 03:16 am por EleKtro H@cker »
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Eleкtro
							
								Ex-Staff 
								 
								  Desconectado
								Mensajes: 9.964
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Un custom MessageBox que se puede alinear en el centro del formulario y además se puede personalizar la fuente de texto usada. Modo de empleo:         Using New CustomMessageBox(Me, New Font(New FontFamily("Lucida Console"), Font.SizeInPoints, FontStyle.Bold))             MessageBox.Show("Test Text", "Test Title", MessageBoxButtons.OK)         End Using 
 
 Imports System.Drawing Imports System.Runtime.InteropServices Imports System.Text Imports System.Windows.Forms   Class CustomMessageBox : Implements IDisposable       Private mTries As Integer = 0     Private mOwner As Form     Private mFont As Font       ' P/Invoke declarations     Private Const WM_SETFONT As Integer = &H30     Private Const WM_GETFONT As Integer = &H31       Private Delegate Function EnumThreadWndProc(hWnd As IntPtr, lp As IntPtr) As Boolean       <DllImport("user32.dll")> _     Private Shared Function EnumThreadWindows(tid As Integer, callback As EnumThreadWndProc, lp As IntPtr) As Boolean     End Function       <DllImport("kernel32.dll")> _     Private Shared Function GetCurrentThreadId() As Integer     End Function       <DllImport("user32.dll")> _     Private Shared Function GetClassName(hWnd As IntPtr, buffer As StringBuilder, buflen As Integer) As Integer     End Function       <DllImport("user32.dll")> _     Private Shared Function GetDlgItem(hWnd As IntPtr, item As Integer) As IntPtr     End Function       <DllImport("user32.dll")> _     Private Shared Function SendMessage(hWnd As IntPtr, msg As Integer, wp As IntPtr, lp As IntPtr) As IntPtr     End Function       <DllImport("user32.dll")> _     Shared Function GetWindowRect(hWnd As IntPtr, ByRef rc As RECT) As Boolean     End Function       <DllImport("user32.dll")> _     Shared Function MoveWindow(hWnd As IntPtr, x As Integer, y As Integer, w As Integer, h As Integer, repaint As Boolean) As Boolean     End Function       Structure RECT         Public Left As Integer         Public Top As Integer         Public Right As Integer         Public Bottom As Integer     End Structure       Public Sub New(owner As Form, Optional Custom_Font As Font = Nothing)         mOwner = owner         mFont = Custom_Font         owner.BeginInvoke(New MethodInvoker(AddressOf findDialog))     End Sub       Private Sub findDialog()           ' Enumerate windows to find the message box         If mTries < 0 Then             Return         End If           Dim callback As New EnumThreadWndProc(AddressOf checkWindow)           If EnumThreadWindows(GetCurrentThreadId(), callback, IntPtr.Zero) Then             If System.Threading.Interlocked.Increment(mTries) < 10 Then                 mOwner.BeginInvoke(New MethodInvoker(AddressOf findDialog))             End If         End If       End Sub       Private Function checkWindow(hWnd As IntPtr, lp As IntPtr) As Boolean           ' Checks if <hWnd> is a dialog         Dim sb As New StringBuilder(260)         GetClassName(hWnd, sb, sb.Capacity)         If sb.ToString() <> "#32770" Then Return True           ' Got it, get the STATIC control that displays the text         Dim hText As IntPtr = GetDlgItem(hWnd, &HFFFF)           Dim frmRect As New Rectangle(mOwner.Location, mOwner.Size)         Dim dlgRect As RECT         GetWindowRect(hWnd, dlgRect)         MoveWindow(hWnd, frmRect.Left + (frmRect.Width - dlgRect.Right + dlgRect.Left) \ 2, frmRect.Top + (frmRect.Height - dlgRect.Bottom + dlgRect.Top) \ 2, dlgRect.Right - dlgRect.Left, dlgRect.Bottom - dlgRect.Top, True)         If hText <> IntPtr.Zero Then               If mFont Is Nothing Then                 ' Get the current font                 mFont = Font.FromHfont(SendMessage(hText, WM_GETFONT, IntPtr.Zero, IntPtr.Zero))             End If               SendMessage(hText, WM_SETFONT, mFont.ToHfont(), New IntPtr(1))           End If           ' Done         Return False       End Function       Public Sub Dispose() Implements IDisposable.Dispose         mTries = -1         mOwner = Nothing         If mFont IsNot Nothing Then mFont.Dispose()     End Sub   End Class 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Eleкtro
							
								Ex-Staff 
								 
								  Desconectado
								Mensajes: 9.964
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Un ayudante para manejar la aplicación  dBpoweramp Music Converter, es el mejor conversor archivos de música a cualquier formato. http://www.dbpoweramp.com/dmc.htmLe agregué lo necesario para convertir a MP3, WAV, y WMA, se puede extender para agregar todos los demás codecs, pero es muy tedioso... Tambiñen le agregué un par de eventos para capturar el progreso de conversión y mensajes de errores, el modo de empleo está explicado en los primeros comentarios. PD: También existe una librería llamada dMcscriptinglib.dll, pero los autores de dbPowerAmp me dijeron que no es posible capturar el progreso de una conversión usando la librería, por ese motivo uso el executable CLI.  EDITO: Corregido un bug en las Enumeraciones del SampleRate de los Codecs, y he simplificado parte del código. #Region " CoreConverter Helper "       ' [ CoreConverter Helper ] ' ' // By Elektro H@cker ' ' ' Instructions: ' ' 1. Add the "CoreConverter.exe" into the project, '    together with the dbPoweramp Effects and Codec folders. ' ' Examples : ' ' ------------------- ' CONVERT FILE TO MP3 ' ------------------- ' CoreConverter.Convert_To_MP3("C:\Input.wav", "C:\Output.mp3", _ '                              CoreConverter.Lame_Bitrate.kbps_320, _ '                              CoreConverter.Lame_Bitrate_Mode.cbr, _ '                              CoreConverter.Lame_Profile.SLOW, _ '                              CoreConverter.Lame_Quality.Q0_Maximum, _ '                              CoreConverter.Lame_Khz.Same_As_Source, _ '                              CoreConverter.Lame_Channels.auto, _ '                              { _ '                                CoreConverter.DSP_Effects.Delete_Output_File_on_Error, _ '                                CoreConverter.DSP_Effects.Recycle_Source_File_After_Conversion _ '                              }, _ '                              False, _ '                              CoreConverter.Priority.normal) ' ' ------------------- ' CONVERT FILE TO WAV ' ------------------- ' CoreConverter.Convert_To_WAV_Uncompressed("C:\Input.mp3", "C:\Output.wav", _ '                                           CoreConverter.WAV_Uncompressed_Bitrate.Same_As_Source, _ '                                           CoreConverter.WAV_Uncompressed_Khz.Same_As_Source, _ '                                           CoreConverter.WAV_Uncompressed_Channels.Same_As_Source, , False) ' ' ------------------- ' CONVERT FILE TO WMA ' ------------------- ' CoreConverter.Convert_To_WMA("C:\Input.mp3", "C:\Output.wma", _ '                              CoreConverter.WMA_9_2_BitRates.Kbps_128, _ '                              CoreConverter.WMA_9_2_Khz.Khz_44100, _ '                              CoreConverter.WMA_9_2_Channels.stereo, , False) ' ' ------ ' EVENTS ' ------ ' Public WithEvents Converter As New CoreConverter() ' ' Sub Converter_Progress(Progress As Integer, e As EventArgs) Handles Converter.PercentDone '     ProgressBar1.Maximum = 59 '     ProgressBar1.Step = 1 '     ProgressBar1.PerformStep() ' End Sub ' ' Sub Converter_Message(Message As String, e As EventArgs) Handles Converter.Exited '     ProgressBar1.Value = 0 '     MessageBox.Show(Message) ' End Sub       Public Class CoreConverter : Implements IDisposable   #Region " Variables "       ' <summary>     ' Gets or sets CoreConverter.exe executable path.     ' </summary>     Public Shared CoreConverter_Location As String = ".\CoreConverter.exe"       ' Stores the CoreConverter process progress     Private Shared CurrentProgress As Integer = 0       ' Stores the CoreConverter process StandarOutput     Private Shared StandardOutput As String = String.Empty       ' Stores the CoreConverter process ErrorOutput     Private Shared ErrorOutput As String = String.Empty       ' Stores the next output character     Private Shared OutputCharacter As Char = Nothing       ' Stores the DSP Effects formatted string     Private Shared Effects As String = String.Empty   #End Region   #Region " Events "       ' <summary>     ' Event raised when conversion progress changes.     ' </summary>     Public Shared Event PercentDone As EventHandler(Of PercentDoneEventArgs)     Public Class PercentDoneEventArgs : Inherits EventArgs         Public Property Progress As Integer     End Class       ' <summary>     ' Event raised when CoreConverter process has exited.     ' </summary>     Public Shared Event Exited As EventHandler(Of ExitedEventArgs)     Public Class ExitedEventArgs : Inherits EventArgs         Public Property Message As String     End Class   #End Region   #Region " Process Info "       ' CoreConverter Process Information.     Private Shared CoreConverter As New Process() With { _         .StartInfo = New ProcessStartInfo With { _         .CreateNoWindow = True, _         .UseShellExecute = False, _         .RedirectStandardError = True, _         .RedirectStandardOutput = True, _         .StandardErrorEncoding = System.Text.Encoding.Unicode, _         .StandardOutputEncoding = System.Text.Encoding.Unicode}}   #End Region   #Region " CoreConverter Enumerations "       ' Priority level of CoreConverter.exe     Enum Priority         idle         low         normal         high     End Enum       ' DSP Effects     Public Enum DSP_Effects         Delete_Output_File_on_Error ' Delete failed conversion (not deletes source file).         Delete_Source_File_After_Conversion ' Delete source file after conversion.         Recycle_Source_File_After_Conversion ' Send source file to recycle bin after conversion.         Karaoke_Remove_Voice ' Remove voice from file.         Karaoke_Remove_Instrument ' Remove instruments from file.         Reverse ' Reverse complete audio file.         Write_Silence ' Write silence at start of file.     End Enum   #End Region   #Region " Codec Enumerations "   #Region " MP3 Lame "       Enum Lame_Bitrate         kbps_8 = 8         kbps_16 = 16         kbps_24 = 24         kbps_32 = 32         kbps_40 = 40         kbps_48 = 48         kbps_56 = 56         kbps_64 = 64         kbps_80 = 80         kbps_96 = 96         kbps_112 = 112         kbps_128 = 128         kbps_144 = 144         kbps_160 = 160         kbps_192 = 192         kbps_224 = 224         kbps_256 = 256         kbps_320 = 320     End Enum       Enum Lame_Bitrate_Mode         cbr         abr     End Enum       Enum Lame_Profile         NORMAL         FAST         SLOW     End Enum       Enum Lame_Quality         Q0_Maximum = 0         Q1 = 1         Q2 = 2         Q3 = 3         Q4 = 4         Q5 = 5         Q6 = 6         Q7 = 7         Q8 = 8         Q9_Minimum = 9     End Enum       Enum Lame_Khz         Same_As_Source         khz_8000 = 8000         khz_11025 = 11025         khz_12000 = 12000         khz_16000 = 16000         khz_22050 = 22050         khz_24000 = 24000         khz_32000 = 32000         khz_44100 = 44100         khz_48000 = 48000     End Enum       Enum Lame_Channels         auto         mono         stereo         joint_stereo         forced_joint_stereo         forced_stereo         dual_channels     End Enum     #End Region   #Region " WAV Uncompressed "       Enum WAV_Uncompressed_Bitrate         Same_As_Source         bits_8 = 8         bits_16 = 16         bits_24 = 24         bits_32 = 32     End Enum       Enum WAV_Uncompressed_Khz         Same_As_Source         khz_8000 = 8000         khz_11025 = 11025         khz_12000 = 12000         khz_16000 = 16000         khz_22050 = 22050         khz_24000 = 24000         khz_32000 = 32000         khz_44100 = 44100         khz_48000 = 48000         khz_96000 = 96000         khz_192000 = 192000     End Enum       Enum WAV_Uncompressed_Channels         Same_As_Source         Channels_1_Mono = 1         Channels_2_Stereo = 2         Channels_3 = 3         Channels_4_Quadraphonic = 4         Channels_5_Surround = 5         Channels_6_Surround_DVD = 6         Channels_7 = 7         Channels_8_Theater = 8     End Enum   #End Region   #Region " WMA 9.2 "       Enum WMA_9_2_BitRates         Kbps_12 = 12         Kbps_16 = 16         Kbps_20 = 20         Kbps_22 = 22         Kbps_24 = 24         Kbps_32 = 32         Kbps_40 = 40         Kbps_48 = 48         Kbps_64 = 64         Kbps_80 = 80         Kbps_96 = 96         Kbps_128 = 128         Kbps_160 = 160         Kbps_192 = 192         Kbps_256 = 256         Kbps_320 = 320     End Enum       Enum WMA_9_2_Khz         Khz_8000 = 8         Khz_16000 = 16         Khz_22050 = 22         Khz_32000 = 32         Khz_44100 = 44         Khz_48000 = 48     End Enum       Enum WMA_9_2_Channels         mono         stereo     End Enum   #End Region   #End Region   #Region " Codec Procedures "   #Region " MP3 Lame "       ' <summary>     ' Converts a file to MP3 using Lame codec.     ' </summary>     Public Shared Sub Convert_To_MP3(ByVal In_File As String, _                              ByVal Out_File As String, _                              ByVal Bitrate As Lame_Bitrate, _                              ByVal Bitrate_Mode As Lame_Bitrate_Mode, _                              ByVal Encoding_Profile As Lame_Profile, _                              ByVal Quality As Lame_Quality, _                              ByVal Khz As Lame_Khz, _                              ByVal Channels As Lame_Channels, _                              Optional ByVal DSP_Effects() As DSP_Effects = Nothing, _                              Optional ByVal Update_Tag As Boolean = True, _                              Optional ByVal Priority As Priority = Priority.normal, _                              Optional ByVal Processor As Short = 1)           Get_Effects(DSP_Effects)           Set_Main_Parametters("mp3 (Lame)", In_File, Out_File, If(Not Update_Tag, "-noidtag", ""), Effects, Priority.ToString, Processor.ToString)           CoreConverter.StartInfo.Arguments &= _         String.Format("-b {0} --{1} -encoding=""{2}"" -freq=""{3}"" -channels=""{4}"" --noreplaygain --extracli=""-q {5}""", _                       CInt(Bitrate), _                       Bitrate_Mode.ToString, _                       Encoding_Profile.ToString, _                       If(Khz = Lame_Khz.Same_As_Source, "", CInt(Khz)), _                       If(Channels = Lame_Channels.auto, "", Channels), _                       CInt(Quality))           Run_CoreConverter()       End Sub   #End Region   #Region " WAV Uncompressed "       ' <summary>     ' Converts a file to WAV     ' </summary>     Public Shared Sub Convert_To_WAV_Uncompressed(ByVal In_File As String, _                                  ByVal Out_File As String, _                                  ByVal Bitrate As WAV_Uncompressed_Bitrate, _                                  ByVal Khz As WAV_Uncompressed_Khz, _                                  ByVal Channels As WAV_Uncompressed_Channels, _                                  Optional ByVal DSP_Effects() As DSP_Effects = Nothing, _                                  Optional ByVal Update_Tag As Boolean = True, _                                  Optional ByVal Priority As Priority = Priority.normal, _                                  Optional ByVal Processor As Short = 1)           Get_Effects(DSP_Effects)           Set_Main_Parametters("Wave", In_File, Out_File, If(Not Update_Tag, "-noidtag", ""), Effects, Priority.ToString, Processor.ToString)           CoreConverter.StartInfo.Arguments &= _         String.Format("-compression=""PCM"" -bits=""{0}"" -freq=""{1}"" -channels=""{2}""", _                       If(Bitrate = WAV_Uncompressed_Bitrate.Same_As_Source, "", CInt(Bitrate)), _                       If(Khz = WAV_Uncompressed_Khz.Same_As_Source, "", CInt(Khz)), _                       If(Channels = WAV_Uncompressed_Channels.Same_As_Source, "", CInt(Channels)))           Run_CoreConverter()       End Sub   #End Region   #Region " WMA 9.2 "       ' <summary>     ' Converts a file to WMA 9.2     ' </summary>     Public Shared Sub Convert_To_WMA(ByVal In_File As String, _                                  ByVal Out_File As String, _                                  ByVal Bitrate As WMA_9_2_BitRates, _                                  ByVal Khz As WMA_9_2_Khz, _                                  ByVal Channels As WMA_9_2_Channels, _                                  Optional ByVal DSP_Effects() As DSP_Effects = Nothing, _                                  Optional ByVal Update_Tag As Boolean = True, _                                  Optional ByVal Priority As Priority = Priority.normal, _                                  Optional ByVal Processor As Short = 1)           Get_Effects(DSP_Effects)           Set_Main_Parametters("Windows Media Audio 10", In_File, Out_File, If(Not Update_Tag, "-noidtag", ""), Effects, Priority.ToString, Processor.ToString)           CoreConverter.StartInfo.Arguments &= _         String.Format("-codec=""Windows Media Audio 9.2"" -settings=""{0} kbps, {1} kHz, {2} CBR""",                       CInt(Bitrate), _                       CInt(Khz), _                       Channels.ToString)           Run_CoreConverter()       End Sub   #End Region   #End Region   #Region " Run Converter Procedure "       Private Shared Sub Run_CoreConverter()           CoreConverter.StartInfo.FileName = CoreConverter_Location         CoreConverter.Start()           While Not CoreConverter.HasExited               OutputCharacter = ChrW(CoreConverter.StandardOutput.Read)               If OutputCharacter = "*" Then                 CurrentProgress += 1 ' Maximum value is 59, so a ProgressBar Maximum property value would be 59.                 RaiseEvent PercentDone(CurrentProgress, Nothing)             End If               If CurrentProgress = 59 Then                 ' I store the last line(s) 'cause it has interesting information:                 ' Example message: Conversion completed in 30 seconds x44 realtime encoding                 StandardOutput = CoreConverter.StandardOutput.ReadToEnd.Trim             End If           End While           ' Stores the Error Message (If any)         ErrorOutput = CoreConverter.StandardError.ReadToEnd           Select Case CoreConverter.ExitCode               Case 0 : RaiseEvent Exited(StandardOutput, Nothing) ' Return StandardOutput             Case Else : RaiseEvent Exited(ErrorOutput, Nothing) ' Return ErrordOutput           End Select           CurrentProgress = Nothing         OutputCharacter = Nothing         StandardOutput = Nothing         ErrorOutput = Nothing         Effects = Nothing         CoreConverter.Close()       End Sub   #End Region   #Region " Miscellaneous functions "       ' <summary>     ' Checks if CoreConverter process is avaliable.     ' </summary>     Public Shared Function Is_Avaliable() As Boolean         Return IO. File. Exists(CoreConverter_Location )     End Function       ' Set the constant parametters of CoreConverter process     Private Shared Sub Set_Main_Parametters(ByVal Codec_Name As String, _                                             ByVal In_File As String, _                                             ByVal Out_File As String, _                                             ByVal Update_Tag As String, _                                             ByVal Effects As String, _                                             ByVal Priority As String, _                                             ByVal Processor As String)           CoreConverter.StartInfo.Arguments = _         String.Format("-infile=""{0}"" -outfile=""{1}"" -convert_to=""{2}"" {3} {4} -priority=""{5}"" -processor=""{6}"" ", _                       In_File, Out_File, Codec_Name, Update_Tag, Effects, Priority, Processor)       End Sub       ' Returns all joined DSP Effects formatted string     Private Shared Function Get_Effects(ByVal DSP_Effects() As DSP_Effects) As String           If DSP_Effects Is Nothing Then Return Nothing           For Effect As Integer = 0 To DSP_Effects.Length - 1             Effects &= String.Format(" -dspeffect{0}={1}", _                                      Effect + 1, _                                      Format_DSP_Effect(DSP_Effects(Effect).ToString))         Next Effect           Return Effects       End Function       ' Returns a DSP Effect formatted string     Private Shared Function Format_DSP_Effect(ByVal Effect As String)           Select Case Effect             Case "Reverse" : Return """Reverse"""             Case "Delete_Output_File_on_Error" : Return """Delete Destination File on Error="""             Case "Recycle_Source_File_After_Conversion" : Return """Delete Source File=-recycle"""             Case "Delete_Source_File_After_Conversion" : Return """Delete Source File="""             Case "Karaoke_Remove_Voice" : Return """Karaoke (Voice_ Instrument Removal)="""             Case "Karaoke_Remove_Instrument" : Return """Karaoke (Voice_ Instrument Removal)=-i"""             Case "Write_Silence" : Return """Write Silence=-lengthms={qt}2000{qt}""" ' 2 seconds             Case Else : Return String.Empty         End Select       End Function   #End Region   #Region " Dispose Objects "       Public Sub Dispose() Implements IDisposable.Dispose         ' CoreConverter_Location = Nothing ' Do not change if want to preserve a custom location.         OutputCharacter = Nothing         StandardOutput = Nothing         ErrorOutput = Nothing         CurrentProgress = Nothing         Effects = Nothing         CoreConverter.Close()         GC.SuppressFinalize(Me)     End Sub   #End Region   End Class   #End Region 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 11 Octubre 2013, 16:52 pm por EleKtro H@cker »
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							Eleкtro
							
								Ex-Staff 
								 
								  Desconectado
								Mensajes: 9.964
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Este snippet comprueba si un nombre de archivo contiene caracteres que no estén en la tabla ASCII (sin contar la tabla ASCII extendida) Un ejemplo de uso sería, el que yo le doy: yo dejo el PC descargando miles de archivos de música diariamente, muchos de los nombres de archivos descargados contienen caracteres rusos y otras mierd@s que luego me toca renombrar de forma manual porque no se pueden leer estos nomrbes de archivos por otros programas que uso. PD: No contiene todos los caracteres de la tabla ASCII normal, recordemos que Windows no permite escribir ciertos caracteres ASCII en los nombres de archivo, asi que no es necesario añadir dichos caracteres la función, además le añadí el caracter "Ñ", y los caracteres de la tabla ASCII extendida yo los considero caracteres extraños, quizás el nombre de la función debería ser: "Filename Has Strange Characters? "   . #Region " Filename Has Non ASCII Characters "
      ' [ Filename Has Non ASCII Characters Function ]     '     ' // By Elektro H@cker     '     ' Examples :     ' MsgBox(Filename_Has_Non_ASCII_Characters("ABC├│")) ' Result: True     ' MsgBox(Filename_Has_Non_ASCII_Characters("ABCDE")) ' Result: False
      Private Function Filename_Has_Non_ASCII_Characters(ByVal [String] As String) As Boolean
          Dim Valid_Characters As String = ( _             "abcdefghijklmnñopqrstuvwxyz" & _             "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ" & _             "áéíóúÁÉÍÓÚàèìòùÀÈÌÒÙçÇ" & _             "@#~€!·$%&()=!'ºª+-_.,;{}[]" & _             ":\" & _             "0123456789" & _             " " _         )
          Return Not [String].ToCharArray() _                    .All(Function(character) Valid_Characters.Contains(character))
          ' Valid_Characters = Nothing
      End Function
  #End Region  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 12 Octubre 2013, 01:15 am por EleKtro H@cker »
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	 |  
 
	 
	
 
			 
			
				
					
						| Mensajes similares | 
					 
					
						 | 
						Asunto | 
						Iniciado por | 
						Respuestas | 
						Vistas | 
						Último mensaje | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Librería de Snippets en C/C++
							« 1 2 3 4 » 
							Programación C/C++
						 | 
						
							z3nth10n
						 | 
						
							31
						 | 
						
							29,629
						 | 
						
							 
							
								 2 Agosto 2013, 17:13 pm 
								por 0xDani
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							[APORTE] [VBS] Snippets para manipular reglas de bloqueo del firewall de Windows
							 
							Scripting
						 | 
						
							Eleкtro
						 | 
						
							1
						 | 
						
							4,943
						 | 
						
							 
							
								 3 Febrero 2014, 20:19 pm 
								por Eleкtro
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							 Librería de Snippets para Delphi
							« 1 2 » 
							Programación General
						 | 
						
							crack81
						 | 
						
							15
						 | 
						
							25,949
						 | 
						
							 
							
								25 Marzo 2016, 18:39 pm 
								por crack81
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Una organización en Github para subir, proyectos, snippets y otros?
							 
							Sugerencias y dudas sobre el Foro
						 | 
						
							z3nth10n
						 | 
						
							0
						 | 
						
							3,684
						 | 
						
							 
							
								21 Febrero 2017, 10:47 am 
								por z3nth10n
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							índice de la Librería de Snippets para VB.NET !!
							 
							.NET (C#, VB.NET, ASP)
						 | 
						
							Eleкtro
						 | 
						
							7
						 | 
						
							7,867
						 | 
						
							 
							
								 4 Julio 2018, 21:35 pm 
								por Eleкtro
							
						 | 
					 
				 
			    |