Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#9941
@Moonshenite

Gracias por comentar, pero debes fijarte en la fecha de los posts xD.

En WinXP es posible porque sencillamente la seguridad del SO es una basura,
la tecnología "anti-crackers" ha avanzado mucho... obviamente no puedes craquear Windows 7 con un archivo de registro, estariamos apañaos, si eso fuera posible, ¿para que se iba a molestar Microsoft en lanzar a la venta el producto?, en el registro se puede hacer lo que Windows te permite hacer, nada más.

Por otro lado es fácil activar los Windows usando solamente un comando con el archivo slmgr, pero no es lo mismo usar una clave de activación, que crackear el SO, para eso necesitas activadores.
Saludos.

PD: Si algún mod ve esto pido que cierre este post plz. gracias.
#9942
Para los que no lo sepan, estoy diseñando un programa, y tenía un problema, la app se colgaba al darle al botón "start", hasta que "el proceso" finalizaba no podía tocar nada.
...
...
Después de estar días para conseguir meter una función en un thread separado, ahora que lo he conseguido ...no hay ninguna diferencia... hasta que no finaliza "el proceso" no puedo mover el form por la pantalla, ni pulsar cualquier botón del form, ni nada, solo puedo esperar hasta que acabe...

...Espero alguna ayuda, porqué yo ya no sé que más intentar para que no se me cuelgue, no sé lo que he hecho mal.



Hasta que no se terminan de mostrar todas las líneas del richtextbox no me deja tocar NADA.

...Muchas gracias por leer.




El form:

Código (vbnet) [Seleccionar]
Imports System.IO
Imports System.Threading
Imports System.Runtime.InteropServices
Imports System.ComponentModel
Imports Ookii.Dialogs

Public Class Form1

#Region "Declarations"

   ' MediaInfo
   Dim MI As MediaInfo

   ' Others
   Dim NameOfDirectory As String = Nothing
   Dim aFile As FileInfo

#End Region

#Region "Properties"
#End Region

#Region "Load / Close"

   ' Load
   Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

       ' MediaInfo Instance
       MI = New MediaInfo

   End Sub

#End Region

#Region "Get Total files Function"
#End Region

#Region "Option checkboxes"
#End Region

#Region "Folder buttons"
#End Region


#Region "Append text function"

   ' Append Text
   Public Sub AppendText(box As RichTextBox, color As Color, text As String)

       Control.CheckForIllegalCrossThreadCalls = False

       Dim start As Integer = box.TextLength
       box.AppendText(text)
       Dim [end] As Integer = box.TextLength

       ' Textbox may transform chars, so (end-start) != text.Length
       box.[Select](start, [end] - start)
       If True Then
           box.SelectionColor = color
           ' could set box.SelectionBackColor, box.SelectionFont too.
       End If
       box.SelectionLength = 0
       ' clear
   End Sub

#End Region


#Region "Thread"

   Public _WaitHandle_FirstThreadDone As New System.Threading.AutoResetEvent(False)

   Public Sub ThreadProc(ByVal aDir As DirectoryInfo)

       Dim aFile As FileInfo

       For Each aFile In aDir.GetFiles()

           If accepted_extensions.ToLower.Contains(aFile.Extension.ToLower) Then

               ' print output
               AppendText(consolebox, Color.Yellow, "Processing: ")
               AppendText(consolebox, Color.White, aFile.ToString() + vbNewLine)
               consolebox.ScrollToCaret()
               processedfiles += 1
               totalfiles_label.Text = "Processed " + processedfiles.ToString() + " of " + totalfiles.ToString() + " total video files"

               ' Attributes
               If attribs = True Then
                   aFile.Attributes = (aFile.Attributes And Not FileAttributes.ReadOnly And Not FileAttributes.Hidden And Not FileAttributes.System And Not FileAttributes.Archive)
               End If

               ' Rename to Word-Case
               If wordcase = True Then
                   Dim renamestr As String = StrConv(aFile.Name, VbStrConv.ProperCase)
                   My.Computer.FileSystem.RenameFile(aFile.FullName, renamestr + "_FILMEN")
                   My.Computer.FileSystem.RenameFile(aFile.FullName + "_FILMEN", renamestr)
               End If

               ' Rename to Lower-Case
               If lowercase = True Then
                   Dim renamestr As String = StrConv(aFile.Name, VbStrConv.Lowercase)
                   My.Computer.FileSystem.RenameFile(aFile.FullName, renamestr + "_FILMEN")
                   My.Computer.FileSystem.RenameFile(aFile.FullName + "_FILMEN", renamestr)
               End If

               ' Playlists
               If playlist = True Then
                   Using writer As StreamWriter = New StreamWriter(aFile.DirectoryName.ToString() & "\" & aDir.Name & ".m3u", True, System.Text.Encoding.UTF8)
                       writer.WriteLine(aFile.FullName.ToString())
                   End Using
               End If

               ' MEDIAINFO:  (ac3, dts, wav and multitrack)
               If ac3 = True Or dts = True Or wav = True Or multitrack = True Then

                   MI.Open(aFile.FullName)

                   Dim Pos As Integer = 0
                   To_Display = Nothing

                   ' multitrack
                   If multitrack = True Then
                       If MI.Count_Get(StreamKind.Audio) > 1 Then
                           results_box.AppendText("Multi Track: " + aFile.FullName.ToString() + vbNewLine)
                           results_box.SelectionStart = results_box.Text.Length
                           results_box.ScrollToCaret()
                           problems += 1
                           problems_label.Text = problems.ToString() + " problems found"
                       End If
                   End If

                   While Pos < MI.Count_Get(StreamKind.Audio)

                       ' AC-3
                       If ac3 = True Then
                           If MI.Get_(StreamKind.Audio, Pos, "Format").ToString() = "AC-3" Then
                               results_box.AppendText("AC3 Track: " + aFile.FullName.ToString() + vbNewLine)
                               results_box.SelectionStart = results_box.Text.Length
                               results_box.ScrollToCaret()
                               problems += 1
                               problems_label.Text = problems.ToString() + " problems found"
                           End If
                       End If

                       ' DTS
                       If dts = True Then
                           If MI.Get_(StreamKind.Audio, Pos, "Format").Contains("DTS") Then
                               results_box.AppendText("DTS Track: " + aFile.FullName.ToString() + vbNewLine)
                               results_box.SelectionStart = results_box.Text.Length
                               results_box.ScrollToCaret()
                               problems += 1
                               problems_label.Text = problems.ToString() + " problems found"
                           End If
                       End If

                       ' WAV
                       If wav = True Then
                           If MI.Get_(StreamKind.Audio, Pos, "Format").Contains("PCM") Then
                               results_box.AppendText("WAV Track: " + aFile.FullName.ToString() + vbNewLine)
                               results_box.SelectionStart = results_box.Text.Length
                               results_box.ScrollToCaret()
                               problems += 1
                               problems_label.Text = problems.ToString() + " problems found"
                           End If
                       End If

                       System.Math.Max(System.Threading.Interlocked.Increment(Pos), Pos - 1)
                   End While
               End If

               If metadata = True Then
                   Dim ffmpeg_process As New Process()
                   Dim ffmpeg_startinfo As New ProcessStartInfo()
                   ffmpeg_startinfo.FileName = "cmd.exe "
                   ffmpeg_startinfo.Arguments = "/C ffmpeg.exe -y -i " & ControlChars.Quote & aFile.FullName.ToString() & ControlChars.Quote & " -f ffmetadata " & ControlChars.Quote & "%TEMP%\" & aFile.Name.ToString() & "_metadata.txt" & ControlChars.Quote & " >NUL 2>&1 && Type " & ControlChars.Quote & "%TEMP%\" & aFile.Name.ToString() & "_metadata.txt" & ControlChars.Quote & "| FINDSTR /I " & ControlChars.Quote & "^INAM ^title" & ControlChars.Quote & " >NUL && Echo FOUND && EXIT || Echo NOT FOUND && Exit"
                   ffmpeg_startinfo.UseShellExecute = False
                   ffmpeg_startinfo.CreateNoWindow = True
                   ffmpeg_startinfo.RedirectStandardOutput = True
                   ffmpeg_startinfo.RedirectStandardError = True
                   ffmpeg_process.EnableRaisingEvents = True
                   ffmpeg_process.StartInfo = ffmpeg_startinfo
                   ffmpeg_process.Start()
                   ffmpeg_process.WaitForExit()

                   Dim readerStdOut As IO.StreamReader = ffmpeg_process.StandardOutput
                   Dim FINDstdOut As String = ffmpeg_process.StandardOutput.ReadToEnd

                   If FINDstdOut.Contains("FOUND") Then
                       AppendText(consolebox, Color.Red, "TAGS FOUND! Removing tags, please wait..." & vbNewLine)
                       Dim relative_dir As String = aDir.FullName.ToString().Replace(aDir.Root.ToString(), "\")
                       Dim ffmpegconvert_process As New Process()
                       Dim ffmpegconvert_startinfo As New ProcessStartInfo()
                       ffmpegconvert_startinfo.FileName = "cmd.exe "
                       ffmpegconvert_startinfo.Arguments = "/C MKDIR " & ControlChars.Quote & userSelectedFolderPathmetadata & relative_dir & ControlChars.Quote & " 2>NUL & ffmpeg.exe -y -i " & ControlChars.Quote & aFile.FullName.ToString() & ControlChars.Quote & " -c copy -map_metadata -1 " & ControlChars.Quote & userSelectedFolderPathmetadata & relative_dir & "\" & aFile.Name.ToString() & ControlChars.Quote & " >NUL 2>&1 & Exit"
                       ffmpegconvert_startinfo.UseShellExecute = False
                       ffmpegconvert_startinfo.CreateNoWindow = True
                       ffmpegconvert_startinfo.RedirectStandardOutput = True
                       ffmpegconvert_startinfo.RedirectStandardError = True
                       ffmpegconvert_process.EnableRaisingEvents = True
                       ffmpegconvert_process.StartInfo = ffmpegconvert_startinfo
                       ffmpegconvert_process.Start()
                       ffmpegconvert_process.WaitForExit()
                       'Dim ffmpegconvertreaderStdOut As IO.StreamReader = ffmpegconvert_process.StandardOutput
                   End If

                   Do While readerStdOut.EndOfStream = False
                       consolebox.AppendText(readerStdOut.ReadLine() + vbNewLine)
                       consolebox.SelectionStart = consolebox.Text.Length
                       consolebox.ScrollToCaret()
                   Loop

               End If
           End If
       Next

       _WaitHandle_FirstThreadDone.Set()
   End Sub


#End Region


#Region "Organize function"

   Public Sub MediaInfo(Directory)
       Dim MyDirectory As DirectoryInfo
       MyDirectory = New DirectoryInfo(NameOfDirectory)
       MediaInfoWorkWithDirectory(MyDirectory)
   End Sub

   Public Sub MediaInfoWorkWithDirectory(ByVal aDir As DirectoryInfo)
       Dim nextDir As DirectoryInfo
       Dim t As New Threading.Thread(AddressOf ThreadProc)
       t.Start(aDir)
       _WaitHandle_FirstThreadDone.WaitOne()
       For Each nextDir In aDir.GetDirectories
           If playlist = True Then
               Using writer As StreamWriter = New StreamWriter(aDir.FullName & "\" & nextDir.Name & "\" & nextDir.Name & ".m3u", False, System.Text.Encoding.UTF8)
                   'overwrite existing playlist
               End Using
           End If
           MediaInfoWorkWithDirectory(nextDir)
       Next
   End Sub

#End Region


#Region "Action buttons"

   ' start button
   Public Sub Button2_Click(sender As Object, e As EventArgs) Handles start_button.Click

       If metadata = True And metadatatextbox.Text = "Select a folder to save the converted videos without metadata..." Then
           MsgBox("You must select a folder for the saved metadata videos...", , "Filmen v1.0")
       Else
           If ac3 = False And dts = False And wav = False And multitrack = False And playlist = False And attribs = False And wordcase = False And metadata = False And lowercase = False Then
               MsgBox("You must select at least one option...", , "Filmen v1.0")
           Else

               consolebox.Clear()

               ' pause / cancel button ON
               pause_button.Enabled = True
               cancel_button.Enabled = True

               ' Total files label
               processedfiles = 0
               totalfiles_label.Text = totalfiles.ToString() + " Total video files"

               ' Problems label
               problems = 0
               problems_label.Text = "0 problems found"

               ' Organization process
               NameOfDirectory = userSelectedFolderPath
               MediaInfo(NameOfDirectory)
               consolebox.AppendText(vbNewLine + "[+] Organization finalized!" + vbNewLine)
               consolebox.Refresh()
               consolebox.SelectionStart = consolebox.Text.Length
               consolebox.ScrollToCaret()

               ' pause / cancel button OFF
               pause_button.Enabled = False
               cancel_button.Enabled = False

           End If
       End If
   End Sub

#End Region

End Class
#9943
Multimedia / Re: [MOD] Busco editor de video.
29 Noviembre 2012, 18:58 PM
AviDemux es liviano y cumple con todo lo que pides, menos lo de cortar varias escenas, hay que cortarlas una a una.

Saludos!
#9944
.NET (C#, VB.NET, ASP) / [SOURCE] PlayLists
29 Noviembre 2012, 18:47 PM
Bueno,
es una caca de programa porqué es el segundo programa que he hecho, y no he conseguido dejar bien la transparencia del programa ni meter la barra de progreso en un thread, pero está decente para usarse y cumple las condiciones necesarias, y me quedo satisfecho al ver la diferencia entre Batch y Winform XD

El programa sirve para seleccionar una o varias carpetas y añadirlas a la lista de reproducción del reproductor multimedia, ni más, ni menos. (Buena tool para bindearla a un "hot-corner" de la pantalla del PC)

     


Source: http://exoshare.com/download.php?uid=EJJTGEXN






Aquí dejo el "boceto" en Batch por si le sirve a alguien:

Código (dos) [Seleccionar]
@echo off
Title Winamp Auto Playlist Menu v0.1

:: Auto-redimensionado
color 07
Nircmd win center ititle "Winamp Auto Playlist Menu" >NUL 2>&1
PUSHD "%~dp0"
Set /a Lines=5
Mode con cols=50 lines=%LINES%
For /D %%# in (*) Do (Call Set /A "Lines+=2" & call Mode con cols=60 lines=%%LINES%%)

:Menu
CLS
SET "SELECT=" & SET "NUM="
For /D %%# in (*) Do (Call Set /A "Num+=1" & Call Set "Folder%%NUM%%=%%#" & Call Set "List=%%LIST%% ;%%NUM%%" & Call Echo [%%Num%%] %%# | MORE)
Echo [0] * REPRODUCIR TODO * | MORE
Echo: Seleccione una carpeta para reproducirla...
Set /P select=^>^>
Echo "%SELECT%" | FINDSTR /I "[A-Z]" >NUL && (Goto :Menu) || (Echo "%List%" | FIND ";%SELECT% " >NUL || (Goto :Menu))
If "%SELECT%" equ "0" (Goto :todo)

:Play
CLS
Call Echo Carpeta seleccionada: "%%Folder%SELECT%%%" | MORE
Call Echo: [+] Iniciando Winamp...
Call Start /B /D "%ProgramFiles(x86)%\Winamp\" winamp.exe "%CD%\%%Folder%SELECT%%%"
Timeout /T 5 & Exit

:TODO
CLS
Call Echo Carpeta seleccionada: * TODAS * | MORE
Call Echo: [+] Iniciando Winamp...
For /D %%# in (*) Do (Call Set "ARG=%%arg%% ^"%CD%\%%#^"")
Call Start /B /D "%ProgramFiles(x86)%\Winamp\" winamp.exe %%arg%%
Timeout /T 10 & Exit
#9945
EDITO: Lo he resuelto creando nuevas instancias del thread dentro del loop

Tengo este thread:

Código (vbnet) [Seleccionar]
Public Sub ThreadProc(ByVal aDir As DirectoryInfo)
   Dim i As Integer
   For i = 1 To 3
       MsgBox(i)
       Thread.Sleep(500)
   Next
   _WaitHandle_FirstThreadDone.Set()
End Sub


Y tengo un búcle que hace esto:

Código (vbnet) [Seleccionar]
  loop...
   t.Start(aDir)
   _WaitHandle_FirstThreadDone.WaitOne()
  next...


El problema es que solo se ejecuta el thread una sola vez, cuando intenta iniciarse la siguiente vez me dice el debugger: "Subproceso en ejecución o terminado, no se pudo reiniciar",
y no lo entiendo, creo que le estoy indicando al thread que se "setee" como finalizado, y el loop espera a que finalize el thread.. así que no sé donde estará el problema, de verdad no lo entiendo!
#9946
Scripting / Re: [RUBY] GameTracker ServerList
29 Noviembre 2012, 12:28 PM
GameTracker ha cambiado el sistema de búsqueda y ha aumentado un poco la seguridad (Ahora la localización del país es "Case-Sensitive"), así que la versión anterior queda obsoleta, he hecho una nueva versión.

Y como extra, la tool ahora genera un archivo de favoritos para reemplazar el archivo dentro de la carpeta del juego y no tener que ir metiendo las ips dentro del juego:

Ejemplo:

serverbrowser_hist.vdf
"Filters"
{
"favorites"
{
"1"
{
"name" "89.44.246.123:27015"
"address" "89.44.246.123:27015"
"lastplayed" "1256267351"
"appID" "0"
}
"2"
{
"name" "89.44.246.14:27015"
"address" "89.44.246.14:27015"
"lastplayed" "1256267351"
"appID" "0"

etc.
etc..
etc...



Executable: http://exoshare.com/download.php?uid=QNKEUJXB


GTSL.rb:
Código (ruby) [Seleccionar]


# GameTracker ServerList v1.2
#
# By Elektro H@cker


# Description:
# -----------
# This tool retreives the servers list of a game from GameTracker site,
# and generates a favorite gameserver steam list.


# How to use:
# ----------
#
# GTSL.rb help
#
# GTSL.rb (game) (location) (output file)
#
# Or change the default values...
#
# Default values:
$game     = "cs"
$location = "ES"
# # # # # # # #

require 'net/http'

exit if Object.const_defined?(:Ocra)

$url = "http://www.gametracker.com/search/#{$game}/#{$location.upcase}/?searchipp=50&searchpge=1#search"

def logo()
puts '
  GameTracker Server List
 
  By Elektro H@cker
'
end


def help()

  puts '

  Options:
  _______

  /? (or) help (or) -h (or) -help | Shows this help.


  Parameters:
  __________         

  (game)      | The game kind.

  (locacion)  | The geo-location of servers.

  (file)      | The output file. 


  How to use:
  __________

  GTSL.rb -help

  GTSL.rb (game) (location) (output file)

  PS: Or change the two default values near the start line inside the script...


  Examples:
  ________

  GTSL CS UK
  [+] Gets all the UK servers for Counter-Strike 1.6
      and save it in the default generated file.


  GTSL HL ES "servers.txt"
  [+] Gets all the Spanish servers for Half-life
      and save it in the custom file ("servers.txt").
  '

  # game value list
  puts "\n
  Game values:
  ___________\n"
  puts Net::HTTP.get_response(URI.parse($url)).body.split('<option value="_all">All Games</option>').last.split('</select>').first.gsub('<option value="', "").gsub('</option>', "").gsub(' selected="selected"', "").gsub('" >', " = ").gsub(" ", "  ")

  # location value list
  puts "\n
  Location values:
  _______________\n"
  puts Net::HTTP.get_response(URI.parse($url)).body.split('<optgroup label="Search by country">').last.split('</optgroup>').first.gsub('<option value="', "").gsub('</option>', "").gsub(' selected', "").gsub('" >', " = ").gsub(" ", "  ")
 
  exit

end


def args()
  if ARGV[0] =~ /help/i or ARGV[0] =~ /-help/i or ARGV[0] =~ /-h/i or ARGV[0] == "/?" then help()    end
  if not ARGV[0].nil?   then $game     = ARGV[0] end
  if not ARGV[1].nil?   then $location = ARGV[1] end
  if not ARGV[2].nil?   then $file     = ARGV[2] else $file = ".\\#{$game}-#{$location.upcase} servers.txt" end
end


def info()
  puts "
  Game    : #{$game}
  Location: #{$location.upcase}
  Pages   : #{$pag}
  Servers : #{$pag*50} (approx.)

  "
end


def get_pages()
  $pag = 0
  $url = "http://www.gametracker.com/search/#{$game}/#{$location.upcase}/?searchipp=50&searchpge=1&sort=c_name&order=ASC"
  Net::HTTP.get_response(URI.parse($url)).body.each_line do |line|
    if (line[/;order=ASC#search">NEXT<\/a>/]) then break  end
    if (line[/^\s+<a href="\/search\/.+\/.+\/?searchipp=50&amp;searchpge=[0-9]+&amp;sort=c_name&amp;order=ASC#search">[0-9]+<\/a>\s+$/])
      if $pag < line.split("</a>").first.split('>').last.to_i
         $pag = line.split("</a>").first.split('>').last.to_i
      end
    end
  end
end


def show_ips()
  a = 0

  print "[+] Parsing pages "

  File.open('serverbrowser_hist.vdf', 'a+') do |favorites|
    favorites.puts '"Filters"'
    favorites.puts '{'
    favorites.puts '"favorites"'
    favorites.puts '{'
  end

  for i in 1..$pag do
    print "#{i}/#{$pag}..."
    $url = "http://www.gametracker.com/search/#{$game}/#{$location.upcase}/?searchipp=50&searchpge=#{i}#search"
    Net::HTTP.get_response(URI.parse($url)).body.each_line do |line|

      # puts line.split("/")[2] if (line["server_info"])

      File.open($file, 'a+') do |f|
        f.puts line.split("/")[2] if (line["server_info"])
      end

      File.open('serverbrowser_hist.vdf', 'a+') do |favorites|
        a = a+1 if (line["server_info"])
        favorites.puts "\"#{a}\""                              if (line["server_info"])
        favorites.puts "{"                                     if (line["server_info"])
        favorites.puts "\"name\" \"#{line.split("/")[2]}\""    if (line["server_info"])
        favorites.puts "\"address\" \"#{line.split("/")[2]}\"" if (line["server_info"])
        favorites.puts "\"lastplayed\" \"1256267351\""         if (line["server_info"])
        favorites.puts "\"appID\" \"0\""                       if (line["server_info"])
        favorites.puts "}"                                     if (line["server_info"])
      end

    end
  end

  File.open('serverbrowser_hist.vdf', 'a+') do |favorites|
    favorites.puts '}'
    favorites.puts '"History"'
    favorites.puts '{'
    favorites.puts '}'
    favorites.puts '}'
  end

end


logo()
args()
get_pages()
info()
show_ips()


exit
#9947
Código (dos) [Seleccionar]
@Echo OFF

set /p X=ingrese la unidad que va a boteear %2

(
echo select disk %X% %3
echo clean %4
echo create partition primary %5
echo select partition 1 %6
echo active %7
echo format fs=fat32 quick %8
echo assign %9
echo exit
)> "%TEMP%\diskpart.txt"

Diskpart /S "%TEMP%\diskpart.txt"
#9948
De verdad, llevo todo el día sin poder progresar con mi form, no consigo meter los subs de "organize function" region en un nuevo thread para que no me bloquee la app.

Estoy harto de hacer borrón y cuenta nueva, sin ayuda no puedo hacer esto...

He leido decenas de ejemplos, pero en ninguno tratan un caso parecido al mío, solo son threads con un "FOR" y eso no me sirve para nada,
Entiendo más o menos como funciona el backgroundworker, pero como son 3 subs, es que me pierdo porque necesito pasarle un argumento al thread, al trasladar la region a un nuevo thread...

Espero la bondad de alguien para que me inserte toda la region de "organize function" para que trabaje en un nuevo thread




Este es el form completo:

PD: Hay un thread por ahí suelto en el form, pero solo lo puse para tenerlo a mano, para hacer mis experimentos  :xD

Al pinchar en el start button llama a la función de "organize function", que como ya digo, son 3 subs.



Código (vbnet) [Seleccionar]
Imports System.IO
Imports System.Threading
Imports System.Runtime.InteropServices
Imports System.ComponentModel
Imports Ookii.Dialogs




   Public Class Form1

#Region "Declarations"

       ' Extensions
       Dim accepted_extensions As String = ".264 .3gp .asf .asx .avi .avc .bsf .bdmv .divx .dv .evo .f4v .flv .hdmov .m1v .m2t .m2ts .m2v .m4v .mkv .mov .mp4 .mpeg .mpg .mpv4 .mts .ogm .ogv .qt .rmvb .swf .ts .vob .webm .wmv"

       ' Options
       Dim attribs As Boolean
       Dim playlist As Boolean
       Dim multitrack As Boolean
       Dim metadata As Boolean
       Dim wordcase As Boolean
       Dim lowercase As Boolean
       Dim ac3 As Boolean
       Dim dts As Boolean
       Dim wav As Boolean

       ' Outputs
       Dim output As String
       Dim To_Display As String

       ' MediaInfo
       Dim MI As MediaInfo

       ' Backgroundworker
       Dim paused As Boolean = False

       ' Others
       Dim processedfiles As Integer = Nothing
       Dim totalfiles As Integer = Nothing
       Dim problems As Integer = Nothing
       Dim NameOfDirectory As String = Nothing
       Dim aFile As FileInfo

       'Highlighted ranges
       Dim a As Integer
   Dim b As Integer


 
#End Region


   Dim t As New Thread(AddressOf ThreadProc)

   Public Sub ThreadProc()
       Dim i As Integer
       For i = 0 To 90
           If paused = True Then MsgBox("SUSPEND")
           MsgBox(i)
           ' Yield the rest of the time slice.
           Thread.Sleep(1500)
       Next
   End Sub







#Region "Properties"

       ' Folder textbox
       Public Property userSelectedFolderPath() As String
           Get
               Return foldertextbox.Text
           End Get
           Set(value As String)
               foldertextbox.Text = value
           End Set
       End Property

       ' Metadata textbox
       Public Property userSelectedFolderPathmetadata() As String
           Get
               Return metadatatextbox.Text
           End Get
           Set(value As String)
               metadatatextbox.Text = value
           End Set
       End Property

       ' Paused backgroundworker
       Public Property IsPaused() As Boolean
           Get
               Return paused
           End Get
           Set(value As Boolean)
               paused = value
           End Set
       End Property

#End Region

#Region "Load / Close"

       ' Load
       Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

           ' Options checkboxes
           If My.Settings.delattribs Then attrib_checkbox.Checked = True
           If My.Settings.genplaylists Then playlist_checkbox.Checked = True
           If My.Settings.findmultitracks Then multitrack_checkbox.Checked = True
           If My.Settings.findac3 Then ac3_checkbox.Checked = True
           If My.Settings.finddts Then dts_checkbox.Checked = True
           If My.Settings.findwav Then wav_checkbox.Checked = True
           If My.Settings.findmetadata Then metadata_checkbox.Checked = True
           If My.Settings.renwordcase Then wordcase_checkbox.Checked = True
           If My.Settings.renlowercase Then lowercase_checkbox.Checked = True

           ' Folder button
           If Not My.Computer.FileSystem.DirectoryExists(My.Settings.folderpath) Then
               foldertextbox.Text = "Select a folder..."
               My.Settings.folderpath = Nothing
               My.Settings.Save()
           Else
               foldertextbox.Text = My.Settings.folderpath
               start_button.Enabled = True
               ' Total files label
               NameOfDirectory = userSelectedFolderPath
               gettotalfiles(NameOfDirectory)
               totalfiles_label.Text = totalfiles.ToString() + " Total video files"
           End If

           If Not My.Computer.FileSystem.DirectoryExists(My.Settings.metadatafolder) Then
               metadatatextbox.Text = "Select a folder to save the converted videos without metadata..."
               My.Settings.metadatafolder = Nothing
               My.Settings.Save()
           Else
               metadatatextbox.Text = My.Settings.metadatafolder
           End If

           ' MediaInfo Instance
           MI = New MediaInfo

       End Sub

#End Region

#Region "Get Total files Function"

       Public Sub gettotalfiles(Directory)
           totalfiles = 0
           Dim MyDirectory As DirectoryInfo
           MyDirectory = New DirectoryInfo(NameOfDirectory)
           gettotalfilesWorkWithDirectory(MyDirectory)
       End Sub

       Public Sub gettotalfilesWorkWithDirectory(ByVal aDir As DirectoryInfo)
           Dim nextDir As DirectoryInfo
           gettotalfilesWorkWithFilesInDir(aDir)
           For Each nextDir In aDir.GetDirectories
               gettotalfilesWorkWithDirectory(nextDir)
           Next
       End Sub

       Public Sub gettotalfilesWorkWithFilesInDir(ByVal aDir As DirectoryInfo)
           Dim aFile As FileInfo
           For Each aFile In aDir.GetFiles()
               If accepted_extensions.ToLower.Contains(aFile.Extension.ToLower) Then totalfiles += 1
           Next
       End Sub

#End Region

#Region "Option checkboxes"
       ' attributtes checkbox
       Private Sub attrib_button_CheckedChanged(sender As Object, e As EventArgs) Handles attrib_checkbox.CheckedChanged
           If attrib_checkbox.Checked = True Then
               attribs = True
               My.Settings.delattribs = True
           Else
               attribs = False
               My.Settings.delattribs = False
           End If
           My.Settings.Save()
       End Sub

       ' playlist checkbox
       Private Sub playlist_button_CheckedChanged(sender As Object, e As EventArgs) Handles playlist_checkbox.CheckedChanged
           If playlist_checkbox.Checked = True Then
               playlist = True
               My.Settings.genplaylists = True
           Else
               playlist = False
               My.Settings.genplaylists = False
           End If
           My.Settings.Save()
       End Sub

       ' multitrack checkbox
       Private Sub multitrack_button_CheckedChanged(sender As Object, e As EventArgs) Handles multitrack_checkbox.CheckedChanged
           If multitrack_checkbox.Checked = True Then
               multitrack = True
               My.Settings.findmultitracks = True
           Else
               multitrack = False
               My.Settings.findmultitracks = False
           End If
           My.Settings.Save()
       End Sub

       ' AC-3 checkbox
       Private Sub ac3_button_CheckedChanged(sender As Object, e As EventArgs) Handles ac3_checkbox.CheckedChanged
           If ac3_checkbox.Checked = True Then
               ac3 = True
               My.Settings.findac3 = True
           Else
               ac3 = False
               My.Settings.findac3 = False
           End If
           My.Settings.Save()
       End Sub

       ' DTS checkbox
       Private Sub dts_button_CheckedChanged(sender As Object, e As EventArgs) Handles dts_checkbox.CheckedChanged
           If dts_checkbox.Checked = True Then
               dts = True
               My.Settings.finddts = True
           Else
               dts = False
               My.Settings.finddts = False
           End If
           My.Settings.Save()
       End Sub

       ' WAV checkbox
       Private Sub wav_button_CheckedChanged(sender As Object, e As EventArgs) Handles wav_checkbox.CheckedChanged
           If wav_checkbox.Checked = True Then
               wav = True
               My.Settings.findwav = True
           Else
               wav = False
               My.Settings.findwav = False
           End If
           My.Settings.Save()
       End Sub

       ' Metadata checkbox
       Private Sub metadata_checkbox_CheckedChanged(sender As Object, e As EventArgs) Handles metadata_checkbox.CheckedChanged
           If metadata_checkbox.Checked = True Then
               metadatatextbox.Enabled = True
               metadatabutton.Enabled = True
               metadata = True
               My.Settings.findmetadata = True
           Else
               metadatatextbox.Enabled = False
               metadatabutton.Enabled = False
               metadata = False
               My.Settings.findmetadata = False
           End If
           My.Settings.Save()
       End Sub

       ' Word-case
       Private Sub wordcase_checkbox_CheckedChanged(sender As Object, e As EventArgs) Handles wordcase_checkbox.CheckedChanged
           If wordcase_checkbox.Checked = True Then
               wordcase = True
               lowercase = False
               lowercase_checkbox.Checked = False
               My.Settings.renwordcase = True
           Else
               wordcase = False
               My.Settings.renwordcase = False
           End If
           My.Settings.Save()
       End Sub

       ' Lower-case
       Private Sub lowercase_checkbox_CheckedChanged(sender As Object, e As EventArgs) Handles lowercase_checkbox.CheckedChanged
           If lowercase_checkbox.Checked = True Then
               lowercase = True
               wordcase = False
               wordcase_checkbox.Checked = False
               My.Settings.renlowercase = True
           Else
               lowercase = False
               My.Settings.renlowercase = False
           End If
           My.Settings.Save()
       End Sub

#End Region

#Region "Folder buttons"

       ' Folder button
       Public Sub C1Button3_Click(sender As Object, e As EventArgs) Handles folderbutton.Click
           Dim folderselect As New VistaFolderBrowserDialog
           folderselect.ShowNewFolderButton = True
           If folderselect.ShowDialog.ToString() = "OK" Then
               userSelectedFolderPath = folderselect.SelectedPath
               My.Settings.folderpath = folderselect.SelectedPath
               My.Settings.Save()
               NameOfDirectory = userSelectedFolderPath
               gettotalfiles(NameOfDirectory)
               totalfiles_label.Text = totalfiles.ToString() + " Total video files"
               start_button.Enabled = True
           End If
       End Sub

       ' Metadata folder button
       Public Sub metadatabutton_Click(sender As Object, e As EventArgs) Handles metadatabutton.Click
           Dim metadatafolderselect As New VistaFolderBrowserDialog
           metadatafolderselect.ShowNewFolderButton = True
           If metadatafolderselect.ShowDialog.ToString() = "OK" Then
               userSelectedFolderPathmetadata = metadatafolderselect.SelectedPath
               My.Settings.metadatafolder = metadatafolderselect.SelectedPath
               My.Settings.Save()
           End If
       End Sub

#End Region

#Region "Append text function"

       ' Append Text
       Private Sub AppendText(box As RichTextBox, color As Color, text As String)
           Dim start As Integer = box.TextLength
           box.AppendText(text)
           Dim [end] As Integer = box.TextLength

           ' Textbox may transform chars, so (end-start) != text.Length
           box.[Select](start, [end] - start)
           If True Then
               box.SelectionColor = color
               ' could set box.SelectionBackColor, box.SelectionFont too.
           End If
           box.SelectionLength = 0
           ' clear
       End Sub

#End Region




#Region "Organize function"

       Public Sub MediaInfo(Directory)
           Dim MyDirectory As DirectoryInfo
           MyDirectory = New DirectoryInfo(NameOfDirectory)
           MediaInfoWorkWithDirectory(MyDirectory)
       End Sub

       Public Sub MediaInfoWorkWithDirectory(ByVal aDir As DirectoryInfo)
           Dim nextDir As DirectoryInfo
           MediaInfoWorkWithFilesInDir(aDir)
       For Each nextDir In aDir.GetDirectories
           If playlist = True Then
               Using writer As StreamWriter = New StreamWriter(aDir.FullName & "\" & nextDir.Name & "\" & nextDir.Name & ".m3u", False, System.Text.Encoding.UTF8)
                   'overwrite existing playlist
               End Using
           End If
           MediaInfoWorkWithDirectory(nextDir)
       Next
       End Sub

       Public Sub MediaInfoWorkWithFilesInDir(ByVal aDir As DirectoryInfo)

           Dim aFile As FileInfo

           For Each aFile In aDir.GetFiles()

               If accepted_extensions.ToLower.Contains(aFile.Extension.ToLower) Then

                   ' print output
                   AppendText(consolebox, Color.Yellow, "Processing: ")
                   AppendText(consolebox, Color.White, aFile.ToString() + vbNewLine)
                   consolebox.ScrollToCaret()
                   processedfiles += 1
                   totalfiles_label.Text = "Processed " + processedfiles.ToString() + " of " + totalfiles.ToString() + " total video files"

                   ' Attributes
                   If attribs = True Then
                       aFile.Attributes = (aFile.Attributes And Not FileAttributes.ReadOnly And Not FileAttributes.Hidden And Not FileAttributes.System And Not FileAttributes.Archive)
                   End If

                   ' Rename to Word-Case
                   If wordcase = True Then
                       Dim renamestr As String = StrConv(aFile.Name, VbStrConv.ProperCase)
                       My.Computer.FileSystem.RenameFile(aFile.FullName, renamestr + "_FILMEN")
                       My.Computer.FileSystem.RenameFile(aFile.FullName + "_FILMEN", renamestr)
                   End If

                   ' Rename to Lower-Case
                   If lowercase = True Then
                       Dim renamestr As String = StrConv(aFile.Name, VbStrConv.Lowercase)
                       My.Computer.FileSystem.RenameFile(aFile.FullName, renamestr + "_FILMEN")
                       My.Computer.FileSystem.RenameFile(aFile.FullName + "_FILMEN", renamestr)
                   End If

                   ' Playlists
                   If playlist = True Then
                       Using writer As StreamWriter = New StreamWriter(aFile.DirectoryName.ToString() & "\" & aDir.Name & ".m3u", True, System.Text.Encoding.UTF8)
                           writer.WriteLine(aFile.FullName.ToString())
                       End Using
                   End If

                   ' MEDIAINFO:  (ac3, dts, wav and multitrack)
                   If ac3 = True Or dts = True Or wav = True Or multitrack = True Then

                       MI.Open(aFile.FullName)

                       Dim Pos As Integer = 0
                       To_Display = Nothing

                       ' multitrack
                       If multitrack = True Then
                           If MI.Count_Get(StreamKind.Audio) > 1 Then
                               results_box.AppendText("Multi Track: " + aFile.FullName.ToString() + vbNewLine)
                               results_box.SelectionStart = results_box.Text.Length
                               results_box.ScrollToCaret()
                               problems += 1
                               problems_label.Text = problems.ToString() + " problems found"
                           End If
                       End If

                       While Pos < MI.Count_Get(StreamKind.Audio)

                           ' AC-3
                           If ac3 = True Then
                               If MI.Get_(StreamKind.Audio, Pos, "Format").ToString() = "AC-3" Then
                                   results_box.AppendText("AC3 Track: " + aFile.FullName.ToString() + vbNewLine)
                                   results_box.SelectionStart = results_box.Text.Length
                                   results_box.ScrollToCaret()
                                   problems += 1
                                   problems_label.Text = problems.ToString() + " problems found"
                               End If
                           End If

                           ' DTS
                           If dts = True Then
                               If MI.Get_(StreamKind.Audio, Pos, "Format").Contains("DTS") Then
                                   results_box.AppendText("DTS Track: " + aFile.FullName.ToString() + vbNewLine)
                                   results_box.SelectionStart = results_box.Text.Length
                                   results_box.ScrollToCaret()
                                   problems += 1
                                   problems_label.Text = problems.ToString() + " problems found"
                               End If
                           End If

                           ' WAV
                           If wav = True Then
                               If MI.Get_(StreamKind.Audio, Pos, "Format").Contains("PCM") Then
                                   results_box.AppendText("WAV Track: " + aFile.FullName.ToString() + vbNewLine)
                                   results_box.SelectionStart = results_box.Text.Length
                                   results_box.ScrollToCaret()
                                   problems += 1
                                   problems_label.Text = problems.ToString() + " problems found"
                               End If
                           End If

                           System.Math.Max(System.Threading.Interlocked.Increment(Pos), Pos - 1)
                       End While
                   End If

                   If metadata = True Then
                       Dim ffmpeg_process As New Process()
                       Dim ffmpeg_startinfo As New ProcessStartInfo()
                       ffmpeg_startinfo.FileName = "cmd.exe "
                       ffmpeg_startinfo.Arguments = "/C ffmpeg.exe -y -i " & ControlChars.Quote & aFile.FullName.ToString() & ControlChars.Quote & " -f ffmetadata " & ControlChars.Quote & "%TEMP%\" & aFile.Name.ToString() & "_metadata.txt" & ControlChars.Quote & " >NUL 2>&1 && Type " & ControlChars.Quote & "%TEMP%\" & aFile.Name.ToString() & "_metadata.txt" & ControlChars.Quote & "| FINDSTR /I " & ControlChars.Quote & "^INAM ^title" & ControlChars.Quote & " >NUL && Echo FOUND && EXIT || Echo NOT FOUND && Exit"
                       ffmpeg_startinfo.UseShellExecute = False
                       ffmpeg_startinfo.CreateNoWindow = True
                       ffmpeg_startinfo.RedirectStandardOutput = True
                       ffmpeg_startinfo.RedirectStandardError = True
                       ffmpeg_process.EnableRaisingEvents = True
                       ffmpeg_process.StartInfo = ffmpeg_startinfo
                       ffmpeg_process.Start()
                       ffmpeg_process.WaitForExit()

                       Dim readerStdOut As IO.StreamReader = ffmpeg_process.StandardOutput
                       Dim FINDstdOut As String = ffmpeg_process.StandardOutput.ReadToEnd

                       If FINDstdOut.Contains("FOUND") Then
                           AppendText(consolebox, Color.Red, "TAGS FOUND! Removing tags, please wait..." & vbNewLine)
                           Dim relative_dir As String = aDir.FullName.ToString().Replace(aDir.Root.ToString(), "\")
                           Dim ffmpegconvert_process As New Process()
                           Dim ffmpegconvert_startinfo As New ProcessStartInfo()
                           ffmpegconvert_startinfo.FileName = "cmd.exe "
                           ffmpegconvert_startinfo.Arguments = "/C MKDIR " & ControlChars.Quote & userSelectedFolderPathmetadata & relative_dir & ControlChars.Quote & " 2>NUL & ffmpeg.exe -y -i " & ControlChars.Quote & aFile.FullName.ToString() & ControlChars.Quote & " -c copy -map_metadata -1 " & ControlChars.Quote & userSelectedFolderPathmetadata & relative_dir & "\" & aFile.Name.ToString() & ControlChars.Quote & " >NUL 2>&1 & Exit"
                           ffmpegconvert_startinfo.UseShellExecute = False
                           ffmpegconvert_startinfo.CreateNoWindow = True
                           ffmpegconvert_startinfo.RedirectStandardOutput = True
                           ffmpegconvert_startinfo.RedirectStandardError = True
                           ffmpegconvert_process.EnableRaisingEvents = True
                           ffmpegconvert_process.StartInfo = ffmpegconvert_startinfo
                           ffmpegconvert_process.Start()
                           ffmpegconvert_process.WaitForExit()
                           'Dim ffmpegconvertreaderStdOut As IO.StreamReader = ffmpegconvert_process.StandardOutput

                       End If

                       Do While readerStdOut.EndOfStream = False
                           consolebox.AppendText(readerStdOut.ReadLine() + vbNewLine)
                           consolebox.SelectionStart = consolebox.Text.Length
                           consolebox.ScrollToCaret()
                       Loop

                   End If
               End If
           Next

       End Sub

#End Region










       ' start button
       Private Sub Button2_Click(sender As Object, e As EventArgs) Handles start_button.Click



           If metadata = True And metadatatextbox.Text = "Select a folder to save the converted videos without metadata..." Then
               MsgBox("You must select a folder for the saved metadata videos...", , "Filmen v1.0")
           Else
               If ac3 = False And dts = False And wav = False And multitrack = False And playlist = False And attribs = False And wordcase = False And metadata = False And lowercase = False Then
                   MsgBox("You must select at least one option...", , "Filmen v1.0")
               Else

                   consolebox.Clear()

                   ' pause / cancel button ON
                   pause_button.Enabled = True
                   cancel_button.Enabled = True



               t.Start()



                   ' Total files label
                   processedfiles = 0
                   totalfiles_label.Text = totalfiles.ToString() + " Total video files"

                   ' Problems label
                   problems = 0
                   problems_label.Text = "0 problems found"

                   ' Attempt message
                   consolebox.AppendText(vbNewLine + "[+] Attempting to organize your videos in 3...")
                   consolebox.Refresh()
                   consolebox.SelectionStart = consolebox.Text.Length
                   consolebox.ScrollToCaret()
                   Thread.Sleep(750)
                   consolebox.AppendText(vbNewLine + "[+] Attempting to organize your videos in 2...")
                   consolebox.Refresh()
                   consolebox.SelectionStart = consolebox.Text.Length
                   consolebox.ScrollToCaret()
                   Thread.Sleep(750)
                   consolebox.AppendText(vbNewLine + "[+] Attempting to organize your videos in 1..." + vbNewLine + vbNewLine)
                   consolebox.Refresh()
                   consolebox.SelectionStart = consolebox.Text.Length
                   consolebox.ScrollToCaret()
                   Thread.Sleep(750)

                   ' Organization process
                   NameOfDirectory = userSelectedFolderPath
                   MediaInfo(NameOfDirectory)
                   consolebox.AppendText(vbNewLine + "[+] Organization finalized!" + vbNewLine)
                   consolebox.Refresh()
                   consolebox.SelectionStart = consolebox.Text.Length
                   consolebox.ScrollToCaret()

                   ' pause / cancel button OFF
                   pause_button.Enabled = False
                   cancel_button.Enabled = False

               End If
           End If
       End Sub

   Private Sub pause_button_Click(sender As Object, e As EventArgs) Handles pause_button.Click
       paused = True
   End Sub
End Class




#9949
MUCHÍSIMAS GRACIAS SEBA

EDITO: Lo he solucionado con un "invalidate"

eres un crack haciendo eso de crear controles transparentes.  :xD

Pero ahora me ha surgido un problema con este nuevo label (con el label normal no tengo este problema)

Cuando ejecuto la app todo aparece bien, el label encima de la barra:


Pero cuando refresco (progessbarbar.refresh()) la barra, el label trsnaparente se pone detrás de la barra y no puedo verlo...


¿Sabes como puedo arreglarlo?

Y otra pregunta, hay alguna forma sencilla de exportar tu label trsnaparente como un nuevo controll DLL para instalarlo en la IDE? Si es muy dificil o es bastante extenso de realizar no importa, no quiero marearte más xD.

Un saludo
#9950
Estoy harto del tema de las transparencias en los winforms...

aver si me podeis ayudar, el problema es sencillo, la solución...no lo sé.

un label "transparente" encima de una barra de progreso:


¿Como puedo hacerlo transparente de verdad?

Gracias...