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ú

Temas - Eleкtro

#811
Como reproducir este error?

1. Crear un nuevo winform

2. Seleccionar una imagen de fondo para el form

3. Añadir un panel

4. Cambiar la spropiedades del panel a "Color=Transparent", "AutoScroll=True", y añadr unos cuantos controles dentro del panel.

Ejemplo:




5. Ahora scrollear arriba o abajo y...









¿Como corregir este error?

Yo: He probado todo lo que me han aconsejado expertos, y sigo sin tener idea.

El método de Invalidate o Refresh soamente disimulan el problema real y crean otro problema, porque se "flashea" el panel todo el rato si scrolleamos.

Una solución sería crear una vScrollbar para mi panel, y cambiar el mínimo de scroll-lines al usar la mouse-wheel, por ejemplo scrollear 15 lineas en vez de las 6 por defecto, ya que si scrolleo una página entera no tengo ningún problema visual. Pero esto no se hacerlo por mi mismo, si alguien me pudiera dar un ejemplo se lo agradecería mucho, pues con esto ya podría terminar mi app.






Más información:

(Supuestas soluciones que a mi no me han servido del todo, quizás no he sabido usarlas correctamente)

http://stackoverflow.com/questions/13516557/visual-problems-with-the-form-background-image
http://stackoverflow.com/questions/13535693/change-mouse-wheel-scroll-lines
http://www.daniweb.com/software-development/vbnet/threads/441204/how-to-correct-a-redrawing-background-cutted-effect-inside-a-panel
http://www.vbdotnetforums.com/vb-net-general-discussion/54165-how-correct-redrawing-background-cutted-effect-inside-panel.html#post153014
#812
Si por ejemplo mantengo apretado click en el scrollbar y voy bajando el scrollbar con el mouse, ¿Como se hace para que baje progresivamente el panel al ritmo del mouse?

Espero que hayan entendido la pregunta xD
#813
Estoy siguiendo estos pasos:


CitarAdd the desired assembly (stdlib.dll) to the project's resources.
   Go to the Resources tab of the Project Properties and choose Add Resource > Add Existing File...
   Switch to the Application tab and click on the View Application Events button.

   Add this code to the ApplicationEvents.vb code that opens.

Código (vbnet) [Seleccionar]
   Private Sub AppStart(ByVal sender As Object,
     ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
       AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf ResolveAssemblies
   End Sub

   Private Function ResolveAssemblies(sender As Object, e As System.ResolveEventArgs) As Reflection.Assembly
       Dim desiredAssembly = New Reflection.AssemblyName(e.Name)

       If desiredAssembly.Name = "the name of your assembly" Then
           Return Reflection.Assembly.Load(My.Resources.STDLIB) 'replace with your assembly's resource name
       Else
           Return Nothing
       End If
   End Function

   Now compile your project and you'll have the dependent assembly incorporated into the output as a single file.

El problema es que lo he hecho todo, pero me da error el "applicationEvents.vb"

Error 1 Statement is not valid in a namespace. C:\Users\Administrador\Desktop\WindowsApplication19 - copia - copia\ApplicationEvents.vb 1 1 WindowsApplication19


Mi ApplicationEvents estaba vacío al abrirlo, no se si ese puede ser el error, quizás me falta algo, solo tengo esto :

Código (vbnet) [Seleccionar]
Private Sub AppStart(ByVal sender As Object,
 ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
   AddHandler AppDomain.CurrentDomain.AssemblyResolve, AddressOf ResolveAssemblies
End Sub

Private Function ResolveAssemblies(sender As Object, e As System.ResolveEventArgs) As Reflection.Assembly
   Dim desiredAssembly = New Reflection.AssemblyName(e.Name)

   If desiredAssembly.Name = "Ookii.Dialogs.dll" Then
       Return Reflection.Assembly.Load(My.Resources.Ookii.Dialogs) 'replace with your assembly's resource name
   Else
       Return Nothing
   End If
End Function
#814
Hola,

Lo que necesito es usar un string, por ejemplo "C:\Carpeta" en la propiedad .RootFolder del FolderBrowserDialog, que usa una enumeración.

He intentado crear mi propia enumeración, pero no lo consigo... algo estaré haciendo mal:

Código (vbnet) [Seleccionar]
Enum lastfolder
   last = "C:\carpeta"
End Enum


Código (vbnet) [Seleccionar]
   Public Sub C1Button3_Click(sender As Object, e As EventArgs) Handles folderbutton.Click
       Dim folderselect As New VistaFolderBrowserDialog
       folderselect.RootFolder = lastfolder.last
       folderselect.ShowNewFolderButton = True
...
   End Sub
#815
¿Porque pasa esto?


Este es el diseño de la app:



Y esto es lo que sucede si muevo el scroll hacia abajo (o hacia arriba)



La imagen de fondo la usa el form, el panel tiene un "backcolor" transparente, y en fin yo creo que la mezcla de coloresy transparentes y todo eos lo he configurado bien... si necesitan más información al respecto pidanme...



EDITO: He probado lo siguiente, pero solo da resultado si PINCHO en el scroll para moverlo, es decir, si uso la rueda del ratón el evento no se ejecuta...¿Como puedo reproducir este evento para la rueda dle ratón?...

   Private Sub Panel1_Scroll(sender As Object, e As ScrollEventArgs) Handles Panel1.Scroll
       Me.BackgroundImage = My.Resources.blue_music_2961____copia
   End Sub
End Class

#816
Tengo problemas al intentar escribir datos en un archivo de texto...

Cualquier ayuda, se agradece!


Las líneas del problema:
Código (vbnet) [Seleccionar]
           If System.IO.File.Exists(Temp_file) = True Then System.IO.File.Delete(Temp_file)
           System.IO.File.Create(Temp_file)

( Cualquiera de las dos líneas, si elimino una, me da el mismo error en la otra, pero el archivo si que me lo llega a crear (vacío) )

El error:
The process cannot access the file 'C:\Users\Administrador\AppData\Local\Temp\PlayList_temp.txt' because it is being used by another process.

El sub:
Código (vbnet) [Seleccionar]
 Public Sub C1Button2_Click(sender As Object, e As EventArgs) Handles Button1.Click

       If Not playerargs = Nothing Then

           Dim Str As String
           Dim Pattern As String = ControlChars.Quote
           Dim ArgsArray() As String
           Dim Temp_file As String = System.IO.Path.GetTempPath & "\PlayList_temp.txt"
           Dim objWriter As New System.IO.StreamWriter(Temp_file)

           Str = Replace(playerargs, " " & ControlChars.Quote, "")
           ArgsArray = Split(Str, Pattern)

           If System.IO.File.Exists(Temp_file) = True Then System.IO.File.Delete(Temp_file)
           System.IO.File.Create(Temp_file)

       For Each folder In ArgsArray
           If Not folder = Nothing Then
               Dim di As New IO.DirectoryInfo(folder)
               Dim files As IO.FileInfo() = di.GetFiles("*")
                   Dim file As IO.FileInfo

               For Each file In files
                   ' command to writleline
                   'Console.WriteLine("File Name: {0}", file.Name)
                   'Console.WriteLine("File Full Name: {0}", file.FullName)
                   objWriter.Write(file.FullName)
                   objWriter.Close()
               Next
           End If
           Next

       If randomize.Checked = True Then
               RandomiseFile(Temp_file)
       End If

       Process.Start(userSelectedPlayerFilePath, playerargs)
       If autoclose.Checked = True Then
           Me.Close()
       End If
       Else
       MessageBox.Show("You must select at least one folder...", My.Settings.APPName)
       End If
   End Sub





EDITO: Ya está, solucionado:

Código (vbnet) [Seleccionar]
....
If Not playerargs = Nothing Then
    ....
    Dim Temp_file As String = System.IO.Path.GetTempPath & "\PlayList_temp.txt"

    Using objWriter As New System.IO.StreamWriter(Temp_file, false)
        For Each folder In ArgsArray
            If Not folder = Nothing Then
                Dim di As New IO.DirectoryInfo(folder)
                Dim files As IO.FileInfo() = di.GetFiles("*")
                Dim file As IO.FileInfo
                For Each file In files
                    ' command to writleline
                    'Console.WriteLine("File Name: {0}", file.Name)
                    'Console.WriteLine("File Full Name: {0}", file.FullName)
                    objWriter.Write(file.FullName)
                    ' objWriter.Close()
                Next
            End If
        Next
    End Using ' Flush, close and dispose the objWriter
    ....
#817
Hola,

En mi form, creo una variable que contiene un string, que más tarde usaré en un botón para lanzar una app externa con los argumentos que previamente estan guardados en mi variable.

El contenido de la variable es este:
Código (vbnet) [Seleccionar]
Winamp.exe "Argumento 1" "argumento 2" "argumento 3" "más argumentos"

PD: Los argumentos son rutas de carpetas.

Y lo que quisiera hacer es un split para obtener cada argumento, osea, cada carpeta que está encerrada en comillas,y hacer algo así:


' Pseudocode
For each folder in var.split(ControlChars.Quote)
   for each file in get.folder.files
    appendline.(archivo_de_Texto, file.Name)
 Next


¿Como puedo hacer ese split en VB?

EDITO:
He intentadoe sto, pero me dice que hay caracteres ilegales... :S

Código (vbnet) [Seleccionar]
           Dim entries = playerargs.Split(" "c)
           For n As Integer = 1 To entries.Length - 1
               Dim files As String() = Directory.GetFiles(entries(n))
           Next



#818
Hola,

Como sabreis.. hay muchisimos programas que hacen cambios en el registro (TuneUp por ejemplo) y los cambios tienen efecto enseguida sin necesidad de reiniciar el PC,
Si algunos de esos cambios se hicieran manualmente (batch, o añadiendo la clave desde el regedit) habría que reiniciar la sesión del usuario o el pc para que los cambios surgieran efecto...

Pues yo necesito añadir esta clave al registro:
Código (vbnet) [Seleccionar]
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "HideDrivesWithNoMedia", 1, Microsoft.Win32.RegistryValueKind.DWord)

Y lo que me gustaría es hacer un "system refresh" para que los cambios de esa clave tengan efecto sin tener que reiniciar...




Encontré este ejemplo en C# pero no tengo ni idea de lo que hace, ni tampoco sé si esto sirve para mi propósito.


Código (csharp) [Seleccionar]
static class SafeNativeMethods
{
public static IntPtr HWND_BROADCAST = (IntPtr)0xffff;
public static int WM_WININICHANGE = 0x001A;

[DllImport("User32.Dll")]
public static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int
lParam);
}

public static class Refresher
{
public static void ReloadSettings()
{
SafeNativeMethods.PostMessage(SafeNativeMethods.HWND_BROADCAST,
SafeNativeMethods.WM_WININICHANGE, 0, 5000);
}
}

static void ExWin()
{
Form form = new Form();
Refresher.ReloadSettings();
Application.Run(form);
}
#819


Todas esas dlls controles en realidad mi app no las utiliza, las añadí a mi form para ver lo que hacian y si me podian servir para algún propósito, pero después de eso las eliminé (usando el botón eliminar)

¿Donde debo borrar los rastros que quedan de esas dll's?

¿Hay alguna extensión para VS2012 que haga esto automáticamente por mi?

Saludos
#820
Cuando compilo la app y la ejecuto me sale esto:



Pero cuando ejecuto la app desde el IDE no me sale ningún error (Bueno, menos en la consola, me sale una excepción en rojo) pero el programa funciona perfectamente apesar de esa excepción...

¿Hay alguna manera de evitar que salga esa ventana sin tener que investigar dentro del código del form?
#821
Hola,

¿Alguien podría darme un ejemplo de como se puede arrastrar una carpeta a un textbox en un winform?

Parece que no es suficiente con la propiedad AllowDrop = True ... y esto tampoco:
Código (vbnet) [Seleccionar]

      ' Start a drag.
       foldertextbox.DoDragDrop( _
           foldertextbox.Text, _
           DragDropEffects.Copy)


Muchas gracias
#822
He probado así:

Código (vbnet) [Seleccionar]
If Me.FindControl("Checkbox1") IsNot Nothing Then
'FindControl' is not a member of 'WindowsApplication19.Form1'

Y así:
Código (vbnet) [Seleccionar]
If Me.Panel1.Contains("Checkbox1") = False Then
Value of type 'String' cannot be converted to 'System.Windows.Forms.Control'.

EDITO: Es un winform

¿Soluciones porfavor?
#823
Hola,




Los checkboxes de ese form los tengo dentro de un panel, y lo que quiero es que al ejecutar la app poder usar el scroll del mouse para bajar/subir la barra del scroll sin tener que pinchar en un checkbox primero.

No se si lo que debo cambiar es lo del focus, o el tabindex, o las dos cosas, pero he intentado cambiandole el tabindex a los checkboxes y no me funciona:

Código (vbnet) [Seleccionar]
           With mcheck(i)
               .AutoSize = True
               .TabIndex = 0
               .Location = New Point(0, i * 20)
               .Name = "CheckBox" & i + 1
               .Text = folder.Name
           End With


¿O quizás a lo que debo darle focus/tabindex es al panel y no a los checkboxes? De todas formas el tabindex del panel también lo puse a "0"

No se si el problema es que le doy un valor de "0" a todos los elementos y por eso no me funciona...

EDITO: Cuando abro mi form, y le doy a la tecla "TAB", se pone el foco en el primer checkbox de todos, así que creo que no debo ir por muy mal camino... pero algo me falta.

EDITO 2: la scrollbar del panel no la he creado yo, la hago con la propiedad "autoscroll" del panel...

Un saludo
#824
Hola,

Tengo un panel con casi 50 checkboxes (todos siguen un orden de nombre bien enumerado), y por ejemplo este es el sub del chekbox1:

Código (VB) [Seleccionar]
   Public Sub C1CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles C1CheckBox1.CheckedChanged
       If C1CheckBox1.Checked = True Then My.Settings.box1_selected = "Y" Else My.Settings.box1_selected = "N"
       Dim checkedpath1 = C1CheckBox1.Text
   End Sub


Lo que quisiera poder hacer es que ese mismo evento afecte a todos los checkboxes, eso se que se puede hacer añadiendo los checkboxes al "handle", vale, pero no es suficiente, ya que lo que hay dentro del sub del ejemplo solo afectará al checkbox 1 aunque yo añada todos al handle, ¿entienden lo que quiero decir?

Hay alguna forma de no escribir el mismo evento para los 50 checkboxes?

es decir, yo necesito hacer esto:

(Pseudocode)


Public Sub TODOS_LOS_CHECKBOXES_CheckedChanged(sender As Object, e As EventArgs) Handles TODOS_LOS_CHECKBOXES.CheckedChanged
If CUALQUIER_CHECKBOX.Checked = True Then My.Settings.NÚMERO_DEL_CHECKBOX_SELECCIONADO_selected = "Y" Else My.Settings.boxNÚMERO_DEL_CHECKBOX_SELECCIONADO_selected = "N"
Dim checkedpathNÚMERO_DEL_CHECKBOX _SELECCIONADO = C1CheckBoxNÚMERO_DEL_CHECKBOX _SELECCIONADO.Text
End Sub



Gracias y un saludo...
#825
Scripting / [RUBY] MP3Crank Leecher v0.2
18 Noviembre 2012, 08:27 AM
MP3Crank es una página web que actualizan constantemente con albums de muchos estilos... pop, rock, dance, electro, heavy metal, indie, folk, hiphop, r&b etc...
Yo personalmente descargo musica casi todos los días en esta página porque los enlaces están en "potload" y se descargan enseguida usando JDownloader.

La cuestión es que para acceder a un link de descarga primer hay que pasar por 3 páginas, así que para evitar ese tiempo de espera tán incómodo he decidido hacer este pequeño script que parsea las "X" primeras páginas de la página web y guarda los links en un archivo de texto...

Los enlaces que se listen se registran en un archivo log para que no se vuelvan a listar en el próximo uso del script.













- Se puede configurar el máximo de páginas a parsear.
- Se pueden excluir los albumes por "tags", en la configuración del script. por ejemplo si excluimos el tag "pop" no se listará ningún album de estilo pop.
NOTA: Tener en cuenta que muchos albumes de la página tienen varios tags, por ejemplo "pop, rock, indie", si el tag "pop" lo hemos excluido, ese album se omitirá tenga los otros tags que tenga.

- El archivo de salida que obtendremos es algo parecido a este:

Title   : Layo & Bushwacka! - Rising & Falling
Genre   : House, Techno
Year    : 2012
Page    : http://www.mp3crank.com/layo-bushwacka/rising-falling.htm
Download: http://potload.com/w34j2fem2bra


Title   : Press Gang Metropol - Checkpoint
Genre   : New Wave, Post-punk
Year    : 2012
Page    : http://www.mp3crank.com/press-gang-metropol/checkpoint.htm
Download: http://potload.com/dizvwuf3m3sy


Title   : Porcupine Tree - Octane Twisted (Live) (2CD)
Genre   : Progressive, Rock
Year    : 2012
Page    : http://www.mp3crank.com/porcupine-tree/octane-twisted-live-2cd.htm
Download: http://potload.com/7h1rld0rfz03


Title   : Nightwish - Imaginaerum (The Score)
Genre   : Symphonic Metal
Year    : 2012
Page    : http://www.mp3crank.com/nightwish/imaginaerum-the-score.htm
Download: http://potload.com/eqznab8d44uk



EXECUTABLE: http://exoshare.com/download.php?uid=1Z1TPBQO

MP3Crank.rb:
Código (ruby) [Seleccionar]
# -*- coding: UTF-8 -*-


# MP3Crank Leecher v0.2
#
# By Elektro H@cker


# Description:
# -----------
#
# MP3Crank Leecher it's a tool that helps you to keep updated your music collection.
#
# This tool is intended for (almost) daily use.
#
# The script retreives all the downloadable links of the first "X" pages from the MP3Crank website,
# And then list the links into a text file for use it with a download managaer like "JDownloader".
#
# All the links are stored permanently into a log file to be excluded at the next use,
# (that's the reason why this tool is intended for daily use).
#
#
# The pass for the links is: mp3crank.com


require 'net/http'
require 'win32/registry'
require "highline/system_extensions"
include HighLine::SystemExtensions


exit if Object.const_defined?(:Ocra)


def logo()
puts "
MP3CRANK Leecher v0.2
By Elektro H@cker"
end


def main()
puts "\n\n(Remember, the password for the links is: \"mp3crank.com\")\n\n[+] Press \"C\" to config or press any other key to start leeching..."
key = get_character
config("") if key.to_s =~ /^67$|^99$/
get_downloads_list()
puts "\n\n\n[+] All links are stored in: #{$mp3crank_leecherfile}\n\n(Remember, the password for the links is: \"mp3crank.com\")"
exit
end


def get_settings()
begin
$mp3crank_logfile = regread("LOGFILEPATH")
rescue
$mp3crank_logfile = "#{ENV['WINDIR']}\\MP3Crank Leecher LOG.txt"
end

begin
$mp3crank_leecherfile = regread("LEECHERFILEPATH") +  "MP3Crank Leecher #{Time.new.strftime("%Y-%m-%d")}.txt"
rescue
$mp3crank_leecherfile = "#{ENV['USERPROFILE']}\\Desktop\\MP3Crank Leecher #{Time.new.strftime("%Y-%m-%d")}.txt"
end

begin
$max_pages = regread("MAXPAGES")
$max_pages = $max_pages.to_i
rescue
$max_pages = 10
end

begin
$excluded_tags = regread("EXCLUDED TAGNAMES")
rescue
$excluded_tags = ""
end

end


def config(errorcode)

puts "
º---------------------------------º---------------------------------º
| [1] Set the log file path       | [S] Show the current settings   |
| [2] Set the leecher file path   | [R] Reset the settings          |
| [3] Delete the log file         | [Z] Backup all the settings     |
|---------------------------------|---------------------------------|
| [M] Max. Pages to parse         |                                 |
| [T] Tagnames to exclude         | [E] Exit                        |
º---------------------------------º---------------------------------º
"
get_settings()
puts errorcode

keystr = "NOTHING"
until keystr =~ /^49$|^50$|^51$|^69$|^80$|^82|^83$|^84$|^90$|^101$|^112$|^114$|^115$|^116$|^122$/
print "\nChoose an option >> "
key = get_character
keystr = key.to_s
end

# Log file path
if key == 49
logfilepath = "NOTHING"
until File.directory?(logfilepath)
print "\n\nEnter the path to an existing directory for the logfile: "
logfilepath = STDIN.gets.chomp
end
if logfilepath[-1] == '\\' then logfilepath = logfilepath[0..-2] end
regwrite("LOGFILEPATH", logfilepath + "\\MP3Crank Leecher LOG.txt")
config("[+] Operation completed.")
end

# Leecher file path
if key == 50
leecherfile = "NOTHING"
until File.directory?(leecherfile)
print "\n\Enter the path to an existing directory for the leecher file: "
leecherfile = STDIN.gets.chomp
end
if not leecherfile[-1] == '\\' then leecherfile = leecherfile+"\\" end
regwrite("LEECHERFILEPATH", leecherfile)
config("[+] Operation completed.")
end

# delete log file
if key == 51
filedel = "NOTHING"
while not filedel =~ /^78$|^89$|^110$|^121$/
print "\n\nWant to delete the log file, Are you sure? [Y/N]: "
filedel = get_character.to_s
end
begin
if filedel =~ /^89$|^121$/ then File.delete($mp3crank_logfile) end
config("[+] Operation completed.")
rescue
config("\n\nERROR\n\nCan't find the logfile.")
end
end

# Max pages
if key == 80 or key == 112
maxpages = "NOTHING"
puts "\n\nThis option lets you configure the maximum pages to leech..."
until not maxpages[/[a-z]/i]
print "\nEnter a number for the max pages value: "
maxpages = STDIN.gets.chomp
end
regwrite("MAXPAGES", maxpages)
config("[+] Operation completed.")
end

# exclude tagnames
if key == 84 or key == 116
addtag = "NOTHING"
puts "\n\nThis option lets you exclude albums by their genre tagnames..."
until not addtag == "NOTHING"
print "\n\nEnter a tagname (Example: \"Hip Hop\") \nor enter the word \"none\" to reset the exclusions: "
addtag = STDIN.gets.chomp
end
begin
tags=regread("EXCLUDED TAGNAMES")
rescue
tags=""
end
if addtag =~ /^none$/i then regwrite("EXCLUDED TAGNAMES", "") else regwrite("EXCLUDED TAGNAMES", "#{tags};#{addtag}") end
config("[+] Operation completed.")
end

# show the current settings
if key == 83 or key == 115
config("

Log file path       : #{$mp3crank_logfile}

Leecher file path   : #{$mp3crank_leecherfile}

Max. pages to parse : #{$max_pages} pages

Excluded tagnames   : #{$excluded_tags.gsub(";","|")}

")
end

# reset the settings
if key == 114 or key == 82
resetkey = "NOTHING"
while not resetkey =~ /^78$|^89$|^110$|^121$/
print "\n\nWant to reset all the settings, Are you sure? [Y/N]: "
resetkey = get_character.to_s
end
if resetkey =~ /^89$|^121$/
Win32::Registry::HKEY_CURRENT_USER.open("SOFTWARE\\MP3Crank Leecher\\", Win32::Registry::KEY_ALL_ACCESS) do |reg|
reg['LOGFILEPATH'] = 'DELETE'
reg.delete_value("LOGFILEPATH")
reg['LEECHERFILEPATH'] = 'DELETE'
reg.delete_value("LEECHERFILEPATH")
reg['MAXPAGES'] = 'DELETE'
reg.delete_value("MAXPAGES")
reg['EXCLUDED TAGNAMES'] = 'DELETE'
reg.delete_value("EXCLUDED TAGNAMES")
end
config("[+] Operation completed.")
end
end

# backup the settings
if key == 90 or key == 122
system %[ regedit /e \"%USERPROFILE%\\Desktop\\MP3Crank Leecher settings %DATE:/=-%.reg\" \"HKEY_CURRENT_USER\\Software\\MP3Crank Leecher\" ]
config("\n\n[+] Settings stored in #{ENV['USERPROFILE']}\\Desktop\\MP3Crank Leecher settings.reg")
end

# exit
if key == 69 or key == 101 then main() end

end


def show_info()
  @info = "

Title   : #{@album_title}
Genre   : #{@album_tags.to_s.gsub('\\t','').gsub(']','').gsub('[','').gsub('"','').gsub('nil','').gsub(', , ','')}
Year    : #{@year}
Page    : #{@album_page}
Download: #{@potload_url}

"
  puts @info
end


def get_downloads_list()
@page = 0
print "\n\n[+] Leeching pages "
for i in 1..$max_pages do
@page = @page+1
@url  = "http://www.mp3crank.com/page/#{@page}"
print "#{@page}/#{$max_pages}..."
Net::HTTP.get_response(URI.parse(@url)).body.split('<!--/centercol -->').first.split('<div id="centercol">').last.each_line do |line|

if (line['class="release"']) then @downloadable = "yes" end

if line['class="year"'] then @year = line.split('</').first.split('>').last end

if line['class="genres"']
for tag in line.split('rel="tag">').each do
@album_tags = @album_tags, tag.split('<').first.gsub('&amp;','&')
for excluded_tag in $excluded_tags.split(";").each do
if not excluded_tag == "" and tag.split('<').first.to_s.chomp[/^#{Regexp.escape(excluded_tag)}$/i] then @downloadable = "no" end
end
end
end

if line['class="album"']
@album_title   = line.split('title="').last.split('">').first.gsub('Free MP3 download ','').gsub('&amp;','&')
@album_page    = line.split('" rel=').first.split('"').last
@download_page = Net::HTTP.get_response(URI.parse(@album_page)).body[/http:\/\/www.mp3crank.com\/download\/album\/[0-9]+/i]
@potload_url   = Net::HTTP.get_response(URI.parse(@download_page)).body[/http:\/\/potload.com\/[a-z0-9]+/i]
if @downloadable == "yes"
filewrite()
end
@album_tags  = nil
end

end
end
end


def regread(keyname)
Win32::Registry::HKEY_CURRENT_USER.open("SOFTWARE\\MP3Crank Leecher\\") do |reg| reg[keyname] end
end


def regwrite(keyname, value)
Win32::Registry::HKEY_CURRENT_USER.create("SOFTWARE\\MP3Crank Leecher\\") do |reg| reg[keyname, Win32::Registry::REG_SZ] = value end
end


def filewrite()
if not File.exist?($mp3crank_logfile) then File.open($mp3crank_logfile, "w") do |write| write.puts "MP3Crack leeched URLs\n\n(Remember, the password for the links is: \"mp3crank.com\")\n\n" end end
if not File.open($mp3crank_logfile, "r").read[@album_page]
show_info()
File.open($mp3crank_logfile,     "a+") do |write| write.puts @album_page end
File.open($mp3crank_leecherfile, "a+") do |write| write.puts @info end
end
end


logo()
get_settings()
main()


#826
Hola,

Busco el nombre de los ejecutables de reproductores de audio, es para una mini aplicación que estoy haciendo en VS.

De momento solo tengo estos:

mpc.exe
mpc-hc.exe
mpc-hc64.exe
vlc.exe
winamp.exe
wmp.exe


una ayudita?  :P
#827
SoundCloud Leecher v0.5
By Elektro H@cker






















SoundCloud Leecher es una herramienta que te ayudará a mantener al día tu colección de música.

Esta utilidad está pensada para un uso (casi) diario o semanal.

El script obtiene todos los enlaces descargables de las primeras "X" páginas de "X" grupo de Soundcloud, y guarda esos enlaces en un archivo de texto para usarlos más tarde con un gestor de descargas como por ejemplo "JDownloader".

Además, todos los enlaces se listan también en un archivo log para que queden excluidos en el próximo uso del script, esa es la razón de porqué está pensado para el uso diario.

Es muy fácil de configurar.

Espero que a alguien más que a mi le sirva de ayuda. ::)

Un saludo!






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


Soundcloud Leecher.rb:
Código (ruby) [Seleccionar]
# -*- coding: UTF-8 -*-


# SoundCloud Leecher v0.5
#
# By Elektro H@cker


# Description:
# -----------
#
# SoundCloud Leecher it's a tool that helps you to keep updated your music collection.
#
# This tool is intended for (almost) daily use.
#
# The script retreives all the downloadable links of the first "X" pages from a "X" group of SoundCloud,
# And then list the links into a text file for use it with a download magaer like "JDownloader".
#
# All the links are stored permanently into a log file to be excluded at the next use,
# that's the reason why this tool is intended for daily use.


# Info:
# ----
#
# SoundCloud unfortunately do not have a date search mode,
# which would be much easier to search/sort by "music style + today's date" than "groups + first sorted pages",
# The site has an advanced search engine that can search by "release date" but that is not the same than "uploaded date",
# So i think the only way to sort by date is by entering a group page because it shows the content sorted by the last date.


# How to use:
# ----------
#
# Configure your favorite groups and the other settings by entering into the configuration menu.


require 'net/http'
require 'win32/registry'
require "highline/system_extensions"
include HighLine::SystemExtensions


exit if Object.const_defined?(:Ocra)


def logo()
puts "
 _,  _, ,  , ,  , ,_   _ ,    _, ,  , ,_      ,    _, _, _ , ,  _,,_  
(_  / \\ |  | |\\ | | \\ /  |   / \\ |  | | \\     |   /_,/_,/  |_| /_,|_)  
 _) \\_/ \\__| | \\| |_/ \\_ |__ \\_/ \\__| |_/     |__ \\_ \\_ \\_ | | \\_ | \\  
'          `    `       `           `           '   `  `  `' `   `'  
                                                                 v0.5
By Elektro H@cker"
end


def main()
puts "\n\n[+] Press \"C\" to config or press any other key to start leeching..."
key = get_character
config("") if key.to_s =~ /^67$|^99$/
get_downloads_list()
puts "\n\n\n[+] All links are stored in: #{$leecherfile}"
end


def get_settings()
begin
$logfile = regread("LOGFILEPATH")
rescue
$logfile = "#{ENV['WINDIR']}\\Soundcloud LOG.txt"
end

begin
$leecherfile = regread("LEECHERFILEPATH") +  "Soundcloud Leecher #{Time.new.strftime("%Y-%m-%d")}.txt"
rescue
$leecherfile = "#{ENV['USERPROFILE']}\\Desktop\\Soundcloud Leecher #{Time.new.strftime("%Y-%m-%d")}.txt"
end

begin
$groups = regread("GROUPS")
rescue
$groups = ""
end

begin
$max_pages = regread("MAXPAGES")
$max_pages = $max_pages.to_i
rescue
$max_pages = 5
end

begin
$min_duration = regread("MINDURATION")+"00"
$min_duration = $min_duration.to_i
rescue
$min_duration = 130
end

begin
$max_duration = regread("MAXDURATION")+"00"
$max_duration = $max_duration.to_i
rescue
$max_duration = 1200
end

begin
$max_size = regread("MAXSIZE")+"00"
$max_size = $max_size.to_i
rescue
$max_size = 10000
end

begin
$excluded_exts = regread("EXCLUDED EXTENSIONS")
rescue
$excluded_exts = ""
end

begin
$excluded_tags = regread("EXCLUDED TAGNAMES")
rescue
$excluded_tags = ""
end

begin
$verbose = regread("VERBOSEMODE")
rescue
$verbose = "no"
end

end


def config(errorcode)

puts "
º---------------------------------º---------------------------------º
| [1] Set the log file path       | [+] Max. track duration         |
| [2] Set the leecher file path   | [-] Min. track duration         |
| [3] Delete the log file         | [M] Max. track filesize         |
|---------------------------------|---------------------------------|
| [A] Add a group name            | [P] Pages per group to parse    |
| [D] Delete a group name         | [F] Filetypes to exclude        |
| [L] List the group names        | [T] Tagnames to exclude         |
|---------------------------------|---------------------------------|
| [V] Verbose mode (ON/OFF)       | [S] Show the current settings   |
|---------------------------------| [R] Reset the settings          |
| [E] Exit                        | [Z] Backup all the config.      |
º---------------------------------º---------------------------------º

"
get_settings()
puts errorcode

keystr = "NOTHING"
until keystr =~ /^43$|^45$|^49$|^50$|^51$|^65$|^68$|^69$|^70$|^76$|^77$|^80$|^82$|^83$|^84$|^86$|^90$|^97$|^100$|^101$|^102$|^108$|^109$|^112$|^114$|^115$|^116$|^118$|^121$|^122$/
print "\nChoose an option >> "
key = get_character
keystr = key.to_s
end

# Log file path
if key == 49
logfilepath = "NOTHING"
until File.directory?(logfilepath)
print "\n\nEnter the path to an existing directory for the logfile: "
logfilepath = STDIN.gets.chomp
end
if logfilepath[-1] == '\\' then logfilepath = logfilepath[0..-2] end
regwrite("LOGFILEPATH", logfilepath + "\\Soundcloud LOG.txt")
config("[+] Operation completed.")
end

# Leecher file path
if key == 50
leecherfile = "NOTHING"
until File.directory?(leecherfile)
print "\n\Enter the path to an existing directory for the leecher file: "
leecherfile = STDIN.gets.chomp
end
if not leecherfile[-1] == '\\' then leecherfile = leecherfile+"\\" end
regwrite("LEECHERFILEPATH", leecherfile)
config("[+] Operation completed.")
end

# delete log file
if key == 51
filedel = "NOTHING"
while not filedel =~ /^78$|^89$|^110$|^121$/
print "\n\nWant to delete the log file, Are you sure? [Y/N]: "
filedel = get_character.to_s
end
begin
if filedel =~ /^89$|^121$/ then File.delete($logfile) end
config("[+] Operation completed.")
rescue
config("\n\nERROR\n\nCan't find the logfile.")
end
end

# Add groupname
if key == 65 or key == 97
addname = "NOTHING"
until not addname == "NOTHING"
print "\n\nEnter a group name to add\nor enter the word \"none\" to reset the group list: "
addname = STDIN.gets.chomp
end
begin
groups=regread("GROUPS")
rescue
groups=""
end

for addgroupname in regread("GROUPS").split(";").sort do
if not addgroupname =~ /^#{Regexp.escape(addname)}$/i then addfinalgroups="#{addfinalgroups};#{addgroupname}" else found = "yes" end
end
if found == "yes" then config("\n\n[+] ERROR\n\nThe groupname already exists.") end
if addname =~ /^none$/i then regwrite("GROUPS", "") else regwrite("GROUPS", "#{groups};#{addname}") end
config("[+] Operation completed.")
end

# delete groupname
if key == 68 or key == 100
delnum = "NOTHING"
num=0
for listname in $groups.split(";").each.sort do
num=num+1
puts " [#{num}] #{listname}"
instance_variable_set "@_#{num}", listname
end
until not delnum == "NOTHING"
print "\n\nEnter a reference number to delete the group\nor enter the word \"none\" to reset the group list: "
delnum = STDIN.gets.chomp
end
choose = instance_variable_get "@_#{delnum}"
begin
groups=regread("GROUPS")
rescue
groups=""
end
begin
for delgroupname in regread("GROUPS").split(";").sort do
if not delgroupname =~ /^#{Regexp.escape(choose)}$/i then delfinalgroups="#{delfinalgroups};#{delgroupname}" end
end
rescue
config("\n\n[+] ERROR\n\nCan't find the delgroupname.")
end
regwrite("GROUPS", delfinalgroups[1..-1])
config("[+] Operation completed.")
end

# list groupnames
if key == 76 or key == 108
num = 0
puts "\n\n[+] All your groups:\n\n"
for listname in $groups.split(";").each.sort do
num=num+1
puts " [#{num}] #{listname}"
end
puts "\n\n[+] Press any other key to continue..."
get_character
   config("[+] Operation completed.")
end

# Max pages
if key == 80 or key == 112
maxpages = "NOTHING"
puts "\n\nThis option lets you configure the maximum pages when leeching a group..."
until not maxpages[/[a-z]/i]
print "\nEnter a number for the max pages value: "
maxpages = STDIN.gets.chomp
end
regwrite("MAXPAGES", maxpages)
config("[+] Operation completed.")
end

# Min track duration
if key == 45
puts "\n\nThis option lets you configure the minimum accepted minutes duration when leeching tracks..."
minlenght = "NOTHING"
until minlenght[/^[0-9]+$/]
print "\nEnter a number to set the min. minutes for a track (Example: \"1\"): "
minlenght = STDIN.gets.chomp
end
regwrite("MINDURATION", minlenght)
config("[+] Operation completed.")
end

# Max track duration
if key == 43
puts "\n\nThis option lets you configure the maximum accepted minutes duration when leeching tracks..."
maxlenght = "NOTHING"
until maxlenght[/^[0-9]+$/]
print "\nEnter a number to set the max. minutes for a track (Example: \"15\"): "
maxlenght = STDIN.gets.chomp
end
regwrite("MAXDURATION", maxlenght)
config("[+] Operation completed.")
end

# Max track filesize
if key == 77 or key == 109
puts "\n\nThis option lets you configure the maximum accepted filesize when leeching tracks..."
maxsize = "NOTHING"
until maxsize[/^[0-9]+$/]
print "\nEnter a number to set the max. MB for a track (Example: \"20\"): "
maxsize = STDIN.gets.chomp
end
regwrite("MAXSIZE", maxsize)
config("[+] Operation completed.")
end

# exclude filetypes
if key == 102 or key == 70
addext = "NOTHING"
puts "\n\nThis option lets you exclude tracks by their file extension..."
until not addext == "NOTHING"

print "\n\nEnter a file extension (Example: \"wav\") \nor enter the word \"none\" to reset the exclusions: "
addext = STDIN.gets.chomp
end
begin
exts=regread("EXCLUDED EXTENSIONS")
rescue
exts=""
end
if addext =~ /^none$/i then regwrite("EXCLUDED EXTENSIONS", "") else regwrite("EXCLUDED EXTENSIONS", "#{exts};#{addext.gsub(".","")}") end
config("[+] Operation completed.")
end

# exclude tagnames
if key == 84 or key == 116
addtag = "NOTHING"
puts "\n\nThis option lets you exclude tracks by a tagname..."
until not addtag == "NOTHING"
print "\n(The tagnames are not case sensitive)\n\nEnter a tagname (Example: \"session\") \nor enter the word \"none\" to reset the exclusions: "
addtag = STDIN.gets.chomp
end
begin
tags=regread("EXCLUDED TAGNAMES")
rescue
tags=""
end
if addtag =~ /^none$/i then regwrite("EXCLUDED TAGNAMES", "") else regwrite("EXCLUDED TAGNAMES", "#{tags};#{addtag}") end
config("[+] Operation completed.")
end

# verbose mode
if key == 118 or key == 86
verbkey = "NOTHING"
puts "\n\nThe verbose mode lets you can see more info when leeching the group pages..."
while not verbkey =~ /^78$|^89$|^110$|^121$/
print "\n\nWant to use the verbose mode? [Y/N]: "
verbkey = get_character.to_s
end
if verbkey =~ /^89$|^121$/ then regwrite("VERBOSEMODE", "yes") else regwrite("VERBOSEMODE", "no") end
config("[+] Operation completed.")
end


# show the current settings
if key == 83 or key == 115
config("

Log file path       : #{$logfile}

Leecher file path   : #{$leecherfile}

Max. pages per group: #{$max_pages} pages

Min. track duration : #{$min_duration.to_s[0..-3]} min

Max. track duration : #{$max_duration.to_s[0..-3]} min

Max. track filesize : #{$max_size.to_s[0..-3]} mb

Verbose mode        : #{$verbose}

Excluded extensions : #{$excluded_exts.gsub(";","|")}

Excluded tagnames   : #{$excluded_tags.gsub(";","|")}

")
end

# reset the settings
if key == 114 or key == 82
resetkey = "NOTHING"
while not resetkey =~ /^78$|^89$|^110$|^121$/
print "\n(This not affect to group list)\n\nWant to reset all the settings, Are you sure? [Y/N]: "
resetkey = get_character.to_s
end
if resetkey =~ /^89$|^121$/
Win32::Registry::HKEY_CURRENT_USER.open("SOFTWARE\\Soundcloud Leecher\\", Win32::Registry::KEY_ALL_ACCESS) do |reg|
reg['LOGFILEPATH'] = 'DELETE'
reg.delete_value("LOGFILEPATH")
reg['LEECHERFILEPATH'] = 'DELETE'
reg.delete_value("LEECHERFILEPATH")
reg['MAXPAGES'] = 'DELETE'
reg.delete_value("MAXPAGES")
reg['MINDURATION'] = 'DELETE'
reg.delete_value("MINDURATION")
reg['MAXDURATION'] = 'DELETE'
reg.delete_value("MAXDURATION")
reg['MAXSIZE'] = 'DELETE'
reg.delete_value("MAXSIZE")
reg['VERBOSEMODE'] = 'DELETE'
reg.delete_value("VERBOSEMODE")
reg['EXCLUDED EXTENSIONS'] = 'DELETE'
reg.delete_value("EXCLUDED EXTENSIONS")
reg['EXCLUDED TAGNAMES'] = 'DELETE'
reg.delete_value("EXCLUDED TAGNAMES")
end
config("[+] Operation completed.")
end
end

# backup the settings
if key == 90 or key == 122
system %[ regedit /e \"%USERPROFILE%\\Desktop\\Soundcloud settings %DATE:/=-%.reg\" \"HKEY_CURRENT_USER\\Software\\Soundcloud Leecher\" ]
config("\n\n[+] Settings stored in #{ENV['USERPROFILE']}\\Desktop\\SoundCloud settings.reg")
end

# exit
if key == 69 or key == 101 then main() end

end


def regread(keyname)
Win32::Registry::HKEY_CURRENT_USER.open("SOFTWARE\\Soundcloud Leecher\\") do |reg| reg[keyname] end
end


def regwrite(keyname, value)
Win32::Registry::HKEY_CURRENT_USER.create("SOFTWARE\\Soundcloud Leecher\\") do |reg| reg[keyname, Win32::Registry::REG_SZ] = value end
end


def filewrite()
if not File.exist?($logfile) then File.open($logfile, "w") do |write| write.puts "SoundCloud leeched URLs\n" end end
if not File.open($logfile, "r").read[@track_url.split("/download").first.split("http://soundcloud.com/").last.gsub("-","").gsub("/","")]
if $verbose == "yes" then puts @info end
File.open($logfile,     "a+") do |write| write.puts @track_url.split("/download").first.split("http://soundcloud.com/").last.gsub("-","").gsub("/","") end
File.open($leecherfile, "a+") do |write| write.puts "Added at #{Time.new.strftime("%H:%M")}: #{@track_url}" end
end
end


def get_downloads_list()

if $verbose == "no"
for name in $groups.split(";").each.sort do
@group = name.chomp
@page  = 0
print "\n\n[+] Group: #{@group}\n[+] Leeching pages "
for i in 1..$max_pages do
@page = @page+1
@url  = "http://soundcloud.com/groups/#{@group}/tracks?page=#{@page}"
print "#{@page}/#{$max_pages}..."
Net::HTTP.get_response(URI.parse(@url)).body.each_line do |line|
if (line['class="info-header"'])
@filename = line.split('</a').first.split('>').last.gsub(/ Artwork$/,'').gsub('&quot;','"').gsub('&amp;','&')
for excluded_tag in $excluded_tags.split(";").each do
if not excluded_tag == "" and @filename[/#{Regexp.escape(excluded_tag)}/i] then @downloadable = "no" end
end
end
if (line['button download']) then @downloadable = "yes" end
if (line['button download']) then @track_url    = "http://soundcloud.com#{line.split('href="').last.split('"').first}\n" end
if (line['This track is not downloadable']) then @downloadable = "no" end
if (line['class="file-type"'])
@ext = line.split('</').first.split('>').last
for excluded_ext in $excluded_exts.split(";").each do
if not excluded_ext == "" and @ext =~ /^#{Regexp.escape(excluded_ext)}$/i then @downloadable = "no" end
end
end
if (line['class="content-size"'])
@size         = line.split('</').first.split('>').last
if @size.gsub(".","").to_i > $max_size then @downloadable = "no" end
end
if (line['class="duration"']) then @duration = line.split('</').first.split('>').last.gsub(".","").to_i end
if (line['class="duration"']) and @downloadable == "yes" and @duration > $min_duration and @duration < $max_duration
filewrite()
end
end
end
end
end

if $verbose == "yes"
for name in $groups.split(";").each.sort do
@group = name.chomp
@page  = 0
print "\n\n[+] Group: #{@group}\n[+] Leeching pages "
for i in 1..$max_pages do
@page = @page+1
@url  = "http://soundcloud.com/groups/#{@group}/tracks?page=#{@page}"
print "#{@page}/#{$max_pages}..."
Net::HTTP.get_response(URI.parse(@url)).body.each_line do |line|
if (line['class="info-header"'])
@filename = line.split('</a').first.split('>').last.gsub(/ Artwork$/,'').gsub('&quot;','"').gsub('&amp;','&')
for excluded_tag in $excluded_tags.split(";").each do
if not excluded_tag == "" and @filename[/#{Regexp.escape(excluded_tag)}/i] then @downloadable = "no" end
end
end
if (line['button download']) then @downloadable = "yes" end
if (line['button download']) then @track_url    = "http://soundcloud.com#{line.split('href="').last.split('"').first}\n" end
if (line['This track is not downloadable']) then @downloadable = "no" end
if (line['class="file-type"'])
@ext = line.split('</').first.split('>').last
for excluded_ext in $excluded_exts.split(";").each do
if not excluded_ext == "" and @ext =~ /^#{Regexp.escape(excluded_ext)}$/i then @downloadable = "no" end
end
end
if (line['class="content-size"'])
@size         = line.split('</').first.split('>').last
if @size.gsub(".","").to_i > $max_size then @downloadable = "no" end
end
if (line['class="duration"']) then @duration     = line.split('</').first.split('>').last end
if (line['class="duration"']) and @downloadable == "yes" and @duration.gsub(".","").to_i > $min_duration and @duration.gsub(".","").to_i < $max_duration
@info = "\n\nFilename : #{@filename} \nExtension: #{@ext} \nFilesize : #{@size}  \nDuration : #{@duration} minutes\nURL      : #{@track_url}\n"
filewrite()
end
end
end
end
end

end


logo()
get_settings()
main()


__END__


#828
    

  PATHS v0.3
  By Elektro H@cker  













  Opciones:

  /? (or) -help  | Muestra la ayuda.

  -l (or) -list  | Lista las entradas del PATH.

  -c (or) -clean | Limpia entradas inválidas o duplicados en los PATH.

  -r (or) -reset | Resetea el PATH al PATH de Windows por defecto.

  -a (or) -add   | Añade una entrada.

  -d (or) -del   | Elimina una entrada.

  -add -current  | Fuerza el añadido de una entrada al "Current_User" PATH.

  -add -local    | Fuerza el añadido de una entrada al "Local_Machine" PATH.



  Ejemplos:

  PATHS -l
 
  • Lista (Indexa) las entradas dle path.

      PATHS -a "C:\Folder"
     
  • Añade la entrada "C:\Folder" al LOCAL_MACHINE PATH.

      PATHS -a current "C:\Folder"
     
  • Añade la entrada "C:\Folder" al CURRENT_USER PATH..

      PATHS -d "3"
     
  • Elimina la entrada nº3 de la lista.

      PATHS -d "C:\Folder"
     
  • Elimina la entrada "C:\Folder".





    Compilado: http://elektrostudios.tk/PATHS.exe

    PATHS.rb

    (El código está algo sucio, pero lo que importa es que funciona xD)

    Código (RUBY) [Seleccionar]
    require 'win32/registry'
    require 'rainbow'


    # PATHS v0.3
    #
    # By Elektro H@cker


    # Description:
    # -----------
    # This is a tool to manage the windows PATH enviroment.
    # Add, delete, backup, clean, list, and reset the PATH.


    exit if Object.const_defined?(:Ocra)


    def logo()
     print "
      PATHS v0.3

      By Elektro H@cker

    ".foreground(:white)
    end


    def help()
     print '

      Options:

      /? (or) -help   | Show this info.

      -l (or) -list   | List the entries.

      -b (or) -backup | Backup the entries.  

      -c (or) -clean  | Clean duplicates and invalid directories in the paths.

      -r (or) -reset  | Reset the paths to the Windows defaults.

      -a (or) -add    | Add a entry.

      -d (or) -del    | Delete a entry.

      -add -current   | Force adding a entry into the current user path.

      -add -local     | Force adding a entry into the local machine path.



      Examples:

      PATHS -l
      [+] Indexes all the entries.

      PATHS -a "C:\Folder"
      [+] Adds a entry into the local path.

      PATHS -a current "C:\Folder"
      [+] Adds a entry into the current user path.

      PATHS -d "3"
      [+] Deletes the 3rd entry of the indexed list.

      PATHS -d "C:\Folder"
      [+] Deletes a entry.

     '
     exit
    end


    def error(kind)
     print "[+] ERROR"
     if kind == "pos"      then print "\n    Index #{ARGV[1]} is out of range, only #{$pos} entries.\n" end
     if kind == "notfound" then print "\n    Directory \"#{ARGV[1]}\" not found in PATH.\n" end
     exit
    end


    def args()
     if ARGV.empty?                                   then get_paths("visible") end
     if ARGV[0] == "/?"    or ARGV[0] =~ /^-help$/i   then help()               end  
     if ARGV[0] =~ /^-l$/i or ARGV[0] =~ /^-list$/i   then get_paths("visible") end
     if ARGV[0] =~ /^-b$/i or ARGV[0] =~ /^-backup$/i then backup_path()        end
     if ARGV[0] =~ /^-c$/i or ARGV[0] =~ /^-clean$/i  then clean_path()         end    
     if ARGV[0] =~ /^-d$/i or ARGV[0] =~ /^-del$/i    then del_path()           end
     if ARGV[0] =~ /^-a$/i or ARGV[0] =~ /^-add$/i    then add_path()           end
     if ARGV[0] =~ /^-r$/i or ARGV[0] =~ /^-reset$/i  then reset_path()         end
    end


    def get_paths(visibility)

     $pos = 0

     # HKCU path
     if not visibility == "hidden" then puts "\n   [+] Current User PATH:\n\n" end
     Win32::Registry::HKEY_CURRENT_USER.open('Environment') do |reg|
       for dir in reg['Path'].split(";").sort do
     $pos = $pos+1
     dir = dir.gsub(/^PATH=/, "")
         instance_variable_set "@_#{$pos}", dir + "?CURRENT_USER"
         if not File.directory? dir then invalid = "(Directory doesn't exist)".foreground(:red).bright else invalid ="" end
         if not visibility == "hidden"
           if $pos < 10 then puts "    #{$pos.to_s} = #{dir} #{invalid}" else puts "    #{$pos.to_s}= #{dir} #{invalid}"end
         end
       end
     end

     # HKLM path
     if not visibility == "hidden" then puts "\n\n   [+] Local Machine PATH:\n\n" end
     Win32::Registry::HKEY_LOCAL_MACHINE.open('SYSTEM\CurrentControlSet\Control\Session Manager\Environment') do |reg|
       for dir in reg['Path'].split(";").sort do
     $pos = $pos+1
     dir = dir.gsub(/^PATH=/, "")
         instance_variable_set "@_#{$pos}", dir + "?LOCAL_MACHINE"
         if not File.directory? dir then invalid = "(Directory doesn't exist)".foreground(:red).bright else invalid ="" end
         if not visibility == "hidden"
           if $pos < 10 then puts "    #{$pos.to_s} = #{dir} #{invalid}" else puts "    #{$pos.to_s}= #{dir} #{invalid}"end
         end
       end
     end
     if not visibility == "hidden" then exit end
     $max_pos = $pos

    end


    def add_path()

     if ARGV[1] =~ /^-current$/ then key = "current" else key = "local" end

     # HKCU path
     if key == "current"
       Win32::Registry::HKEY_CURRENT_USER.open('Environment', Win32::Registry::KEY_ALL_ACCESS) do |reg|
         value = reg['Path']
         reg.write('Path', Win32::Registry::REG_SZ, "#{value};#{ARGV.last}")
         puts "[+] Entry added in User PATH: #{ARGV.last}"
       end
     end

     # HKLM path
     if key == "local"
       Win32::Registry::HKEY_LOCAL_MACHINE.open('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', Win32::Registry::KEY_ALL_ACCESS) do |reg|
         value = reg['Path']
         reg.write('Path', Win32::Registry::REG_SZ, "#{value};#{ARGV.last}")
         puts "[+] Entry added in Local PATH: #{ARGV.last}"
       end
     end

    end


    def del_path()

       get_paths("hidden")
       final_path = ""
       found      = 0
       notfound   = 0

     if ARGV[1] =~ /^[1-9]+$/

       choose     = instance_variable_get "@_#{ARGV[1]}"

       if ARGV[1].to_i > $max_pos.to_i then error("pos") end

       # HKCU PATH index deletion
       if choose["?CURRENT_USER"]
         Win32::Registry::HKEY_CURRENT_USER.open('Environment', Win32::Registry::KEY_ALL_ACCESS) do |reg|
           value = reg['Path']
           for dir in reg['Path'].split(";").sort do
             if not dir == choose.split("?").first then final_path << ";" + dir end
           end
           reg.write('Path', Win32::Registry::REG_SZ, final_path[1..-1])
         end
         puts "[+] Entry deleted in User PATH: #{choose.split("?").first}"
       end

       # HKLM PATH index deletion
       if choose["?LOCAL_MACHINE"]
         Win32::Registry::HKEY_LOCAL_MACHINE.open('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', Win32::Registry::KEY_ALL_ACCESS) do |reg|
           value = reg['Path']
           for dir in reg['Path'].split(";").sort do
             if not dir == choose.split("?").first then final_path << ";" + dir end
           end
           reg.write('Path', Win32::Registry::REG_SZ, final_path[1..-1])
         end
         puts "[+] Entry deleted in Local PATH: #{choose.split("?").first}"
       end

     elsif

       # HKCU PATH str deletion
         Win32::Registry::HKEY_CURRENT_USER.open('Environment', Win32::Registry::KEY_ALL_ACCESS) do |reg|
           value = reg['Path']
           for dir in reg['Path'].split(";").sort do
             if not dir =~ /^#{Regexp.escape(ARGV[1])}$/i then final_path << ";" + dir else found = "yes" end
           end
           reg.write('Path', Win32::Registry::REG_SZ, final_path[1..-1])
           if found == "yes" then puts "[+] Entry deleted in User PATH: #{ARGV[1]}" else notfound = 1 end
         end
       
       # HKLM PATH str deletion
         final_path = ""
         found = ""
         Win32::Registry::HKEY_LOCAL_MACHINE.open('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', Win32::Registry::KEY_ALL_ACCESS) do |reg|
           value = reg['Path']
           for dir in reg['Path'].split(";").sort do
             if not dir =~ /^#{Regexp.escape(ARGV[1])}$/i then final_path << ";" + dir else found = "yes" end
           end
           reg.write('Path', Win32::Registry::REG_SZ, final_path[1..-1])
           if found == "yes" then puts "[+] Entry deleted in Local PATH: #{ARGV[1]}" else notfound = notfound+1 end
           if notfound == 2 then error("notfound") end
         end

       end

    end


    def backup_path()

     # if type REG_EXPAND_SZ convert it first to REG_SZ
     # HKCU path
       Win32::Registry::HKEY_CURRENT_USER.open('Environment', Win32::Registry::KEY_ALL_ACCESS) do |reg|
         value = reg['Path']
         reg.write('Path', Win32::Registry::REG_SZ, value)
       end
     # HKLM path
       Win32::Registry::HKEY_LOCAL_MACHINE.open('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', Win32::Registry::KEY_ALL_ACCESS) do |reg|
         value = reg['Path']
         reg.write('Path', Win32::Registry::REG_SZ, value)
       end
     # Conversion end

     system('Regedit.exe /E "%TEMP%\HKCU PATH.reg" "HKEY_CURRENT_USER\Environment"')
     system('Regedit.exe /E "%TEMP%\HKLM PATH.reg"  "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"')
     system('type "%TEMP%\HKCU PATH.reg" | Findstr /I "\"PATH\" HKEY_CURRENT_USER Registry" > "%USERPROFILE%\Desktop\HKCU PATH %DATE:/=-%.reg"')
     system('type "%TEMP%\HKLM PATH.reg" | Findstr /I "\"PATH\" HKEY_LOCAL_MACHINE Registry" > "%USERPROFILE%\Desktop\HKLM PATH %DATE:/=-%.reg"')
     puts "[+] A copy of your current PATH saved at your desktop."
     exit
    end


    def reset_path()
     Win32::Registry::HKEY_CURRENT_USER.open('Environment', Win32::Registry::KEY_ALL_ACCESS) do |reg| reg.write('Path', Win32::Registry::REG_SZ, 'C:\Windows;C:\Windows\system32;C:\Windows\System32\Wbem;C:\Windows\syswow64;C:\Windows\System32\WindowsPowerShell\v1.0') end
     Win32::Registry::HKEY_LOCAL_MACHINE.open('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', Win32::Registry::KEY_ALL_ACCESS) do |reg| reg.write('Path', Win32::Registry::REG_SZ, 'C:\Windows;C:\Windows\system32;C:\Windows\System32\Wbem;C:\Windows\syswow64;C:\Windows\System32\WindowsPowerShell\v1.0') end
     puts "[+] PATH restored to Windows defaults."
    end


    def clean_path()

     puts "\n[+] Searching invalid or duplicated entries in the PATH...\n\n"

     # HKCU PATH
     final_path = ""
     Win32::Registry::HKEY_CURRENT_USER.open('Environment', Win32::Registry::KEY_ALL_ACCESS) do |reg|
       value = reg['Path']
       for dir in reg['Path'].split(";").sort do
         if File.directory? dir and not final_path[/#{Regexp.escape(dir)}$/i] then final_path << ";" + dir else puts "[+] Entry deleted in User PATH: #{dir}" end
       end
       reg.write('Path', Win32::Registry::REG_SZ, final_path[1..-1])
     end

     # HKLM PATH
     final_path = ""
     Win32::Registry::HKEY_LOCAL_MACHINE.open('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', Win32::Registry::KEY_ALL_ACCESS) do |reg|
       value = reg['Path']
       for dir in reg['Path'].split(";").sort do
         if File.directory? dir and not final_path[/#{Regexp.escape(dir)}$/i] then final_path << ";" + dir else puts "[+] Entry deleted in Local PATH: #{dir}" end
       end
       reg.write('Path', Win32::Registry::REG_SZ, final_path[1..-1])
     end

     puts "\n[+] PATH is cleaned.\n\n"

    end

    logo()
    args()

    exit
#829
Scripting / [RUBY] GameTracker ServerList
13 Noviembre 2012, 16:42 PM
  

 GameTracker Server List
 By Elektro H@cker


La idea de Doddy me ha inspirado para crear este script el cual se puede usar por línea de comandos o de forma preconfigurada.
Referencia de la idea de Doddy:  [Perl] Counter Strike 1.6 Servers List









  • Sintaxis::

GTSL.rb help
(Muestra los valores de "games" y "locations".)

GTSL.rb (game) (location) (archivo)
(Obtiene todos los servidores del juego "game" del país "location" y los guarda en el archivo "archivo")

O cambiar los dos valores por defecto del script, "game" y "location".


  • Ejemplos de uso
:
GTSL.rb cs es
(Obtiene todos los servidores españoles del Counter-Strike 1.6 y los guarda en el archivo por defecto "cs-ES servers.txt")

GTSL.rb cs uk "servidores UK.txt"
(Obtiene todos los servidores ingleses del Counter-Strike 1.6 y los guarda en el archivo "servidores UK.txt")






  •  Game values

 alienswarm    = Alien Swarm
 aa    = America's Army 2.0
 aa3   = America's Army 3
 arma2 = ARMA 2
 arma  = ArmA Armed Assault
 bf1942        = Battlefield 1942
 bf2   = Battlefield 2
 bf2142        = Battlefield 2142
 bf3   = Battlefield 3
 bc2   = Battlefield Bad Company 2
 bfv   = Battlefield Vietnam
 brink = Brink
 cod   = Call of Duty
 cod2  = Call of Duty 2
 cod4  = Call of Duty 4
 blackops      = Call of Duty : Black Ops
 mw3   = Call of Duty : Modern Warfare 3
 uo    = Call of Duty United Offensive
 codww = Call of Duty World at War
 cs    = Counter Strike 1.6
 csgo  = Counter Strike Global Offensive
 css   = Counter Strike Source
 czero = Counter-Strike Condition Zero
 crysis        = Crysis
 crysis2       = Crysis 2
 warhead       = Crysis Wars
 rordh = Darkest Hour
 dod   = Day of Defeat
 dods  = Day of Defeat Source
 dayz  = DayZ
 doom3 = Doom 3
 etqw  = Enemy Territory Quake Wars
 fear  = F.E.A.R.
 ff    = Fortress Forever
 ffow  = Frontlines Fuel of War
 garrysmod     = Garry's Mod
 hl    = Half Life 1
 hl2dm = Half-Life 2 Deathmatch
 halo  = Halo
 homefront     = Homefront
 ins   = Insurgency
 killingfloor  = Killing Floor
 l4d   = Left 4 Dead
 left4dead2    = Left 4 Dead 2
 moh   = Medal of Honor
 mohaa = Medal of Honor Allied Assault
 bt    = Medal of Honor Breakthrough
 sh    = Medal of Honor Spearhead
 mohw  = Medal of Honor Warfighter
 minecraft     = Minecraft
 mnc   = Monday Night Combat
 mumble        = Mumble
 hlns  = Natural Selection
 qw    = Quake 1 (Quake World)
 q2    = Quake 2
 q3    = Quake 3
 q4    = Quake 4
 ravaged       = Ravaged
 ro2   = Red Orchestra 2
 ror   = Red Orchestra Ostfront 41-45
 s8prejudicepc = Section 8 Prejudice
 s8prejudice   = Section 8 Prejudice (xbox)
 sniperelite2  = Sniper Elite V2
 sof2  = Soldier of Fortune II
 swbf2 = Star Wars Battlefront 2
 swjk  = Star Wars Jedi Knight
 swat4 = SWAT 4
 tf2   = Team Fortress 2
 tfc   = Team Fortress Classic 1.6
 teamspeak     = TeamSpeak
 ts3   = TeamSpeak 3
 ut    = Unreal Tournament
 ut2k4 = Unreal Tournament 2004
 ut3   = Unreal Tournament 3
 urbanterror   = Urban Terror
 ventrilo      = Ventrilo
 et    = Wolfenstein Enemy Territory
 wolf  = Wolfenstein PC
 hl2zp = Zombie Panic! Source



  •  Location values

 AF = Afghanistan
 AX = Aland Islands
 AL = Albania
 DZ = Algeria
 AS = American Samoa
 AD = Andorra
 AO = Angola
 AI = Anguilla
 A1 = Anonymous Proxy
 AG = Antigua and Barbuda
 AR = Argentina
 AM = Armenia
 AW = Aruba
 AU = Australia
 AT = Austria
 AZ = Azerbaijan
 BS = Bahamas
 BH = Bahrain
 BD = Bangladesh
 BB = Barbados
 BY = Belarus
 BE = Belgium
 BZ = Belize
 BJ = Benin
 BM = Bermuda
 BT = Bhutan
 BO = Bolivia
 BA = Bosnia and Herzegovina
 BW = Botswana
 BV = Bouvet Island
 BR = Brazil
 IO = British Indian Ocean Territory
 BN = Brunei Darussalam
 BG = Bulgaria
 BF = Burkina Faso
 BI = Burundi
 KH = Cambodia
 CM = Cameroon
 CA = Canada
 CV = Cape Verde
 KY = Cayman Islands
 CF = Central African Republic
 TD = Chad
 CL = Chile
 CN = China
 CX = Christmas Island
 CC = Cocos (Keeling) Islands
 CO = Colombia
 KM = Comoros
 CG = Congo
 CD = Congo, The Democratic Republic of the
 CK = Cook Islands
 CR = Costa Rica
 CI = Cote D'Ivoire
 HR = Croatia
 CU = Cuba
 CY = Cyprus
 CZ = Czech Republic
 DK = Denmark
 DJ = Djibouti
 DM = Dominica
 DO = Dominican Republic
 EC = Ecuador
 EG = Egypt
 SV = El Salvador
 GQ = Equatorial Guinea
 ER = Eritrea
 EE = Estonia
 ET = Ethiopia
 FK = Falkland Islands (Malvinas)
 FO = Faroe Islands
 FJ = Fiji
 FI = Finland
 FR = France
 GF = French Guiana
 PF = French Polynesia
 TF = French Southern Territories
 GA = Gabon
 GM = Gambia
 GE = Georgia
 DE = Germany
 GH = Ghana
 GI = Gibraltar
 GR = Greece
 GL = Greenland
 GD = Grenada
 GP = Guadeloupe
 GU = Guam
 GT = Guatemala
 GG = Guernsey
 GN = Guinea
 GW = Guinea-Bissau
 GY = Guyana
 HT = Haiti
 HM = Heard Island And Mcdonald Islands
 VA = Holy See (Vatican City State)
 HN = Honduras
 HK = Hong Kong
 HU = Hungary
 IS = Iceland
 IN = India
 ID = Indonesia
 IR = Iran, Islamic Republic of
 IQ = Iraq
 IE = Ireland
 IM = Isle Of Man
 IL = Israel
 IT = Italy
 JM = Jamaica
 JP = Japan
 JE = Jersey
 JO = Jordan
 KZ = Kazakhstan
 que = Kenya
 KI = Kiribati
 KP = Korea, Democratic People's Republic of
 KR = Korea, Republic of
 KW = Kuwait
 KG = Kyrgyzstan
 LA = Lao People's Democratic Republic
 LV = Latvia
 LB = Lebanon
 LS = Lesotho
 LR = Liberia
 LY = Libya
 LI = Liechtenstein
 LT = Lithuania
 LU = Luxembourg
 MO = Macao
 MK = Macedonia
 MG = Madagascar
 MW = Malawi
 MY = Malaysia
 MV = Maldives
 ML = Mali
 MT = Malta
 MH = Marshall Islands
 MQ = Martinique
 MR = Mauritania
 MU = Mauritius
 YT = Mayotte
 MX = Mexico
 FM = Micronesia, Federated States of
 MD = Moldova, Republic of
 MC = Monaco
 MN = Mongolia
 ME = Montenegro
 MS = Montserrat
 MA = Morocco
 MZ = Mozambique
 MM = Myanmar
 NA = Namibia
 NR = Nauru
 NP = Nepal
 NL = Netherlands
 AN = Netherlands Antilles
 NC = New Caledonia
 NZ = New Zealand
 NI = Nicaragua
 NE = Niger
 NG = Nigeria
 NU = Niue
 NF = Norfolk Island
 MP = Northern Mariana Islands
 NO = Norway
 A0 = Not Found
 OM = Oman
 PK = Pakistan
 PW = Palau
 PS = Palestinian Territory, Occupied
 PA = Panama
 PG = Papua New Guinea
 PY = Paraguay
 PE = Peru
 PH = Philippines
 PN = Pitcairn
 PL = Poland
 PT = Portugal
 PR = Puerto Rico
 QA = Qatar
 RE = Reunion
 RO = Romania
 RU = Russian Federation
 RW = Rwanda
 BL = Saint Barthelemy
 SH = Saint Helena
 KN = Saint Kitts and Nevis
 LC = Saint Lucia
 MF = Saint Martin
 PM = Saint Pierre and Miquelon
 VC = Saint Vincent and the Grenadines
 WS = Samoa
 SM = San Marino
 ST = Sao Tome and Principe
 A2 = Satellite Provider
 SA = Saudi Arabia
 SN = Senegal
 RS = Serbia
 SC = Seychelles
 SL = Sierra Leone
 SG = Singapore
 SK = Slovakia
 SI = Slovenia
 SB = Solomon Islands
 SO = Somalia
 ZA = South Africa
 GS = South Georgia and the South Sandwich Islands
 ES = Spain
 LK = Sri Lanka
 SD = Sudan
 SR = Suriname
 SJ = Svalbard and Jan Mayen
 SZ = Swaziland
 SE = Sweden
 CH = Switzerland
 SY = Syrian Arab Republic
 TW = Taiwan, Province of China
 TJ = Tajikistan
 TZ = Tanzania, United Republic of
 TH = Thailand
 TL = Timor-Leste
 TG = Togo
 TK = Tokelau
 TO = Tonga
 TT = Trinidad and Tobago
 TN = Tunisia
 TR = Turkey
 TM = Turkmenistan
 TC = Turks and Caicos Islands
 TV = Tuvalu
 UG = Uganda
 UA = Ukraine
 AE = United Arab Emirates
 GB = United Kingdom
 US = United States
 UM = United States Minor Outlying Islands
 UY = Uruguay
 UZ = Uzbekistan
 VU = Vanuatu
 VE = Venezuela
 VN = Viet Nam
 VG = Virgin Islands, British
 VI = Virgin Islands, U.S.
 WF = Wallis and Futuna
 EH = Western Sahara
 YE = Yemen
 ZM = Zambia
 ZW = Zimbabwe





Executable: http://exoshare.com/download.php?uid=MHXEVOZYO bsoleto, el nuevo executable está en el comentario de abajo...


GTSL.rb Obsoleto, el nuevo código está en el comentario de abajo...


Saludos
#830
Hola,

Tengo varios fallos en el diseño que no se como arreglar...

El primer problema es este, tengo un listbox horizontal, cuando pincho en el checkbox se seleccionan todos los items, pero no "resaltan", se quedan con un tono gris:


Lo que me gustaría es conseguir este efecto al seleccionar el checkbox:

(Para que resalte el highlight tengo que volver a pinchar en un item después de haber activado el checkbox..., quiero evitar eso.)

He mirado de arriba a abajo los eventos, las propiedades, y el style del xml del listbox pero no doy con la forma de conseguirlo.

También tengo un problema relacionado con el listbox, y es que no tengo ni idea de como sería la mejor forma de almacenar los items seleccionados y descartar los que no han sido seleccionados, para la monitorización.

Código (vb) [Seleccionar]
    Private Sub File_copy_options_Loaded(sender As Object, e As RoutedEventArgs) Handles DrivesBox.Loaded
        DrivesBox.Items.Insert(0, "A ")
        DrivesBox.Items.Insert(1, "B ")
        DrivesBox.Items.Insert(2, "C ")
        DrivesBox.Items.Insert(3, "D ")
        DrivesBox.Items.Insert(4, "E ")
        DrivesBox.Items.Insert(5, "F ")
        DrivesBox.Items.Insert(6, "G ")
        DrivesBox.Items.Insert(7, "H ")
        DrivesBox.Items.Insert(8, "I ")
        DrivesBox.Items.Insert(9, "J ")
        DrivesBox.Items.Insert(10, "K ")
        DrivesBox.Items.Insert(11, "L ")
        DrivesBox.Items.Insert(12, "M ")
        DrivesBox.Items.Insert(13, "N ")
        DrivesBox.Items.Insert(14, "O ")
        DrivesBox.Items.Insert(15, "P ")
        DrivesBox.Items.Insert(16, "Q ")
        DrivesBox.Items.Insert(17, "R ")
        DrivesBox.Items.Insert(18, "S ")
        DrivesBox.Items.Insert(19, "T ")
        DrivesBox.Items.Insert(20, "U ")
        DrivesBox.Items.Insert(21, "V ")
        DrivesBox.Items.Insert(22, "W ")
        DrivesBox.Items.Insert(23, "X ")
        DrivesBox.Items.Insert(24, "Y ")
        DrivesBox.Items.Insert(25, "Z ")
    End Sub
 


Supongo que como dijo cuban lo mejor sería usar una lista de tipo enumeration, pero ni idea tengo.




El segundo problema es sobre mis textboxs:


A simple vista parece estar bien, pero NO, uso la orientación "righttoleft" porque si la ruta es más larga que las dimensiones del textbox no se puede ver el final de la ruta.

Eso no tiene mucha importancia, pero lo que me gustaría es encontrar una forma para saber si el texto sale del rango de las dimensiones del texbox, Es decir:

Si la ruta es corta, quiero que la ruta salga a la izquierda:

(Con el evento "GetKeyboardFocus" cambio temporalmente la orientación a la izquierda para poder editar mejor el texto)

Pero lo único que consigo es que salga a la derecha por la orientación que uso:





Y otro problema que tengo es que no puedo seleccionar el texto con el mouse para "arrastrarlo" por la caja de texto.

A ver como explico esto...


En la imagen de arriba he seleccionado esos caracteres con el mouse, pero no puedo seleccionar lo que hay más a la derecha, porque el campo de texto no se desplaza, está fijo...


Uf, si han leido hasta aquí, muchas gracias!

#831
Estoy intentando usar este control en un botón, el form es un WPF, pero por algún motivo que desconozco lo tengo deshabilitado y no puedo usarlo...



¿Alguna idea de porqué no puedo acceder al control?

¿Como podría usar FolderBrowserDialog en ese botón si no puedo acceder a él?, Pues he visto infinitos ejemplos y no he conseguido hacerlo por mi mismo.

Necesito usar el folderbrowser nativo de windows, no me sirve otro (Son muy malos visual e interactivamente hablando), o en su defecto poder hacer este openfiledialog para mostrar/abrir/seleccionar solamente carpetas si fuera posible?:

Código (VB) [Seleccionar]
   Private Sub Button_Click_1(sender As Object, e As RoutedEventArgs)

       Dim dlg As New Microsoft.Win32.OpenFileDialog()
       Dim result As Nullable(Of Boolean) = dlg.ShowDialog()

       If result = True Then
           Dim path As TextBox = DirectCast(TryCast(DirectCast(sender, FrameworkElement).Parent, FrameworkElement).FindName("textPath"), TextBox)
           TextBox1.Text = dlg.FileName
           DirectCast(sender, Button).Focus()
       End If

   End Sub


Gracias por leer.
#832
Hola,

Tengo un problema, no se como puedo bindear una variable, estoy intentando modificar el texto por defecto de un textbox...

PD: Es un WPF.


En el form del mainwindow:

Código (vb) [Seleccionar]
Public Sub Button_Click_2(sender As Object, e As RoutedEventArgs)

   Dim usbmon_path As String
   usbmon_path = System.IO.Directory.GetCurrentDirectory & "\USB MON"

   Dim W2 As New Window2
   W2.Show()

End Sub


(Eso crea la variable usbmon_path, y abre el "window2", bien)



en el window2.xaml::

Código (XML) [Seleccionar]
<TextBox ..blabla...  Text="{Binding usbmon_path}"  ...blabla/>



No me sale ningún error, pero el texto sale vacío, ¿Que estoy haciendo mal?

gracias por leer!
#833
Hola,

Este es mi primer programa en VisualStudio2012, así que no me critiqueis mucho xD, he intentado hacerlo lo mejor posible, y es un programa muy sencillo :P



Resubidos:
Descarga:  http://elektrostudios.tk/MouseXY.exe
Source: http://elektrostudios.tk/MouseXY.zip

Acepto consejos, o lo que séa!

un saludo
#834
Hola,

Estoy aprendiendo este lenguaje y ya tengo mi primera app creada, pero me falta un detalle que no consigo, poder mover la ventana del form con "borderstyle=none"

He buscado en google pero solo encuentro referencias antiguas para VB y VS2005, y no he sabido como acoplarlas a mi app la verdad, siempre me da error de "hWND".

¿Alguien me hecha una mano?

Código (vb) [Seleccionar]
Public Class Form1
   Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
       Label2.Text = "X: " & MousePosition.X
       Label3.Text = "Y: " & MousePosition.Y
   End Sub

   Sub Form1_KeyPress(ByVal sender As Object, _
     ByVal e As KeyPressEventArgs) Handles Me.KeyPress
       If e.KeyChar >= ChrW(3) Then
           Clipboard.SetDataObject(Label2.Text & " " & Label3.Text)
       End If
   End Sub

   Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs)
       ' SUPONGO QUE ESTE ES EL EVENTO CORRECTO PARA MI PROPÓSITO...
   End Sub
End Class


Un saludo!
#835
    EL TUTORIAL Y EL ÍNDICE ESTÁN EN PROCESO...






    ÍNDICE

    Pincha en un tema para ir directamente.

    • Página 1

    • 1. DEFINICIONES

                  Lenguaje de programación
                  Procesamiento por lotes
                  Script
                  Comando
                  CMD (o Consola) (o Shell) (o DOS) (o Símbolo de sistema)
                  BATCH
                  Archivo BAT
                  CLI (CommandLineInterface)
                  Subrutina
                  Argumento (o Parámetro)
                  Variable
                  Variable de entorno de Windows
                  PATH (Variable de entorno de Windows)
                  String (o Cadena)
                  Concatenación
                  Expresión
                  Expresión regular (o REGEXP, o Patrón)
                  Operador
                  Pseudocódigo

    • 2. CONSEJOS ANTES DE COMENZAR

                  Defínemelo otra vez
                  Pregúntaselo a la CMD (Help, /?, -h, -help)
                  En busca del error
                  Productividad 1 (Editores de código)
                  Productividad 2 (Plantillas)
                  Práctica (Retos)
                  Ética

    • 3. LOS PRIMEROS PASOS

                  3.1 Una identidad (Title)[/li][/list]
                  3.2 La voz (Echo, Echo:, Echo+)
                  3.3 El silencio (@, Echo OFF, >NUL)
                  3.4 La escritura ("")
                  3.5 La lectura (REM)
                  3.6 Caminar (GOTO, Pause)
                  3.7 Memorizar (Set)

    • 4. OPERADORES

                  4.1 Operadores de Ejecución condicional   (& && ||)
                  4.2 Operadores de Ejecución condicional simulada  (&= ^= |=)
                  4.3 Operadores de Exclusión (^)
                  4.4 Operadores de Agrupación  ( () )
                  4.5 Operadores de comparación (o Condicionales) (== EQU NEQ LSS LEQ GTR GEQ)
                  4.6 Operadores de desplazamiento lógico (o Redireccionamiento) (> >> < |)
                  4.7 Operadores aritmétricos y de asignación (+ - * / % = += -= *= /= %= >>= <<=)
                  4.8 Otros operadores (@ :: "" % ! ? * . .. \)



    • 6. VARIABLES

                  6.1 Variables especiales (o variables de parámetro) (o variables de argumento)  (%0 %*)
                  6.2 Variables Standard (%%)  (SET, SET /A, SET /P)
                  6.3 Variables expandidas (!!)   (SETLOCAL ENABLEDELAYEDEXPANSION)
                  6.4 Variables de entorno (%%)
                  6.5 Variables de FOR  (%%a)


    compmaraciones
    búcles
    subrutinas
    • 5. SINTAXIS

    comandos
    #836
    Hola, estoy escribiendo un tutorial y me gustaría cambiar la fuente en una lista de texto por la fuente "Lucida Console" (Imagino que la fuente estará disponible) de este modo no habrá espacios entre las tabulaciones etc, vamos, que se verá bien y todo con su correcto margen entre cada letra como si usase la etiqueta "code" con esa lista, ese mismo margen entre las letras quiero...

    He probado así, pero no me funciona:
    [ font = Lucida Console ]Test[ /font ]
    [ font = Lucida_Console ]Test[ /font ]
    [ font = Lucida ]Test[ /font ]
    [ font = Lucon ]Test[ /font ]

    ¿Cual es el valor correcto que debo usar? :-/

    EDITO: una pregunta tonta... ¿el cambio solo afectaría a los que dispongan de la fuente lucida console, o de eso se encarga el server?

    Gracias!
    #837
    Software / Busco el ActiveTCL 8.5 u 8.4.4
    26 Octubre 2012, 09:05 AM
    Hola,

    ¿Alguien sabe donde encontrar EXACTAMENTE la versión estable 8.5.0 de Active TCL? o en su defecto la versión 8.4.4?...

    PD: Ya miré aquí: http://downloads.activestate.com/ActiveTcl/releases/

    Estaría muy agradecido.
    Saludos
    #838
    Un pequeño code que me he hecho para automatizar la instalación de muchas fuentes de texto TTF u OTF EN WINDOWS 7...
    Viene bien para ciertos casos así que aquí lo dejo por si alguien anda buscando algo parecido.

    (Versión 0.2)



    Código (dos) [Seleccionar]
    @ECHO OFF
    Mode con COLS=60 LINES=3
    TITLE Text Font Installer (By Elektro H@cker^) v0.2
    Nircmd win center ititle "Fuentes TrueType" 2>NUL
    COLOR 07

    :: Modo de instalación normal
    REM Instalador.bat
    :: Modo de instalación recursiva
    REM Instalador.bat -R

    Takeown /F "%SystemRoot%\Fonts" >NUL
    Icacls "%SystemRoot%\Fonts" /Grant "%USERNAME%":(F) >NUL
    Attrib -R -S "%SystemRoot%\Fonts" >NUL

    IF /I "%~1" EQU "-R" (Set "DIR_RECURSIVE=/S" & Set "FOR_RECURSIVE=/R")

    For /F %%X in ('Dir /B %DIR_RECURSIVE% "*.OTF"; "*.TTF" ^| FIND /V /C ""') Do (SET "Total=%%X")

    For %FOR_RECURSIVE% %%# in (*.otf; *.ttf) DO (
    Set /A "Counter+=1"
    IF /I "%%~x#" EQU ".OTF" (Call SET "Font_Type=OpenType") ELSE (Call SET "Font_Type=TrueType")
    CALL Echo: Instalando fuentes de texto...  ( %%COUNTER%% de %%TOTAL%% ^)
    Echo: [+] %%~nx#
    CALL REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /V "%%~n# (%%Font_Type%%)" /D "%%~nx#" /F >NUL
    CALL REG ADD "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Fonts" /V "%%~n# (%%Font_Type%%)" /D "%%~nx#" /F >NUL
    COPY /Y "%%#" "%SystemRoot%\Fonts\" >NUL
    )

    Echo+
    Echo: Las fuentes de texto se han instalado!
    Timeout /T 3
    Exit




    Versión alternativa del script (Se reduce el molesto efecto del borrado de pantalla, pero la ventana queda más pequeña, menos bonita xD)
    Código (dos) [Seleccionar]
    @ECHO OFF
    Mode con COLS=60 LINES=5
    TITLE Text Font Installer (By Elektro H@cker^) v0.2
    Nircmd win center ititle "Fuentes TrueType" 2>NUL
    COLOR 07

    :: Modo de instalación normal
    REM Instalador.bat
    :: Modo de instalación recursiva
    REM Instalador.bat -R

    Takeown /F "%SystemRoot%\Fonts" >NUL
    Icacls "%SystemRoot%\Fonts" /Grant "%USERNAME%":(F) >NUL
    Attrib -R -S "%SystemRoot%\Fonts" >NUL

    IF /I "%~1" EQU "-R" (Set "DIR_RECURSIVE=/S" & Set "FOR_RECURSIVE=/R")

    For /F %%X in ('Dir /B %DIR_RECURSIVE% "*.OTF"; "*.TTF" ^| FIND /V /C ""') Do (SET "Total=%%X")

    For %FOR_RECURSIVE% %%# in (*.otf; *.ttf) DO (
    Set /A "Counter+=1"
    IF /I "%%~x#" EQU ".OTF" (Call SET "Font_Type=OpenType") ELSE (Call SET "Font_Type=TrueType")
    Echo+
    CALL Echo: Instalando fuentes de texto...  ( %%COUNTER%% de %%TOTAL%% ^) | MORE
    Echo: [+] %%~nx#
    CALL REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /V "%%~n# (%%Font_Type%%)" /D "%%~nx#" /F >NUL
    CALL REG ADD "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Fonts" /V "%%~n# (%%Font_Type%%)" /D "%%~nx#" /F >NUL
    COPY /Y "%%#" "%SystemRoot%\Fonts\" >NUL
    CLS
    )

    Echo+
    Echo: Las fuentes de texto se han instalado!
    Timeout /T 3
    Exit


    Saludos
    #839
    ISHACK v1.4
    An Imageshack commandline uploader.

    By Elektro H@cker.








    Modo de empleo:
    IShack (Opciones) (Archivo)


    Ejemplos:


    IShack -d Imagen.jpg
    (Devuelve el enlace directo de la imagen)

    IShack -d "C:\Imagen1.bmp" "C:\Imagen2.jpg" "C:\Imagen3.png"
    (Devuelve el enlace directo de varias imagenes)

    IShack --private -b -h "C:\Imagen.jpg"
    (Marca la imagen como privada, y devuelve el enlace BB y HTML de la imagen)

    IShack --resize 640x480 -d Imagen1.jpg Imagen2.bmp
    (Redimensiona las imagenes a XxY y devuelve el enlace directo)

    IShack --config
    (Muestra el menú de configuración de cuenta de acceso)
    .



    Opciones:
    -d  --direct
       Devuelve el enlace directo de la imagen.

    -t  --thumb
       Devuelve el enlace directo de la miniatura de la imagen.

    -b  --bbcode
        Devuelve el enlace de la imagen en formato BB.

    -bt --bbcodethumb
        Devuelve el enlace de la imagen con miniatura en formato BB.

    -h  --html
        Devuelve el enlace de la imagen en formato HTML.

    -ht --htmlthumb
        Devuelve el enlace de la imagen con miniatura en formato HTML.

    -i --imageshack
        Devuelve el enlace web de la imagen en imageshack.

    -y  --yfrog
        Devuelve el enlace web de la imagen en YFrog.

    -yt  --yfrogthumb
        Devuelve el enlace de la miniatura de la imagen en YFrog.

    -a  --all
        Devuelve el enlace de la imagen en todos los formatos.

    -p  --private
        Marca la imagen como privada.

    -r  --resize
        Redimensiona la imagen.

    -c  --config
        Establece los datos de acceso a una cuenta de ImagesHack.

    /?   Muestra esta ayuda.








    Cambios en la versión 1.4

    • El script ahora comprueba si el usuario/pass existe en Imageshack.
    • Añadida una opción para redimensionar la imagen subida.
    • Eliminada la opción para marcar la imagen como "pública", pues era innecesaria.
    • Añadido un switch alternativo ("-p") para la opción "--private".

    Cambios en la versión 1.3
    Corregido un error de última hora en los switches yes/no de la privacidad de la imagen, estaban al revés xD.

    Cambios en la versión 1.2


    • Un cambio de nombre, ahora es ISHACK      ...xD
    • El programa ahora acepta más de una opción de formato al mismo tiempo
               (Antes solo se podía usar uno de los parámetros, ahora se pueden elegir los formatos deseados)


    • Se puede subir más de un archivo simultaneamente.
    • Opcion añadida para poder marcar la imagen como pública o privada
    • Más opciones de formato añadidas pudiendo obtener los siguientes enlaces:
               bb code thumbnail
               html thumbnail
               imageshack web
               yfrog web
               yfrog web thumbnail


    • Se genera automáticamente un código de miniaturas aunque Imageshack no cree la miniatura.
    • Los datos de acceso de la cuenta de ImagesHack se almacenan (cifrados) en el registro de Windows.
    • Pequeños cambios internos en el código, se ha simplificado y mejorado un poco dentro de lo que me ha sido posible. (No soy un PRO de Ruby :P)

    ERRORES CORREGIDOS:

    • Si la imagen es demasiado pequeña ImagesHack no devuelve una miniatura pero ya no da error.
    • Corregida la información de los formatos compatibles (ICO no es soportado por Imageshack)

    Cambios en la versión 1.1


    • Se puede configurar para subir las imagenes anónimamente o a una cuenta
    • Se comprueba si la imagen se subió correctamente
    • La obtención de la imagen en BB code link se ha modificado quitandole el tag [ URL ]
    • El código del script se ha simplificado y mejorado un poco...




    DESCARGAS:

    SHACK.exe (El script compilado, nada más): http://exoshare.com/download.php?uid=RR0ZEMGX

    SHACK.exe (Instalador personalizado para windows que añade opciones al menú contextual...): http://exoshare.com/download.php?uid=1PPR9PPT





    ISHACK.rb (v 1.4):
    Código (ruby) [Seleccionar]

    # -*- coding: UTF-8 -*-


    require 'rest_client'
    require 'openssl'
    require 'win32/registry'


    exit if Object.const_defined?(:Ocra)


    $formats = ""
    $files   = ""


    def logo()
     print "
     @    @@                          
         @  @  @    *             *    
     @   @     @  *    @@@  * @@@   @   @ *
    *@    @  * @     *    @  @ * @  @  @
     @   * @   @ @@       @  @      @ @
     @*     @  @@ *@   @@@@  @  *   @@  *
     @  @ * @  @   @  @ * @  @      @ @
    *@  @  @   @   @  @   @  @ * @  @* @
     @   @@    @ * @   @@@@   @@@   @   @

                                   v1.4
                                   By Elektro H@cker\n"
    end


    def help()
    print '
    [Modo de empleo]

    IShack (Opciones) (Archivo)



    [Ejemplos]

    [+] IShack -d Imagen.jpg
        Devuelve el enlace directo de la imagen.

    [+] IShack -d "C:\Imagen1.bmp" "C:\Imagen2.jpg" "C:\Imagen3.png"
        Devuelve el enlace directo de varias imagenes.

    [+] IShack --private -b -h "C:\Imagen.jpg"
        Marca la imagen como privada, y devuelve el enlace BB y HTML de la imagen.

    [+] IShack --resize 640x480 -d Imagen1.jpg Imagen2.bmp
        Redimensiona las imagenes a XxY y devuelve el enlace directo.

    [+] IShack --config
        Muestra el menú de configuración de cuenta de acceso.



    [Opciones]

     -d  --direct
         Devuelve el enlace directo de la imagen.

     -t  --thumb
         Devuelve el enlace directo de la miniatura de la imagen.

     -b  --bbcode
          Devuelve el enlace de la imagen en formato BB.

     -bt --bbcodethumb
          Devuelve el enlace de la imagen con miniatura en formato BB.

     -h  --html
          Devuelve el enlace de la imagen en formato HTML.

     -ht --htmlthumb
          Devuelve el enlace de la imagen con miniatura en formato HTML.

     -i --imageshack
          Devuelve el enlace web de la imagen en imageshack.

     -y  --yfrog
          Devuelve el enlace web de la imagen en YFrog.

     -yt  --yfrogthumb
          Devuelve el enlace de la miniatura de la imagen en YFrog.

     -a  --all
          Devuelve el enlace de la imagen en todos los formatos.

     -p  --private
          Marca la imagen como privada.

     -r  --resize
          Redimensiona la imagen.

     -c  --config
          Establece los datos de acceso a una cuenta de ImagesHack.

     /?   Muestra esta ayuda.

    '
    Process.exit
    end


    def arguments()

     # empty arguments
     if (ARGV.empty?) then help() end

     ARGV.each do |arg|

     # /?
       if arg == "/?" then help() end

     # -c --config
       if arg =~ /-c\z/i or arg =~ /--config\z/i then configure() end

     # private
       if arg =~ /-p\z/i or arg =~ /--private\z/i then $privacity = "no" end

     # -d --direct
       if arg =~ /-d\z/i or arg =~ /--direct\z/i then $formats=$formats + "\n-d" end

     # -t --thumb
       if arg =~ /-t\z/i or arg =~ /--thumb\z/i  then $formats=$formats + "\n-t" end

     # -b --bbcode
       if arg =~ /-b\z/i or arg =~ /--bbcode\z/i then $formats=$formats + "\n-b" end

     # -bt --bbcodethumb
       if arg =~ /-bt\z/i or arg =~ /--bbcodethumb\z/i then $formats=$formats + "\n-bt" end

     # -h --html
       if arg =~ /-h\z/i or arg =~ /--html\z/i then $formats=$formats + "\n-h" end

     # -ht --htmlthumb
       if arg =~ /-ht\z/i or arg =~ /--htmlthumb\z/i then $formats=$formats + "\n-ht" end

     # -i --imageshack
       if arg =~ /-i\z/i or arg =~ /--imageshack\z/i then $formats=$formats + "\n-i" end

     # -y --yfrog
       if arg =~ /-y\z/i or arg =~ /--yfrog\z/i then $formats=$formats + "\n-y" end

     # -yt --yfrogthumb
       if arg =~ /-yt\z/i or arg =~ /--yfrogthumb\z/i then $formats=$formats + "\n-yt" end

     # -a --all
       if arg =~ /-a\z/i or arg =~ /--all\z/i then $formats="\n-d"+"\n-t"+"\n-b"+"\n-bt"+"\n-h"+"\n-ht"+"\n-i"+"\n-y"+"\n-yt" end

     # -r --resize
    if arg =~ /-r\z/i or arg =~ /--resize\z/i
    $resize_switch = "1"
    $resize_size   = ARGV.to_s.split('"'+arg+'", "').last.split('"').first
    if not $resize_size[/^[0-9]{1,5}[x][0-9]{1,5}$/i]
    print "  [+] ERROR\n\n      La resolución \"#{$resize_size}\" no es correcta...\n"
    Process.exit
    end
    elsif arg =~ /-r\z/i or arg =~ /--resize\z/i
    $resize_switch = "0"
       print "hola"
       sleep 3
    end

     # files to upload
       if arg[/.bmp\z/i] or arg[/.gif\z/i] or arg[/.jpg\z/i] or arg[/.jpeg\z/i] or arg[/.png\z/i] or arg[/.tif\z/i] or arg[/.tiff\z/i]
         if File.exist?(arg)
           $files=$files + arg + "\n"
         elsif
           print "  [+] ERROR\n\n      La imagen #{arg} no existe...\n"
           Process.exit
         end
       end
     end # ARGV.each

     # empty options
     if $formats == ""
       print "  [+] ERROR\n\n      Opción incorrecta...\n"
       Process.exit
     end

    end


    def configure()
    $profile = "error id"
       print "\n Puede configurar su cuenta de acceso de ImagesHack para subir las imagenes...\n\n"

      until not $profile["error id"]
        print " [+] Escriba su nombre de usuario: "
      $user=STDIN.gets
      if $user == "\n" then $user="guest\n" end

      print " [+] Escriba su password: "
      $pass=STDIN.gets
      if $pass == "\n" then $pass="guest\n" end

      $profile = RestClient.post('http://imageshack.us/auth.php',
      :username => $user.gsub("\n",""),
      :password => $pass.gsub("\n",""),
      :format => "xml"
      )

      if $profile["error id"] and not $user+$pass=="guest\nguest\n"
      print "\n [+] ERROR\n\n     El nombre de usuario o contraseña son incorrectos.\n\n"
      elsif $user=="guest\n" and $pass=="guest\n"
      $profile="guest"
      end
      end # until
      userencrypted=cifrar($user, "DES-EDE3-CBC")
      passencrypted=cifrar($pass, "DES-EDE3-CBC")
      regwrite("USER", userencrypted)
      regwrite("PASS", passencrypted)
      puts "\n Datos configurados, vuelva a ejecutar el programa..."
      Process.exit
    end


    def cifrar(datos, cifrado)
     encrypt = OpenSSL::Cipher::Cipher.new(cifrado)
     encrypt.encrypt
     encrypt.update(datos) + encrypt.final      
    end


    def descifrar(datos, cifrado)
     decrypt = OpenSSL::Cipher::Cipher.new(cifrado)
     decrypt.decrypt
     decrypt.update(datos) + decrypt.final
    end


    def regwrite(keyname, value)
     Win32::Registry::HKEY_CURRENT_USER.create("SOFTWARE\\IShack\\") do |reg|
       reg[keyname, Win32::Registry::REG_SZ] = value
     end
    end


    def regread(keyname)
     Win32::Registry::HKEY_CURRENT_USER.open("SOFTWARE\\IShack\\") do |reg|
       reg[keyname]
     end
    end


    def subir(file)
     print "\n [ Subiendo la imagen #{file}... ]\n\n"

     begin
       $Imagen = RestClient.post('http://www.imageshack.us/upload_api.php',
       :a_username => $user,
       :a_password => $pass,
       :key        => "268BEKSV9465b858a45cd1b4d2b32d1195ee6f27",
       :public     => $privacity,
       :fileupload => File.new(file),
       :optimage   => $resize_switch,
       :optsize    => $resize_size)
     rescue
       print ' [+] ERROR

        El error puede ser debido a uno de los siguientes motivos:

        - La página esté offline.
        - El tamaño de la imagen supere los 10 MB.
        - Haya superado el límite de 500 imagenes hospedadas en su cuenta.
       '
     Process.exit
     end # exception
    end


    def show()
     if $Imagen["http://www.imageshack.us/thumbnail."] then $thumbs="no" end
     $nothumb = ' ImagesHack no creó ninguna miniatura. (La imagen es demasiado pequeña)' + "\n"

     direct = $Imagen.split("<image_link>").last.split("</image_link>").first.to_s
     thumb  = $Imagen.split("<thumb_link>").last.split("</thumb_link>").first
     b      = "[IMG]"+$Imagen.split("<image_bb>").last.split("</image_bb>").first.split("[IMG]").last.split("[/IMG]").first+"[/IMG]"
     bt     = $Imagen.split("<thumb_bb>").last.split("</thumb_bb>").first
     h      = $Imagen.split("<image_html>").last.split("</image_html>").first.gsub("&gt;", ">").gsub("&lt;", "<").gsub("&quot;", "\"")
     ht     = $Imagen.split("<thumb_html>").last.split("</thumb_html>").first.gsub("&gt;", ">").gsub("&lt;", "<").gsub("&quot;", "\"")
     i      = $Imagen.split("<is_link>").last.split("</is_link>").first
     y      = $Imagen.split("<yfrog_link>").last.split("</yfrog_link>").first
     yt     = $Imagen.split("<yfrog_thumb>").last.split("</yfrog_thumb>").first

     $formats.each_line do |link|
       if link.gsub("\n","") == "-d" then print " [+] DIRECTO:\n\n" + direct + "\n\n" end

       if link.gsub("\n","") == "-t"
         print " [+] MINIATURA:\n\n"
         if $thumbs=="no"
           print $nothumb + "\n" + direct + "\n\n"
         elsif
           print thumb + "\n\n"
         end
       end # thumbail

       if link.gsub("\n","") == "-b"  then print " [+] BB CODE:\n\n" + b + "\n\n" end

       if link.gsub("\n","") == "-bt"
         print " [+] BB CODE MINIATURA:\n\n"
         if $thumbs=="no"
           print $nothumb + "\n" + "[URL="+direct+"][IMG]"+direct+"[/IMG][/URL]"+"\n\n"
         elsif
           print bt + "\n\n"
         end
       end # bb thumbnail

       if link.gsub("\n","") == "-h"  then print " [+] HTML:\n\n" + h + "\n\n" end

       if link.gsub("\n","") == "-ht"
         print " [+] HTML MINIATURA:\n\n"
         if $thumbs=="no"
           print $nothumb + "\n" + '<a href="' + direct + '" target="_blank"><img src="' + direct + '" alt="Imagen subida con IShack v1.4 (By Elektro H@cker)" border="0"/></a>'+"\n\n"
         elsif
           print ht + "\n\n"
         end
       end # ht thumbnail

       if link.gsub("\n","") == "-i"  then print " [+] IMAGESHACK:\n\n" + i + "\n\n" end
       if link.gsub("\n","") == "-y"  then print " [+] YFROG:\n\n" + y + "\n\n" end
       if link.gsub("\n","") == "-yt" then print " [+] YFROG MINIATURA:\n\n" + yt + "\n\n" end
     end # |link|
    end



    logo()
    arguments()

    begin
     $user=regread("USER")
     $pass=regread("PASS")
     $user=descifrar($user, "DES-EDE3-CBC").gsub("\n","")
     $pass=descifrar($pass, "DES-EDE3-CBC").gsub("\n","")
    rescue
     $user="guest"
     $pass="guest"
    end
    $files.each_line do |file|
     subir(file.gsub("\n",""))
     show()
    end


    __END__

    #840
    Auto Music Converter es un script de uso personal para automatizar conversiones masivas de audio, a MP3 de "X" bitrate, en cualquier directorio simplemente pinchando click derecho sobre el mismo.

    SOLO ES COMPATIBLE CON WINDOWS 7 (x64)






    - Explicación detallada de para que sirve el script:

    Imaginemos que tenemos una carpeta (con o sin subcarpetas) llena de archivos de música, de distintos formatos y a distintos bitrates...

    Nosotros queremos que el bitrate general de esos archivos no supere por ejemplo los "192 kbps", osea, que en esa carpeta puedan haber archivos con bitrate inferior al indicado (192) PERO NO SUPERIOR AL INDICADO (192)...

    Entonces el script comparará el bitrate de todos los archivos en esa carpeta con el bitrate indicado, y si encuentra algún archivo con bitrate MAYOR al indicado (192), lo convertirá a MP3 con el bitrate indicado (192).

    PD: El script no afecta a archivos que tengan un bitrate inferior al indicado, ya que es una tontería convertir un archivo de bitrate inferior a superior...






    Auto Music Converter es la renovación de mi antiguo script Audio Bitrate Changer http://foro.elhacker.net/empty-t322340.0.html
    (Optimizado, simplificado, con más formatos soportados, y ahora es totálmente customizable)

    El script usa el convertidor por línea de comandos (coreconverter.exe) de dbPoweramp y aparte depende de los siguientes programas:

    • colous
    • FART
    • mediainfo
    • mp3gain
    • mp3val
    • nircmd

    Formatos soportados:

    • AIF/AIFF
    • APE
    • FLA/FLAC
    • M4A
    • MP3
    • OGG
    • W64
    • WAV
    • WMA
    • WV

    PD: Está todo incluido en el instalador y no hay que instalar nada de lo mencionado manualmente.






    - Explicación de las opciones más importantes del script:

    SET "MAX_BITRATE=192"
    Esto significa que el script buscará archivos que tengan bitrate MAYOR de 192, y si encuentra alguno MAYOR lo convertirá a MP3 de 192 bitrate.
    Se puede cambiar el valor por: 128 | 160 | 192 | 224 | 256 | 320

    Set "QUALITY=0"
    Indica la calidad de conversión del MP3. El valor máximo es 0, el mínimo 9.

    Set "BITRATE_MODE=--cbr"
    Indica el modo de bitrate. CBR = bitrate constante, ABR = Average bitrate, V = Variable bitrate.

    Set "Normalize=YES"
    Indica si se le aplicará una ganancia (no destructiva) al MP3. para desactivarlo escribir "NO"

    Set "GAIN=5"
    Indica la ganancia sobre 10 que se le aplica. el valor máximo es 10.
    5 equivale a 94 db en MP3Gain.





    - Algunas imagenes:
















    - DESCARGA:



    PD: El instalador crea un acceso directo en el menú inicio para modificar las opciones manualmente en el bloc de notas.





    - El script:

    Código (dos) [Seleccionar]
    @echo off

    :: ###############################
    :: #                             #
    :: #  Auto Music Converter v3.0  #
    :: #  A.   M.    C.              #
    :: #                             #
    :: ###############################
    ::
    :: By Elektro H@cker

    REM Este script busca archivos de audio que tengan un bitrate superior a "X" kbps y convierte esos archivos a formato MP3 de "X" kbps.
    REM
    REM Formatos soportados:
    REM AIF | AIFF | APE | FLA | FLAC | M4A | MP3 | OGG | W64 | WAV | WMA | WV

    :: ###################
    :: #                 #
    :: #  CONFIGURACIÓN  #
    :: #                 #
    :: ###################
    ::
    :: Script options
    ::
    SET "MAX_BITRATE=192" & REM 128|160|192|224|256|320
    ::
    Set "FORMATS=*.AIF;*.AIFF;*.APE;*.FLA;*.FLAC;*.M4A;*.MP3;*.OGG;*.W64;*.WAV;*.WMA;*.WV"
    Set "CONVERTED_PATH=%Temp%\BitrateChanger_PATH_%RANDOM%.txt"
    Set "INDEX=%Temp%\BitrateChanger_INDEX_%RANDOM%.txt"
    Set "LIST=%Temp%\BitrateChanger_LIST_%RANDOM%.txt"
    Set "RESUMEONERROR=YES"
    Set "AUTOEND=YES"
    Set /A "Num=0", "Rate=0", "Scanned=0"
    ::
    :: Encoder options
    ::
    Set "EFFECTS=-dspeffect1="Preserve Source Attributes" -dspeffect2="Delete Source File=" -dspeffect3="Delete Destination File on Error=""
    Set "PROFILE=slow"       & REM fast|normal|slow
    Set "QUALITY=0"          & REM (MAX) 0-9 (MIN)
    Set "BITRATE_MODE=--cbr" & REM --abr|-V (0-9)
    SET "CHANNELS=auto"      & REM mono|stereo|joint stereo|forced joint stereo|dual channels
    Set "PRIORITY=normal"    & REM idle|low|normal|high
    Set "OTHER=-noidtag --noreplaygain"
    ::
    :: Gain options
    Set "Normalize=YES"
    Set "GAIN=5"
    ::
    :: :: :: :: :: :: :: :: :: :: :: :: ::

    CALL :FILEEXIST "colous.exe"
    CALL :FILEEXIST "coreconverter.exe"
    CALL :FILEEXIST "mediainfo.exe"
    CALL :FILEEXIST "mp3gain.exe"
    CALL :FILEEXIST "mp3val.exe"
    CALL :FILEEXIST "nircmd.exe"

    :START
    Title "Auto Music Converter %CD%"
    Mode con cols=30 lines=3
    Color 07
    CD "%D%" >nul 2>&1
    DEL /Q "%LIST%" >nul 2>&1
    Echo+
    IF /I "%~1" EQU "RECURSIVE" (Set "RECURSIVE=/S")
    Colous writesec "[7] Buscando archivos"    & nircmd wait 300 & cls & echo+
    Colous writesec "[7] Buscando archivos."   & nircmd wait 300 & cls & echo+
    Colous writesec "[7] Buscando archivos.."  & nircmd wait 300 & cls & echo+
    Colous writesec "[7] Buscando archivos..." & nircmd wait 250

    :INDEX
    DIR /B %RECURSIVE% %FORMATS% 1> "%INDEX%" 2>NUL || (Goto :NOMUSIC)
    FOR /F %%# in ('Find /V /C "" ^< "%INDEX%"') do (set "TOTAL=%%#")

    :FIND_BITRATE
    Mode con cols=30 lines=3
    FOR /F "tokens=*" %%# in ('DIR /B %RECURSIVE% %FORMATS%') do (
    cls
    Echo+
    Call set /a scanned+=1
    Call Colous writesec "[7] Buscando archivos... [14]%%Scanned%%[7]/[14]%TOTAL%"
    IF "%MAX_BITRATE%" EQU "128" (mediainfo "%%#" "--Inform=General;%%BitRate%%" | FINDSTR "^129... ^1[3-9][0-9]... ^[2-9]..... ^[1-9]......"     >nul && (CALL :CONVERT "%%#"))
    IF "%MAX_BITRATE%" EQU "160" (mediainfo "%%#" "--Inform=General;%%BitRate%%" | FINDSTR "^16[1-9]... ^1[7-9][0-9]... ^[2-9]..... ^[1-9]......" >nul && (CALL :CONVERT "%%#"))
    IF "%MAX_BITRATE%" EQU "192" (mediainfo "%%#" "--Inform=General;%%BitRate%%" | FINDSTR "^19[3-9]... ^[2-9]..... ^[1-9]......"                 >nul && (CALL :CONVERT "%%#"))
    IF "%MAX_BITRATE%" EQU "224" (mediainfo "%%#" "--Inform=General;%%BitRate%%" | FINDSTR "^22[5-9]... ^2[3-9][0-9]... ^[3-9]..... ^[1-9]......" >nul && (CALL :CONVERT "%%#"))
    IF "%MAX_BITRATE%" EQU "256" (mediainfo "%%#" "--Inform=General;%%BitRate%%" | FINDSTR "^25[7-9]... ^2[6-9][0-9]... ^[3-9]..... ^[1-9]......" >nul && (CALL :CONVERT "%%#"))
    IF "%MAX_BITRATE%" EQU "320" (mediainfo "%%#" "--Inform=General;%%BitRate%%" | FINDSTR "^32[1-9]... ^3[3-9][0-9]... ^[4-9]..... ^[1-9]......" >nul && (CALL :CONVERT "%%#"))
    )
    Goto :END

    :CONVERT
    POPD
    PUSHD "%~dp1"
    Title "Auto Music Converter: %~nx1"
    Mode con cols=80 lines=25
    cls
    echo+
    FOR /F "tokens=*" %%%% in ('mediainfo "%~1" "--Inform=General;%%BitRate/String%%"') do (set "Rate=%%~%%")
    Colous writesec "[8]%~dp1"
    Echo+
    Colous writesec "[7] Archivo :[6] %~nx1"
    Colous writesec "[7] Bitrate :[6] %RATE:~0,-5% [8]>[2] %MAX_BITRATE%"
    Echo+
    Colous writesec "[8]________________________________________________________________________________"
    coreconverter.exe -infile="%~nx1" -outfile="%~n1.mp3" -convert_to="mp3 (Lame)" %EFFECTS% -encoding="%PROFILE%" -b %MAX_BITRATE% %BITRATE_MODE% --extracli="-q %QUALITY%" %OTHER% -channels="%CHANNELS%" -priority="%PRIORITY%" && set /a "num+=1" && Echo "%~nx1">> "%LIST%" || (CALL :ERROR "%~1")
    IF /I "%NORMALIZE%" EQU "YES" (
    Echo+
    Colous writesec "[2] Aplicando una ganancia de %GAIN%/10 al archivo..."
    mp3gain /c /r /d %GAIN% "%~n1.mp3" >nul 2>&1
    )
    Title "Auto Music Converter %CD%"
    DEL /Q "%temp%\%~nx1.txt" >nul 2>&1
    Mode con cols=30 lines=3
    GOTO:EOF

    :ERROR
    CLS
    MODE con cols=60 lines=9
    color 0c
    Title Auto Music Converter... ERROR "%~nx1"
    Echo+
    Colous writesec "[12] No se ha podido convertir el siguiente archivo:"
    Echo+
    Colous writesec "[8] %CD%\[14]%~nx1"
    IF /I NOT "%RESUMEONERROR%" EQU "YES" (PAUSE)
    Timeout /T 60
    Mode con cols=30 lines=3
    color 07
    IF /I "%~x1" EQU ".MP3" (
    mp3val "%~1" -f           >nul 2>&1
    DEL /Q "%~1.bak"          >nul 2>&1
    DEL /Q "%temp%\%~nx1.txt" >nul 2>&1
    CALL :CONVERT "%~1" || (GOTO:EOF)
    )
    GOTO:EOF

    :FILEEXIST
    IF NOT EXIST "%WINDIR%\System32\%~1" (
    color 0c
    Echo ERROR
    Echo Necesitas el programa %* para utilizar este script...
    Pause&Exit
    )
    GOTO :EOF

    :NOMUSIC
    mode con lines=3 cols=49
    Title Auto Music Converter... NO MUSIC
    echo+
    Colous writesec "[7] La carpeta no contiene archivos de audio."           & nircmd wait 500 & cls & echo+
    Colous writesec "[7] La carpeta no contiene archivos de audio.  [8]3..."  & nircmd wait 500 & cls & echo+
    Colous writesec "[7] La carpeta no contiene archivos de audio.  [8]2.."   & nircmd wait 500 & cls & echo+
    Colous writesec "[7] La carpeta no contiene archivos de audio.  [8]1."    & nircmd wait 500 & cls & echo+
    Colous writesec "[7] Bye.                                       [8]0"     & nircmd wait 500
    EXIT

    :END
    IF DEFINED RECURSIVE (Echo %D% > "%CONVERTED_PATH%") ELSE (CD > "%CONVERTED_PATH%")
    set Num2=%num%
    Set /a Num2+=11
    Title Auto Music Converter...
    If exist "%LIST%" (
    cls
    color 2
    echo+
    If %Num2% GEQ 40 (
    mode con cols=70 lines=44
    for /f "tokens=*" %%a in ('Type "%CONVERTED_PATH%"') do (Title %num% archivos convertidos. "%%a")
    FART.exe -q "%LIST%" \" --remove
    REM "
    sort "%LIST%" | MORE /E /C
    ) ELSE (
    mode con cols=70 lines=%num2%
    Echo+
    Colous writesec "[7] Se han convertido [10]%num%[7] archivo(s)..."
    Echo+
    for /f "tokens=*" %%a in ('Type "%CONVERTED_PATH%"') do (Colous writesec "[8] %%a\")
    Echo+
    FART.exe -q "%LIST%" \" --remove
    REM "
    sort "%LIST%"
    )
    DEL /Q "%LIST%"           >nul 2>&1
    DEL /Q "%CONVERTED_PATH%" >nul 2>&1
    DEL /Q "%INDEX%"          >nul 2>&1
    echo+
    Colous writesec "[7] Presiona una tecla para salir del programa..."
    IF /I NOT "%AUTOEND%" EQU "YES" (PAUSE & EXIT) ELSE (TIMEOUT /T 60)
    ) ELSE (
    mode con lines=3 cols=65 | MORE
    Colous writesec "[7] No se ha encontrado ningun audio superior a +%MAX_BITRATE% kbps."           & nircmd wait 500 & cls & echo+
    Colous writesec "[7] No se ha encontrado ningun audio superior a +%MAX_BITRATE% kbps.  [8]3..."  & nircmd wait 500 & cls & echo+
    Colous writesec "[7] No se ha encontrado ningun audio superior a +%MAX_BITRATE% kbps.  [8]2.."   & nircmd wait 500 & cls & echo+
    Colous writesec "[7] No se ha encontrado ningun audio superior a +%MAX_BITRATE% kbps.  [8]1."    & nircmd wait 500 & cls & echo+
    Colous writesec "[7] Bye.                                                    [8]0"     & nircmd wait 500
    DEL /Q "%CONVERTED_PATH%" >nul 2>&1
    DEL /Q "%INDEX%" >nul 2>&1
    )

    EXIT


    Que lo disfruten!
    #841
    Hola,

    El post de normas con chincheta creado por Novlucker no contiene ninguna norma, solo hace referencia a un link con seriales xD

    Y en el subforo de "Series - Películas - Música - Juegos - Programas" el post de normas creado por Isirius , este: https://foro.elhacker.net/series_peliculas_musica_juegos_programas/normas_de_este_subforo-t206062.0.html
    Está demasiado desactualizado, hace referencia a todo menos a los programas, supongo que las normas deben ser antes del cambio que se hizo para postear los programas...

    En fin, eso hace que algunas personas (Yo el primero :xD) acaben metiendo la pata!




    De paso aprovecho para consultar unas cosas que ya he intentado hablar con unos compañeros del foro pero no han podido confirmarmelo al 100%:

    1º - ¿Se puede postear software con copyright en la sección  "Series - Películas - Música - Juegos - Programas"? ¿O también afecta a ese subforo?
    2º - ¿Se puede postear una ISO o VHD de Windows en la misma sección?

    PD: Gracias de nuevo a los que ya saben que les consulté.  :P

    Y he visto que la sección Software se ha quedado sin moderador habitual, si necesitan ayuda con eso estaría encantado de colaborar moderando esa sección (Al mismo tiempo).

    Bueno, un saludo!
    #842
    Hola,

    Tengo una cantidad importante de software para compartir pero tengo la gran duda, ¿postear en "software" o en el subforo "programas"?,

    sé que el foro software está más orientado a preguntas sobre software, pero al ver este post de wolfbcn en esa sección pues me desconcierta si también está orientado a compartir soft:
    http://foro.elhacker.net/software/cdburnerxp_4423442_grabador_multiformato_y_gratuito_que_incluso_convierte-t371871.0.html

    Por lo que yo he visto (casi siempre), en el foro "Software" es donde más se comparten programas, y que yo sepa ningún moderador los mueve al subforo (que yo sepa), en cambio en el subforo "juegos-series-etc" solo comparten música y películas, muy, muy de vez en cuando algún programa.

    ¿Tiene mucha importancia si posteo en "Software"?
    Pregunto para no hacer las cosas mal :P

    un saludo!
    #843
    Quisiera conseguir el software de animación facial que han utilizado para hacer este video:

    [youtube=425,350]http://www.youtube.com/watch?v=73K1DbI7J64[/youtube]





    Al ver ese frame del video (Minuto 0:59), me da a pensar que han usado un simple programa (Shareware, por la publicidad) en el que insertas una pista de audio, el programa la analiza y el modelo mueve los labios... así que además de divertido sería sencillo de usar, al parecer.

    ¿Alguien sabe algo?
    ¿Alguien reconoce el programa por el modelo del chico o la chica?
    ¿Alguna recomendación sobre programas similares SENCILLOS?


    Gracias
    #844
    Hola,

    Necesito monitorizar una conexión que hace un programa durante solamente 1-2 segundos, por eso no me sirven programas como el "TCPView" o "Mooo connection watcher", que solo monitorizan las conexiones actuales... A mi no me da tiempo a verla.

    ¿Como lo puedo hacer?

    gracias
    #845

    Este script es un limpiador post-install de Windows 7 x64

    - ¿Que quiere decir esto?
    Cuando instalamos Windows 7 (sin modificar), Microsoft nos llena el sistema con sus florituras, miles y miles de archivos y carpetas extra:


    • Cursores, fuentes, Salvapantallas, temas de escritorio
    • Otros idiomas
    • Copias de seguridad
    • Sonidos, videos, y todo tipo de archivos multimedia
    • etc, etc, etc...

    Todo eso es conveniente eliminarlo para ayudar a agilizar/optimizar el sistema en diversos aspectos, como por ejemplo:

    • Al escanear con un antivirus
    • Al desfragmentar
    • Al clonar el disco duro
    • Al usar el buscador de Windows
    • Simplemente para obtener más espacio libre en el disco
    • etc...

    Y ese es el propósito de este script, limpiar y optimizar, quedarse con lo necesario de una instalación de Windows 7 y eliminar el resto, para siempre!.




    WSS es el sustituto de mi antiguo "Windows 7 Xtreme Cleaner" ( Para abreviar lo llamaré: W7XC ), el cual era al mismo tiempo un limpiador post-install y un limpiador de basura normal.
    Si alguien lo recuerda sabrá de que va la cosa: http://foro.elhacker.net/empty-t344097.0.html

    En comparación con W7XC, en WSS he eliminado por completo la función de limpiador de programas y basura que tenía W7XC, Porque disponiendo de CCleaner he podido trasladar la mayoría de cosas que eliminaba W7XC a una configuración de Inclusiones para el CCleaner (Si alguien la quiere, que me lo pida), entonces ya no me hace falta usar nunca más esa función lenta de W7XC.

    Así que he decidido suprimir el limpiador normal y profundizar en el limpiador post-install de W7XC y un reductor de la carpeta WINSXS, mejorandolo de arriba a abajo por completo empezando desde 0, simplificandolo, examinando manualmente las miles de carpetas de WINSXS, mucho trabajo, y este es el resultado, espero que os guste:






    - ¿Que es lo que limpia o puede limpiar WSS?

    Limpieza post-install:


      Limpieza de componentes activados:
      • Cliente de impresion en internet
      • Fax y scaner de Windows
      • Internet Explorer
      • Juegos de Windows
      • Puerto LPR
      • Servicios XPS
      • Tablet PC
      • Windows Media Center


        Limpieza de registro:
        • Claves de registro de esquemas de Cursores
        • Claves de registro de esquemas de sonido
        • Claves de registro de fuentes
        • Claves de registro del menu contextual (Nuevo > Archivo inutil)


          Limpieza de archivos:
          • Archivos multimedia BMP/GIF/JPG/PNG - AVI/MPG/MP4/WMV
          • Archivos temporales
          • Ayuda de Windows
          • Componentes de Windows (DVD Maker, Photoviewer, Window Mail, Wordpad, Write)
          • Cursores
          • Documentos publicos
          • Enlaces de "Enviar a..."
          • Enlaces de "Menu inicio"
          • Enlaces WEB
          • Fuentes (Menos las necesarias)
          • Gadgets
          • Idiomas
          • Licencias
          • Otros archivos
          • Salvapantallas
          • Sonidos
          • Temas de escritorio
          • Wallpapers

    Reducción de la carpeta WINSXS:


    • Copias de seguridad de Archivos de localizacion MUI
    • Copias de seguridad de Archivos multimedia BMP/JPG/PNG AVI/MPG/MP4/WMV
    • Copias de seguridad de Componentes de Windows
    • Copias de seguridad de Cursores
    • Copias de seguridad de Fuentes
    • Copias de seguridad de Gadgets
    • Copias de seguridad de Idiomas
    • Copias de seguridad de la Ayuda de Windows
    • Copias de seguridad de Manifiestos correspondientes a las otras copias elminadas
    • Copias de seguridad de Salvapantallas
    • Copias de seguridad de Service Pack 1
    • Copias de seguridad de Sonidos
    • Copias de seguridad de Temas de escritorio
    • Copias de seguridad de Wallpapers
    • Copias de seguridad temporales
    • Otras copias.




    Consejos de uso:

    • 1º - Instalar Windows 7 x64 de manera normal
    • 2º - Instalar las librerías necesarias, y las actualizaciones deseadas desde Windows Update (Y Reiniciar el PC para aplicar las actualizaciones!)
    • 3º - Usar Windows Seven Shrinker x64




    Sobre la limpieza normal tengo que decir que no es en ningún caso dañiña, pero es posible que prefieras mirar detalladamente los "componentes de windows" que se deshabilitan y los que se eliminan por completo en el script antes de usarlo si quizás no te interesa que se elimine uno en particular. Los que se eliminan los he nombrado arriba y los que se deshabilitan están en la configuración del script...

    Y sobre la reducción de la carpeta WINSXS, ES MUY IMPORTANTE entender los riesgos que puede conllevar una limpieza de la carpeta WINSXS ya que esto puede afectar de forma distinta dependiendo de las características de un PC.
    Es posible que no puedas instalar varias actualizaciones de Windows Update después de una limpieza de la carpeta WINSXS, por eso recomiendo instalarlas primero.

    NO ME HAGO RESPONSABLE EN NINGÚN CASO DE UN POSIBLE FALLO EN EL ENTORNO DE WINDOWS DESPUÉS DE UNA REDUCCIÓN DE LA CARPETA WINSXS CON ESTE SCRIPT





       

       




    DESCARGA

    El código pesa mucho, más de 1 MB y contiene casi 10.000 lineas de código,
    Todos los servicios online como "pastebin.com" son muy restrictivos, así que no me ha quedado más remedio que subirlo aquí:
    http://exoshare.com/download.php?uid=08ESJATX


    Un saludo.[/list][/list][/list]
    #846
    Las dudas más frecuentes sobre Batch suelen ser sobre la manipulación de texto, así que he creado esta rutina para que tengan esta pequeña ayuda.

    A diferencia del 99% de rutinas parecidas a esta, mi código respeta los caracteres especiales al no usar la expansión. Por contra, resulta más lento el proceso.

    - ¿Que funciones tiene?

    • AÑADIR TEXTO AL PRINCIPIO DE UNA LÍNEA
    • AÑADIR TEXTO AL FINAL DE UNA LÍNEA
    • ELIMINAR UNA LINEA
    • INSERTAR UNA LINEA (VACÍA O CON TEXTO)
    • REEMPLAZAR UNA LINEA
    • REEMPLAZAR PALABRAS DE UNA LINEA
    • REEMPLAZAR PALABRAS EN TODAS LAS LINEAS
    • ELIMINAR LOS PRIMEROS "X" CARACTERES EN TODAS LAS LÍNEAS
    • ELIMINAR LOS ÚLTIMOS  "X" CARACTERES EN TODAS LAS LÍNEAS
    • CORTAR LAS PRIMERAS "X" LÍNEAS
    • CORTAR LAS ÚLTIMAS  "X" LÍNEAS

    Por ejemplo, para eliminar la linea 5 en un archivo de texto lo usariamos así:

    Call :TEXTMAN E 5 "Archivo.txt"

    Léanse la ayuda que está escrita dentro del código antes de usarlo.

    Espero que a alguien le sirva de ayuda.
    Saludos.




    Versión 0.2, corregido un fallo en la función de L-
    Versión 0.5

    @Echo OFF


    :: TEXT MANIPULATOR ROUTINE v0.5
    :: by Elektro H@cker


    REM SYNTAX:
    ::
    :: TEXTMAN [ACTION] [LINE(S)] [FILE] [TEXT]
    ::
    :: * [LINE(S)] parameter is Optional for some actions
    :: * [TEXT] parameter is Optional for some actions


    REM ACTIONS:
    ::
    ::  AB  = ADD_BEGINNING      * Add text to the beginning of a line.
    ::  AE  = ADD_ENDING         * Add text to the end of a line.
    ::  E   = ERASE              * Delete a line.
    ::  I   = INSERT             * Add a empty line (Or a line with text).
    ::  RL  = REPLACE_LINE       * Replace a entire line.
    ::  RS  = REPLACE_STRING     * Replace word from line.
    ::  RSA = REPLACE_STRING_ALL * Replace word from all lines.
    ::  C+  = CHARACTER_PLUS     * Delete the first "X" characters from all lines.
    ::  C-  = CHARACTER_LESS     * Delete the last  "X" characters from all lines.
    ::  L+  = LINE_PLUS          * Cut the first "X" amount of lines.
    ::  L-  = LINE_LESS          * Cut the last  "X" amount of lines.
    ::  GL  = GET_LINE           * Delete all except "X" line.
    ::  GR  = GET_RANGE          * Delete all except "X" range of lines.


    REM EXAMPLES:
    ::
    :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: ::
    ::                                                                         ::
    :: Delete the line 3                                                       ::
    :: Call :TEXTMAN E 3 "Test.txt"                                            ::
    ::                                                                         ::                                                                       
    :: Add a string to the beginning of line 3                                 ::
    :: Call :TEXTMAN AL 3 "Test.txt" "Elektro H@cker"                          ::
    ::                                                                         ::                                                                     
    :: Add a string to the end of line 3.                                      ::
    :: Call :TEXTMAN AR 3 "Test.txt" "Elektro H@cker"                          ::
    ::                                                                         ::                                                                       
    :: Add a empty line at line 3.                                             ::
    :: Call :TEXTMAN I 3 "Test.txt"                                            ::
    ::                                                                         ::                                                                       
    :: Add a line with a word at line 3.                                       ::
    :: Call :TEXTMAN I 3 "Test.txt" "Elektro H@cker"                           ::
    ::                                                                         ::   
    :: Replace the line 3 with "Elektro H@cker".                               ::
    :: Call :TEXTMAN RL 3 "Test.txt" "Elektro H@cker"                          ::
    ::                                                                         ::
    :: Replace the words "Elektro" to "H@cker" in line 3.                      ::
    :: Call :TEXTMAN RS 3 "Test.txt" "Elektro" "H@cker"                        ::
    ::                                                                         ::
    :: Replace the words "Elektro" to "H@cker" in all lines.                   ::
    :: Call :TEXTMAN RSA "Test.txt" "Elektro" "H@cker"                         ::
    ::                                                                         ::
    :: Delete the first 3 characters in all lines.                             ::
    :: Call :TEXTMAN C+ 3 "Test.txt"                                           ::
    ::                                                                         ::
    :: Delete the last 3 characters in all lines.                              ::
    :: Call :TEXTMAN C- 3 "Test.txt"                                           ::
    ::                                                                         ::
    :: Delete the first 3 lines.                                               ::
    :: Call :TEXTMAN L+ 3 "Test.txt"                                           ::
    ::                                                                         ::
    :: Delete the last 3 lines.                                                ::
    :: Call :TEXTMAN L- 3 "Test.txt"                                           ::
    ::                                                                         ::
    :: Delete all except the line number 3.                                    ::
    :: Call :TEXTMAN SL 3 "Test.txt"                                           ::
    ::                                                                         ::
    :: Delete all except the 3 to 9 range of lines.                            ::
    :: Call :TEXTMAN SR 3 9 "Test.txt"                                         ::
    ::                                                                         ::
    :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: ::


    :TEXTMAN
    (SET /A "A=0", "LINE=0", "TOTAL_LINES=0")  &  (CALL :%~1 %* || (ECHO Invalid parameter & Exit /B 1)) & (GOTO:EOF)
    :AB
    (For /F "tokens=1* delims=]" %%A in ('type "%~3" ^| find /n /v ""') DO (Call Set /A "LINE+=1" && (CMD /C "IF NOT "%%LINE%%" EQU "%~2" (if "%%B" EQU "" (Echo+>> "%~3.NEW") ELSE ((Echo %%B)>> "%~3.NEW")) ELSE (if "%%B" EQU "" ((Echo %~4)>> "%~3.NEW") ELSE ((Echo %~4%%B)>> "%~3.NEW"))"))) && (CALL :RENAMER "%~3") & (GOTO:EOF)
    :AE
    (For /F "tokens=1* delims=]" %%A in ('type "%~3" ^| find /n /v ""') DO (Call Set /A "LINE+=1" && (CMD /C "IF NOT "%%LINE%%" EQU "%~2" (if "%%B" EQU "" (Echo+>> "%~3.NEW") ELSE ((Echo %%B)>> "%~3.NEW")) ELSE ((Echo %%B%~4)>> "%~3.NEW")"))) && (CALL :RENAMER "%~3") & (GOTO:EOF)
    :E
    (For /F "tokens=1* delims=]" %%A in ('type "%~3" ^| find /n /v ""') DO (Call Set /A "LINE+=1" && (CMD /C "IF NOT "%%LINE%%" EQU "%~2" (if "%%B" EQU "" (Echo+>> "%~3.NEW") ELSE ((Echo %%B) >> "%~3.NEW"))"))) && (CALL :RENAMER "%~3") & (GOTO:EOF)
    :I
    (For /F "tokens=1* delims=]" %%A in ('type "%~3" ^| find /n /v ""') DO (Call Set /A "LINE+=1" && (CMD /C "IF     "%%LINE%%" EQU "%~2" (IF NOT "%~4" EQU "" ((Echo %~4) >> "%~3.NEW") ELSE (Echo+>> "%~3.NEW"))" & (if "%%B" EQU "" (Echo+>> "%~3.NEW") ELSE ((Echo %%B)>> "%~3.NEW"))))) && (CALL :RENAMER "%~3") & (GOTO:EOF)
    :RL
    (For /F "tokens=1* delims=]" %%A in ('type "%~3" ^| find /n /v ""') DO (Call Set /A "LINE+=1" && (CMD /C "IF NOT "%%LINE%%" EQU "%~2" (if "%%B" EQU "" (Echo+>> "%~3.NEW") ELSE ((Echo %%B)>> "%~3.NEW")) ELSE ((Echo %~4)>> "%~3.NEW")"))) && (CALL :RENAMER "%~3") & (GOTO:EOF)
    :RS
    (For /F "tokens=1* delims=]" %%A in ('type "%~3" ^| find /n /v ""') DO (Call Set /A "LINE+=1" && (CMD /C "IF NOT "%%LINE%%" EQU "%~2" (if "%%B" EQU "" (Echo+>> "%~3.NEW") ELSE ((Echo %%B)>> "%~3.NEW")) ELSE (CALL SET "STRING=%%B" &&     (if "%%B" EQU "" (Echo+>> "%~3.NEW") ELSE ((CALL ECHO %%STRING:%~4=%~5%%)>> "%~3.NEW")))"))) && (CALL :RENAMER "%~3") & (GOTO:EOF)
    :RSA
    (For /F "tokens=1* delims=]" %%A in ('type "%~2" ^| find /n /v ""') DO (CALL SET "STRING=%%B" && (if "%%B" EQU "" (Echo+>> "%~2.NEW") ELSE ((CALL ECHO %%STRING:%~3=%~4%%)>>"%~2.NEW")))) && (CALL :RENAMER "%~2") & (GOTO:EOF)
    :C+
    (For /F "usebackq tokens=*" %%@ in ("%~3") DO (Call Set   "LINE=%%@" && (CALL ECHO %%LINE:~%~2%% >>      "%~3.NEW"))) && (CALL :RENAMER "%~3") & (GOTO:EOF)
    :C-
    (For /F "usebackq tokens=*" %%@ in ("%~3") DO (Call Set   "LINE=%%@" && (CALL ECHO %%LINE:~0,-%~2%% >>   "%~3.NEW"))) && (CALL :RENAMER "%~3") & (GOTO:EOF)
    :L+
    (Call SET /A "A=%~2") && (Call TYPE "%~3" |@MORE +%%A%% > "%~3.NEW") && (CALL :RENAMER "%~3") & (GOTO:EOF)
    :L-
    (For /F "tokens=1* delims=]" %%A in ('type "%~3" ^| find /n /v ""') DO (CALL SET /A "TOTAL_LINES+=1")) & (CALL SET /A "TOTAL_LINES-=%~2-1") & (For /F "tokens=1* delims=]" %%A in ('type "%~3" ^| find /n /v ""') DO (Call Set /A "LINE+=1" & Call echo "%%LINE%%"|@FIND "%%TOTAL_LINES%%" >NUL) && (CALL :RENAMER "%~3" && GOTO:EOF) || (Echo %%B >> "%~3.NEW"))
    :GL
    (Call SET /A "A=%~2" && Call SET /A "A-=1") && (Call TYPE "%~3" |@MORE +%%A%% > "%temp%\getline.tmp") && (For /F "tokens=1* delims=]" %%A in ('type "%temp%\getline.tmp" ^| find /n /v ""') DO ((if "%%B" EQU "" (Echo+>> "%~3.NEW") ELSE ((Echo %%B)> "%~3.NEW"))) && ((CALL :RENAMER "%~3") & (GOTO:EOF)))
    :GR
    (For /F "tokens=1* delims=]" %%A in ('type "%~4" ^| find /n /v ""') DO (Call Set /A "LINE+=1" && (CMD /C "(IF "%%LINE%%" GEQ "%~2" IF "%%LINE%%" LEQ "%~3" (if "%%B" EQU "" (Echo+>> "%~4.NEW") ELSE ((Echo %%B)>> "%~4.NEW"))) && (IF "%%LINE%%" EQU "%~3" Exit /B 1)" || ((CALL :RENAMER "%~4") & (GOTO:EOF)))))

    :RENAMER
    (REN "%~1" "%~nx1.BAK") & (MOVE /Y "%~1.BAK" "%TEMP%\" >NUL) & (REN "%~1.NEW" "%~nx1") & (GOTO:EOF)
    #847
    Scripting / [BATCH] [APORTE] USB MON (Roba USB)
    27 Septiembre 2012, 12:55 PM

    - ¿Que es USB MON?

    USB MON (USB Monitor) es un programa portable con el fín de monitorizar los nuevos dispositivos extraibles que se conecten a un PC y copiar automàticamente su contenido a la carpeta de USB MON.

    USB MON no afecta a los dispositivos que ya se encuentren conectados a un PC en el momento que se ejecuta el programa.

    En pocas palabras, USB MON es un "roba USB" automàtico.

    - ¿USB MON es compatible con todas las versiones de Windows?

    USB MON ha sido testeado únicamente en Windows 7, pero no debería dar problemas en Windows XP y Vista.

    - ¿Como funciona USB MON?

    Al ejecutar USB MON se obtiene una lista de las letras de las unidades conectadas al equipo en ese momento, esas letras se descartan y se comienza a monitorizar el resto de letras en el equipo.
    (Por eso es conveniente los consejos de uso de USB MON)

    Cuando USB MON detecta un dispositivo extraible insertado en alguna de las letras monitorizadas, se buscan archivos en esa unidad y se copian a la carpeta del programa, excluyendo duplicados de archivos que se hayan copiado anteriormente de esa misma unidad.



    - ¿Los antivirus pueden detectar USB MON?

    En mi último escaneo online solo lo ha detectado 1 de 42 antivirus:

    DrWeb  BATCH.Virus
    Fecha: 2012-09-26




    PD: Más información importante en la ayuda extendida del script.


    Los parámetros opcionales del programa:

    Citar /?       | Muestra esta ayuda

    -ayuda   | Muestra la ayuda extendida

    -install | Instala USBMON en un dispositivo extraíble

    -test    | Inicia un test en un dispositivo extraíble


    USBMON.BAT
    LEER LA PARTE DE "CONFIGURACIÓN" SI QUIEREN PERSONALIZAR ALGUNA COSA.

    @Echo OFF

    Title USB MON v0.2
    REM By Elektro H@cker

    Setlocal enabledelayedexpansion
    Color 07

    :: :: :: :: :: :: :: ::
    ::                   ::
    ::   CONFIGURACIÓN   ::
    ::                   ::
    :: :: :: :: :: :: :: ::
    ::
    ::
    :: Directorio de inicio
    Set "DIR=%~d0"
    ::
    :: Directorio del log
    Set "LOGFILE=.\USBMON.log"
    ::
    :: Letras a monitorizar
    Set "DRIVES= B C D E F G H I J K L M N O P Q R S T U V W X Y Z "
    ::
    :: Letras hexadecimales (NO TOCAR)
    Set "DRIVES_HEX=A:1 B:2 C:4 D:8 E:16 F:32 G:64 H:128 I:256 J:512 K:1024 L:2048 M:4096 N:8192 O:16384 P:32768 Q:65536 R:131072 S:262144 T:524288 U:1048576 V:2097152 W:4194304 X:8388608 Y:16777216 Z:33554432"
    ::
    :: Ocultar unidades vacías en "MI PC"                (ACTIVAR / DESACTIVAR)
    Set "HideDrivesWithNoMedia=ACTIVAR"
    ::
    :: Ocultar la unidad de inicio de USB MON en "MI PC" (ACTIVAR / DESACTIVAR)
    Set "HideUSBMONDrive=DESACTIVAR"
    ::
    :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: ::

    REM Inicio del LOG
    Call :Logo
    Call :Write_Log >NUL
    Call :Write_Log -------------------- >NUL
    Call :Write_Log Iniciando USB MON... >NUL
    Call :Write_Log -------------------- >NUL
    Call :Write_Log >NUL

    REM Ocultar unidades vacías en "MI PC"
    REG Query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V "HideDrivesWithNoMedia" >NUL 2>&1 && (
    FOR /F "Tokens=3 Delims= " %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V "HideDrivesWithNoMedia" 2^>NUL') do (
      Set "Value=%%a"
    )) || (Set "Value=0x1")
    IF /I "%HideDrivesWithNoMedia%" EQU "ACTIVAR" (
    IF /I NOT "%Value%" EQU "0x0" (
    Call :Write_Log [+] Ocultando las unidades va´c¡as en MI PC...
    REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V "HideDrivesWithNoMedia" /T "REG_DWORD" /D "0" /F >NUL
    ) ELSE (
    Set "HideDrivesWithNoMedia="
    )
    )

    REM Ocultar la unidad de inicio de USB MON
    IF /I "%HideUSBMONDrive%" EQU "ACTIVAR" (
    REG QUERY "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /V "ShowDrive_%DIR::=%" >NUL 2>&1 && (SET "HideUSBMONDrive=") || (
    Call :Write_Log [+] Ocultando la unidad de USB MON en MI PC [%DIR%]...
    FOR %%# in (%DRIVES_HEX%) do (
    Echo %%# | FIND "%DIR%" >NUL && (
    Call SET "DIR_HEX=%%#"
    CALL REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /V "NoDrives" /T "REG_DWORD" /D "%%DIR_HEX:~2%%" /F >NUL
    )
    )
    )
    )

    REM Reinicia el proceso explorer.exe
    Echo " %HideDrivesWithNoMedia% , %HideUSBMONDrive% " | FINDSTR /I "\<ACTIVAR\>" >NUL && (
    START /W Taskkill /F /IM "explorer.exe" >NUL
    START /B explorer.exe
    Timeout /T 5 2>NUL || (Ping -n 5 localhost >NUL)
    )

    REM Para revertir los cambios para "Ocultar unidades vacías en "MI PC"" en el próximo reinicio del sistema
    IF /I NOT "%Value%" EQU "0x0" (REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /V "ShowDrivesWithNoMedia" /D "CMD /C REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V "HideDrivesWithNoMedia" /T "REG_DWORD" /D "1" /F >NUL" /F >NUL)
    REM Para revertir los cambios para "Ocultar la unidad de inicio de USB MON" en el próximo reinicio del sistema
    IF /I "%HideUSBMONDrive%" EQU "ACTIVAR" (REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /V "ShowDrive_%DIR::=%" /D "CMD /C REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /V "NoDrives" /F >NUL" /F >NUL)

    REM Inicia el servicio de Disco Virtual para poder usar Diskpart
    :SERVICE
    Call :Logo
    SC query "VDS" | FIND /I "PENDING" >NUL && (
    Call :Write_Log Hay una detenci£n pendiente del servicio de Disco virtual.
    Call :Write_Log Esperando a que el servicio pueda reanudarse para continuar...
    Timeout /T 5 2>NUL || (Ping -n 5 localhost >NUL)
    Goto :Service
    )
    SC query "VDS" | FIND /I "STOPPED" >NUL && (
    Call :Write_Log El servicio de Disco virtual est... detenido.
    Call :Write_Log Iniciando el servicio...
    sc config "VDS" start= "demand" >NUL 2>&1
    sc start "VDS" >NUL 2>&1 || (
    Call :Write_Log
    Call :Write_Log * ERROR CRÖTICO *
    Call :Write_Log No se pudo iniciar el servicio de Disco virtual, Compruebe sus permisos de usuario.
    Call :Write_Log Terminando el proceso...
    Exit /B 1
    )
    ) & (Call :Write_Log El servicio de Disco virtual se ha iniciado.)

    REM Parámetros
    IF    "%~1" EQU "/?"        (Goto :command_help)
    IF /I "%~1" EQU "-ayuda"    (Goto :extended_help)
    IF /I "%~1" EQU "-instalar" (Goto :install)
    IF /I "%~1" EQU "-test"     (Goto :test)

    REM Elimina archivos temporales de una sesión anterior
    DEL /Q "%WINDIR%\Temp\USBMON*" 2>NUL

    REM Elimina los discos fijos para la monitorizaci£n
    For /F "Tokens=3 delims= " %%# in ('Echo list vol ^| diskpart') DO (Set "DRIVES=!DRIVES: %%# = !")

    REM Elimina los dispositivos de DVD-ROM para la monitorizaci£n
    For %%# in (%DRIVES%) DO (fsutil fsinfo drivetype %%#: | FIND /I "ROM" >NUL && (Set "DRIVES=!DRIVES: %%# = !"))

    REM Monitoreo y auto-copiado
    :MONITOR
    Call :Logo
    Echo Unidad de origen: [%DIR%]
    Call :Write_Log Monitorizando unidades:!DRIVES!
    Echo+ & Call :Write_Log >NUL
    For /F "Tokens=3 delims= " %%# in ('Echo list vol ^| diskpart') DO (
    Echo "%DRIVES%" | FIND /I "%%#" >NUL && (
    For /F "Tokens=7,* delims= " %%A in ('Vol %%#: ^| FIND /I " %%# "') Do (
    IF "%%B" EQU "tiene etiqueta." (Set "LBL=Sin etiqueta") ELSE (Set "LBL=%%B")
    Call :Write_Log Hay un dispositivo conectado en la unidad [%%#:] con etiqueta "!LBL!"
    )
    Call :Write_Log  [+] Buscando archivos....
    DIR /B /A "%%#:\*" >NUL 2>&1 && (
    Call :Write_Log  [+] Copiando archivos de la unidad [%%#:] a la unidad [%DIR%]
    MKDIR "%WINDIR%\Temp" 2>NUL
    MKDIR "%DIR%\USBMON %COMPUTERNAME: =% [%%#] !LBL!" 2>NUL
    IF EXIST "%WINDIR%\Temp\USBMON_%COMPUTERNAME: =%_[%%#]_!LBL: =!_Lista.txt" (
    XCOPY /A /C /E /H /J /K /O /Q /X "%%#:\*" "%DIR%\USBMON %COMPUTERNAME: =% [%%#] !LBL!\" /EXCLUDE:%WINDIR%\Temp\USBMON_%COMPUTERNAME: =%_[%%#]_!LBL: =!_Lista.txt
    ) ELSE (
    XCOPY /A /C /E /H /J /K /O /Q /X /Y "%%#:\*" "%DIR%\USBMON %COMPUTERNAME: =% [%%#] !LBL!\"
    )
    DEL /Q "%WINDIR%\Temp\USBMON_%COMPUTERNAME: =%_[%%#]_!LBL: =!_Lista.txt" 2>NUL
    PUSHD "%%#:\"
    For /R %%a in (*) do (Echo %%a>>"%WINDIR%\Temp\USBMON_%COMPUTERNAME: =%_[%%#]_!LBL: =!_Lista.txt")
    POPD
    ) || (
    Call :Write_Log  [+] La unidad est... vac¡a...
    )
    )
    )
    )
    Timeout /T 10 2>NUL || (Ping -n 10 localhost >NUL)
    Goto :MONITOR

    :LOGO
    CLS
    ECHO+
    ECHO+                                                          .------.
    ECHO+      _   _  ____   ____       __  __   ___   _   _       ^| from-.-----.
    ECHO+     ^| ^| ^| ^|/ ___^| ^| __ )     ^|  \/  ^| / _ \ ^| \ ^| ^|      ^| that-^| -----^|
    ECHO+     ^| ^| ^| ^|\___ \ ^|  _ \     ^| ^|\/^| ^|^| ^| ^| ^|^|  \^| ^|      ^| -usb-^| to---^|
    ECHO+     ^| ^|_^| ^| ___) ^|^| ^|_) ^|    ^| ^|  ^| ^|^| ^|_^| ^|^| ^|\  ^|      ^| -----^| -my--^|
    ECHO+      \___/ ^|____/ ^|____/     ^|_^|  ^|_^| \___/ ^|_^| \_^|      '------^| drive^|
    ECHO+       By Elektro H@cker                                    v0.2 '------'                                        
    ECHO+
    GOTO:EOF

    :WRITE_LOG
    Echo %*
    Call Echo [%DATE%] [%TIME: =%] %* >> "%LOGFILE%"
    GOTO:EOF

    :INSTALL

    Call :Logo
    Set "Extraibles="
    For /F "Tokens=3 delims= " %%# in ('Echo list vol ^| diskpart ^| FIND /I "xtra"') DO (Set "Extraibles=!Extraibles! %%#")
    Echo Dispositivos extraibles conectados:!Extraibles! | MORE
    Echo Escribe la letra del dispositivo donde se instalar... USB MON...
    Set /P "DriveDest=>> "
    If Not exist "%DriveDest%:" (Goto :Install) ELSE (Copy /Y %0 "%DriveDest%:\USBMON.bat" >NUL)
    Call :Logo
    Echo Unidad seleccionada: [%DriveDest%:] | MORE

    COPY /Y "%CD%\%0.BAT" "%DriveDest%:\%0.BAT" >NUL

    Choice /M "¨Quiere crear un autorun.inf?"

    If "!ERRORLEVEL!" EQU "1" (
    Choice /M "¨Quiere que USBMON se ejecute en modo oculto?"
    If "!ERRORLEVEL!" EQU "1" (
    Set "EXT=vbs"
    (
    Echo Set wshShell = CreateObject("WScript.Shell"^)
    Echo wshShell.run """" ^& ".\%0.BAT" ^& """", 0
    )>"%DriveDest%:\%0.vbs"
    ) ELSE (
    Set "EXT=bat"
    )
    (
    Echo [autorun]
    Echo open=%0.!EXT!
    Echo shell\USBMON=Ejecutar USB MON
    Echo shell\USBMON\command=%0.!EXT!
    Echo shell=USBMON
    )>"%DriveDest%:\autorun.inf"
    )
    Call :Logo
    Echo Gracias por utilizar USB MON           :^) | MORE
    Pause&Exit /B 0

    :TEST
    Call :Logo
    Echo: Comenzando el test... | MORE
    Echo: [+] Buscando alguna unidad extra¡ble en el PC...
    Echo list vol | diskpart | FIND /I "xtra" >NUL || (
    Echo: * ERROR CRÖTICO *
    Echo: Porfavor inserta un dispositivo extra¡ble en el PC.
    Exit /B 1
    )
    For /F "Tokens=3 delims= " %%# in ('Echo list vol ^| diskpart ^| FIND /I "xtra"') DO (
    IF "%%#:" EQU "%DIR%" (
    Echo: * ERROR CRÖTICO *
    Echo: No debes ejecutar USB MON desde la unidad extra¡ble en este test.
    Exit /B 1
    )
    Echo: [+] Unidad extra¡ble encontrada [%%#:] | MORE
    Call :Write_Log Iniciando un test en la unidad [%%#:] >NUL
    Set "DRIVES= %%# "
    MKDIR "%WINDIR%\Temp" 2>NUL
    DEL /Q "%WINDIR%\Temp\USBMON_[%%#]*" 2>NUL
    )
    Echo: Se procede a monitorizar la unidad [%DRIVES: =%:]...
    Timeout /T 10 2>NUL || (Ping -n 5 localhost >NUL)
    Goto :Monitor

    :COMMAND_HELP
    call :Logo
    Echo: /?       ^^^| Muestra esta ayuda | MORE
    Echo: -ayuda   ^^^| Muestra la ayuda extendida | MORE
    Echo: -install ^^^| Instala USBMON en un dispositivo extra¡ble | MORE
    Echo: -test    ^^^| Inicia un test en un dispositivo extra¡ble | MORE
    Exit /B 0

    :EXTENDED_HELP
    Call :Logo
    Echo - ¨Que es USB MON?
    Echo   ________________ | MORE
    Echo: USB MON (USB Monitor) es un programa portable con el f¡n de monitorizar
    Echo: los nuevos dispositivos extraibles que se conecten a un PC
    Echo: y copiar autom...ticamente su contenido a la carpeta de USB MON. | MORE
    Echo: USB MON no afecta a los dispositivos que ya se encuentren conectados a un PC
    Echo: en el momento que se ejecuta el programa. | MORE
    Echo: En pocas palabras, USB MON es un "roba USB" autom...tico. | MORE
    Pause&Call :Logo

    Call :Logo
    Echo - ¨USB MON es compatible con todas las versiones de Windows?
    Echo   __________________________________________________________ | MORE
    Echo: USB MON ha sido testeado £nicamente en Windows 7,
    Echo: pero no deber¡a dar problemas en Windows XP y Vista. | MORE
    Pause&Call :Logo

    Echo - Consejos para un correcto uso de USB MON
    Echo   ________________________________________ | MORE
    Echo: Es conveniente ejecutar USB MON sin que hayan medios extraibles conectados
    Echo: en ese momento al PC, ya que esa letra de unidad quedar¡a descartada. | MORE
    Echo: Es NECESARIO ocultar las unidades vac¡as en MI PC. | MORE
    Pause&Call :Logo

    Echo - ¨Como funciona USB MON?
    Echo   _______________________ | MORE
    Echo: Al ejecutar USB MON se obtiene una lista de las letras de las unidades
    Echo: conectadas al equipo en ese momento, esas letras se descartan
    Echo: y se comienza a monitorizar el resto de letras en el equipo.
    Echo: (Por eso es conveniente los consejos de uso de USB MON^) | MORE
    Echo: Cuando USB MON detecta un dispositivo extraible insertado en alguna de las
    Echo: letras monitorizadas, se buscan archivos en esa unidad y se copian
    Echo: a la carpeta del programa, excluyendo duplicados de archivos
    echo: que se hayan copiado anteriormente de esa misma unidad. | MORE
    Pause&Call :Logo

    Echo - ¨Como funciona las opciones de "Ocultar unidades" de USB MON?
    Echo   _____________________________________________________________ | MORE
    Echo Ocultar unidades vac¡as en "MI PC":
    Echo: Se escribe una clave en el registro para ocultar las unidades visibles
    Echo: sin medios insertados. | MORE
    Echo Ocultar la unidad de inicio de USB MON en "MI PC":
    Echo: Se escribe una clave en el registro para ocultar la unidad desde
    Echo: donde se inicia USB MON. | MORE
    Echo: Los cambios efectuados se revierten en el pr¢ximo reinicio del sistema.| MORE
    Echo: Si alguna de las dos opciones está activada se reiniciará el proceso del
    Echo: explorer.exe, para que los cambios surgan efecto al instante. | MORE
    Pause&Call :Logo

    Echo - ¨Los antivirus pueden detectar USB MON?
    Echo   _______________________________________ | MORE
    Echo: En mi £ltimo escaneo online solo lo ha detectado 1 de 42 antivirus: | MORE
    Echo: DrWeb  BATCH.Virus
    Echo: Fecha: 2012-09-26 | MORE
    Pause&Call :Logo

    Echo - ¨Que es un autorun.inf?
    Echo   _______________________ | MORE
    Echo: Un autorun es un archivo de personalizaci¢n preconfigurado para USB/CD/DVD.
    Echo; Se puede personalizar el aspecto del dispositivo, y ejecutar un proceso. | MORE
    Echo: Un autorun es detectado por el servicio de Reproducci£n autom...tica de windows,
    Echo; La ejecuci¢n del autorun depende de que el servico est, habilitado en el PC. | MORE
    Echo: El servicio se puede habilitar desde la herramienta "Services.MSC". | MORE
    Pause&Call :Logo

    Echo - ¨Para que sirve la opci¢n "-instalar" de USB MON?
    Echo   _________________________________________________ | MORE
    Echo: Sirve para portabilizar el programa hacia una unidad extraible. | MORE
    Echo: La opci¢n est... pensada para ser instalada en un pendrive, as¡, con
    Echo: la ayuda de un autorun.inf, poder insertar el pendrive en otro equipo,
    Echo: y monitorizar ese equipo para copiar los otros medios EXTRAIBLES a tu pendrive. | MORE
    Pause&Call :Logo

    Echo - ¨Para que sirve la opci¢n "-test" de USB MON?
    Echo   _____________________________________________ | MORE
    Echo: Sirve para realizar una peque¤a prueba de monitorizaci¢n en una
    Echo: unidad extra¡ble aleat¢ria de tu PC. | MORE
    Echo: Es una prueba para ver si todo funciona con normalidad. | MORE
    Echo: PD: El test ha de cancelarse manualmente apretando "CTRL + C" o cerrando CMD. | MORE
    Pause&Call :Logo

    Echo - Cuando intento instalar USB MON con el autorun.inf no me funciona, ¨Porqu,?
    Echo   ___________________________________________________________________________ | MORE
    Echo Windows XP/Vista:
    Echo: El servicio de "Reproducci¢n autom...tica" debe estar activado en el equipo. | MORE
    Echo Windows 7:
    Echo: Microsoft deshabilit£ POR COMPLETO el uso de un autorun.inf en pendrives,
    Echo: La £nica manera de ejecutar un autorun.inf es disponer de un pendrive,
    Echo: que se haga pasar por un dispositivo de CD-ROM para auto-reproducirse. | MORE
    Echo: PD: Inf¢rmate en internet sobre el modelo de pendrive antes de adquirirlo. | MORE
    Pause&Call :Logo

    Echo - ¨Donde puedo conseguir m...s programas tuyos?
    Echo   ___________________________________________ | MORE
    Echo: No tengo ninguna web ni blog personal, pero puedes visitar www.elhacker.net | MORE
    Echo: All¡ encontrar...s m...s scripts £tiles de todo tipo usando el buscador del foro,
    Echo: Tambi,n me encontrar...s moderando la secci¢n de Scripting, donde siempre estar,
    Echo: dispuesto y encantado de resolver tus dudas. | MORE
    Pause&Exit/B 0




    Espero que les sirva de ayuda  ;D
    Comuniquen si existiera algún fallo en general o de compatibilidad con XP.

    Gracias.
    #848
    Tengo un problema con aplicaciones que tienen un manifiesto como este:

    programa.exe manifest
    Código (xml) [Seleccionar]
    ...
       <description>Programa.exe</description>
       <dependency>
    <dependentAssembly>
    <assemblyIdentity
    type="win32"
    name="Microsoft.Windows.Common-Controls"
    version="6.0.0.0"
    publicKeyToken="6595b64144ccf1df"
    language="*"
    processorArchitecture="x86"/>
    </dependentAssembly>
       </dependency>
    ...


    Uso Windows 7 x64 y este problema lo sufro desde hace unos años ya... pero ahora es cuando me afecta porque necesito usar 2 aplicaciones y no puedo ejecutarlas, me tiran error:



    Fotosizer es uno de los programas, y el otro es el Pop Art Studio.

    He intentado todo esto con el fotosizer:


    • Ejecutarlo el programa con compatibilidad en modo XP 2 y 3, a 256 colores, en fin, todas las opciones posibles.
    • Probar versiones más antiguas del programa. (El mismo error.)
    • Enviar correos al email de contacto de la aplicación (Sin respuesta)
    • Monitorizar las dll que carga el programa al ejecutarse (Parece que tengo todas las dll en orden)
    • Volver a registrar la OCX de microsoft y todas las DLL (Regsvr32 "C:\Windows\SysWOW64\MSCOMCTL.OCX")
    • Instalar "Microsoft Visual Basic 6.0 Common Controls" http://www.microsoft.com/en-us/download/details.aspx?id=10019
    • Reinstalar el visual basic 6.0 runtimes (Se supone que el fotosizer no usa más que eso y el MSCOMCTL.OCX)
    • Reinstalar framework 4.0, y TODOS los paquetes de "Microsoft Visual C++ runtimes" (Tanto x86 como x64)
    • Activar todos los servicios de Windows 7
    • Editar el manifes/eliminarlo
    • Varios reinicios entre reinstalaciones

    Por más que me esfuerzo en buscar una solución para esto y solventarlo, no puedo más!

    La causa del error la desconozco, pero me da la espina que tiene que ver con los controles de Microsoft, porque es lo que tienen en común los dos programas que no puedo abrir, el manifiesto, y estoy ya hasta las pelotas, con perdón, y en mi caso reinstalando Windows no va a funcionar por motivos.

    Espero que alguien que sepa sobre la matería pueda ayudarme a conseguir arreglar esto de una vez :(

    Muchas gracias!
    #849
    Necesito un programa del que no recuerdo el nombre, su función es monitorizar las dlls que necesita un programa para iniciarse, etc...

    Existe una versión x86 y otra x64 del programa.
    El programa es bastante conocido pero no lo encuentro por ningún lado.

    No me sirven otras alternativas como el "process explorer" ni ninguno parecido ya que no es lo mismo, en el programa que yo digo, eliges un archivo .exe para abrirlo y examinarlo aunque este exe no se pueda ejecutar en el sistema (Por un bug, un crash), por eso en el process explorer y otros me es imposible monitorizar ya que el exe en cuestión está bugeado, pero en el programa que comento se puede hacer a la perfección e incluso te resalta en color ROJO las dll's que faltan en el pc y las causantes de ese bug.

    Lo necesito urgentemente, espero que alguien pueda responderme!

    EDITO: ya lo encontré, era el "Dependency Walker"  ^^, no lo volveré a perder xD.

    saludos
    #850
    Busco un software que será del año 2000-2002 y básicamente servía para deformar las caras en las fotografías, tipo estirar la nariz o las orejas, ovular una zona... etc. creo que el soft se llamaba "Face dump pro" o algó parecido... Bueno, es un bastante anticuado pero los efectos quedaban bien la verdad xD, ¿Alguien sabe de que soft estoy hablando?

    Busco recomendaciones sobre aplicaciones similares para ese propósito, ya que prefiero hacerlo con un simple programa que consuma poco a tener que abrir photoshop...

    En resumen, Busco este tipo de software:

    - Software para deformar caras

    - Software para crear pop-art

    - Software para crear avatares


    - Software para crear mosaicos

    - Software para crear otro tipo de efectos divertidos

    Bueno, estaría muy agradecido si saben programas que hagan alguna de las cosas que pido.

    PD: No busco software para crear montajes (El típico software para insertar tu cara en una foto...), para eso ya tengo Photoshop.

    Saludos.
    #851
    ¿Alguien me puede explicar que sucede aquí?

    Si entro a este post (Cualquiera de las 3 páginas) http://foro.elhacker.net/windows/no_puedo_bajar_archivos_exe_con_windows_sin_firewall_sin_av-t340969.30.html

    Me sale esta inocente ventanita:


    ¿A que se debe? ¿Algún archivo compartido por otro user del post (por ejemplo la imagen de perfil) está causando eso? :S
    Bueno, lo comento por si resulta que al final fuese algo más grave que eso...
    Es raro

    EDITO: como yo imaginaba era la imagen de perfil de alguien, es la del usuario "SONIC88".
    Pues para que el comentario no haya sido en vano... voy a proponer que añadan esa url a la lista negra xD
    O aunque séa que le avisen a este usuario porque es muy molesto ver un post de SONIC88, pide user/pass cada segundo en cuanto cancelas la ventanita.


    un saludo
    #852
    Multimedia / Duda sobre OGG vorbis y Matroska codec
    21 Septiembre 2012, 11:20 AM
    Hola, cuando hablamos sobre descargar e instalar el codec de OGG Vorbis, nos referimos al pack de codecs "open codecs" de esta página?: http://xiph.org/dshow/

    Y para reproducir MKV, supongo que es totalmente necesario instalar el codec de Matroska? bien, de ser así, nos estamos refiriendo al pack de codecs CCCP de la página de matroska?: http://www.cccp-project.net/
    O tal vez lo que hay que instalar es el Haali Media Splitter?: http://haali.su/mkv/ Por lo que veo el haali también soporta el playback de OGG, ¿No?

    PD: Ya sé que todo esto sería más fácil instalando por ejemplo el K-lite codec pack... Pero quiero seguir los pasos de Songoku y elegir los codecs adecuado xD

    Saludos
    #853
    He visto estos últimos años a mucha gente preguntando como delimitar un texto para cortarlo en trozos, y generar los subarchivos delimitados, así que me he visto en la casi necesidad de crear esta función para ese propósito, así les será más fácil.

    @Echo OFF
    Title TEXTCUTTER [By Elektro H@cker]

    REM Call :TEXTCUTTER "ARCHIVO" "DELIMITADOR (A)" "DEIMITADOR (B)"

    :: Ejemplo
    Call :TEXTCUTTER "TEST.XML" "<fdaDeployJob" "</fdaDeployJob>"

    Pause&Exit

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    :TEXTCUTTER
    Echo # # # # # # # #
    Echo #             #
    Echo # TEXT CUTTER # by Elektro H@cker
    Echo #             #
    Echo # # # # # # # # | MORE

    Setlocal enabledelayedexpansion

    Set "FILE=%~nx1"
    SET "Delimiter_A=%~2"
    SET "Delimiter_B=%~3"

    :: Comprobaciones iniciales
    If Exist "%FILE%" (
    Echo # Procesar archivo : "%FILE%"
    Echo # Delimitar desde  : "%Delimiter_A%"
    Echo # Delimitar hasta  : "%Delimiter_B%" | MORE
    ) ELSE (Echo Archivo "%FILE%" no encontrado & GOTO:EOF)

    Type "%FILE%" | FIND "%Delimiter_A%" >NUL || (Echo No se ha encontrado ninguna cadena con el delimitador (A^): "%Delimiter_A%" & GOTO:EOF)
    Type "%FILE%" | FIND "%Delimiter_B%" >NUL || (Echo No se ha encontrado ninguna cadena con el delimitador (B^): "%Delimiter_B%" & GOTO:EOF)

    :: Creamos un archivo temporal y le agregamos X lineas en blanco para evitar errores en el SORT de Batch.
    REM Ajustamos el número de lineas a agregar para agilizar el proceso de generación de archivos.
    REM 100 lineas si el archivo original tiene menos de 100 lineas.
    REM 1.000 lineas si el archivo original tiene entre 100 y 999 lineas.
    REM 10.000 lineas si el archivo original tiene entre 1.000 y 9.999 lineas.
    REM 100.000 lineas si el archivo original tiene entre 10.000 y 99.999 lineas.
    REM 1.000.000 lineas si el archivo original tiene entre 100.000 y 999.999 lineas o más de 1.000.000 de lineas.
    For /F %%a in ('Type "%FILE%" ^| find /V /C ""') do (Echo %%a>"%TEMP%\%FILE%" & FOR %%? IN ("%TEMP%\%FILE%") DO (SET /A "longitud=%%~z? - 3"))
    Echo+ > "%TEMP%\%FILE%"
    IF "%LONGITUD%" LEQ "2" (Set /A "LINES=100")
    IF "%LONGITUD%" EQU "3" (Set /A "LINES=1000")
    IF "%LONGITUD%" EQU "4" (Set /A "LINES=10000")
    IF "%LONGITUD%" EQU "5" (Set /A "LINES=100000")
    IF "%LONGITUD%" GEQ "6" (Set /A "LINES=1000000")
    Echo Generando un archivo temporal, espere...
    For /L %%X in (2,1,%LINES%) Do (Echo+ >> "%TEMP%\%FILE%")

    :: Eliminamos las lineas en blanco del archivo original y copiamos el resto en el archivo temporal.
    Type "%FILE%" | FINDSTR "." >> "%TEMP%\%FILE%"

    :: Obtenemos el número de las lineas que contienen los delimitadores [A] y [B].
    For /F "Delims=:" %%X in ('findstr /I /N "%Delimiter_A%" "%TEMP%\%FILE%"') do (Set /A "NUM_A+=1" && Set "Delimiter_A_!NUM_A!=%%X")
    For /F "Delims=:" %%X in ('findstr /I /N "%Delimiter_B%" "%TEMP%\%FILE%"') do (Set /A "NUM_B+=1" && Set "Delimiter_B_!NUM_B!=%%X")

    :: Cortamos y generamos los archivos.
    Echo+ & Echo Generando los archivos, espere... | MORE

    For /L %%X in (1,1,%NUM_B%) Do (
    For /F "Tokens=* Delims=:" %%@ in ('Type "%TEMP%\%FILE%"') do (

    Set /A "LINE+=1"
    SET "String=%%@"

    IF NOT "!LINE!" GTR "!Delimiter_B_%%X!" (
    IF "!LINE!" GEQ "!Delimiter_A_%%X!" (
    IF NOT "!STRING!" EQU " " (
    ECHO !STRING!>> "%~n1_%%X_%~x1"
    )
    )
    )
    )
    Set /A "LIN_A=!Delimiter_A_%%X! - %LINES%", "LIN_B=!Delimiter_B_%%X! - %LINES%"
    Set /A "LINE=0"

    Echo [+] "%~n1_%%X_%~x1"
    Echo     (Linea !LIN_A! hasta Linea !LIN_B!^) | MORE
    )
    Setlocal disabledelayedexpansion

    Echo Listo.
    GOTO:EOF




    PD: Recuerden, así pueden ocultar la salida:
    Código (dos) [Seleccionar]
    Call :TEXTCUTTER "ARCHIVO" "DELIMITADOR (A)" "DEIMITADOR (B)" >NUL

    Espero que les séa de ayuda.
    Saludos.




    El archivo que he usado en el ejemplo:
    Test.XML
    Código (XML) [Seleccionar]
    ----------------------------------------------
    <fdaDeployJob xml:lang="es-ES">
     <fileInfo>
      <displayName>Plus_IMS_ARG_DDDLEG_002_A_20120801.ZIP</displayName>
      <description>DATOS AR_DDDPLUS Argentina Ambiente plus Agosto 2012 CLIENT SERVICE, IMSHEALTH
       <additionalInfo></additionalInfo>
       <loginRequired>0</loginRequired>
       <approved>1</approved>
       <emailNotification>1</emailNotification>
      <activeDate>2012/09/19</activeDate>
      <expirationDate>2012/10/30</expirationDate>
       <fileRule>
         <productRestrictions>
         </productRestrictions>
         <companyRestrictions>
         </companyRestrictions>
         <productCompanyRestrictions>
         </productCompanyRestrictions>
         <individualRestrictions>
          <individualEmail owner="1">aduran@ar.imshealth.com</individualEmail>  
          <individualEmail owner="0">mechenique@ar.imshealth.com</individualEmail>
         </individualRestrictions>
    <fileUploader> </fileUploader>
    </fileRule>
     </fileInfo>
    </fdaDeployJob>
    ----------------------------------------------  
    <fdaDeployJob xml:lang="en-EN">
     <fileInfo>
      <displayName>Plus_IMS_ELEKTRO_H@CKER.ZIP</displayName>
      <description>blablablabla
       <additionalInfo></additionalInfo>
       <loginRequired>0</loginRequired>
       <approved>1</approved>
       <emailNotification>1</emailNotification>
      <activeDate>2011/11/22</activeDate>
      <expirationDate>2011/11/22</expirationDate>
       <fileRule>
         <productRestrictions>
         </productRestrictions>
         <companyRestrictions>
         </companyRestrictions>
         <productCompanyRestrictions>
         </productCompanyRestrictions>
         <individualRestrictions>
          <individualEmail owner="1">www.elhacker.net</individualEmail>    
          <individualEmail owner="0">Elektro H@cker</individualEmail>
         </individualRestrictions>
    <fileUploader> </fileUploader>
    </fileRule>
     </fileInfo>
    </fdaDeployJob>
    ----------------------------------------------

    #854
    Hola,

    Para asociar un tipo de archivo a un programa se puede hacer fácilmente en esta ruta de registro:
    HKCR\SystemFileAssociations\.ext\...

    Bien, pero y si lo que quiero es asociar un único archivo, como por ejemplo este archivo?:

    org.jdownloader.settings.AccountSettings.accounts.ejs

    ¿Existe alguna forma de asociar un único archivo indiferentemente de la extensión del archivo? osea, asociar el nombre del archivo, no la extensión...

    PD: Uso windows 7

    Gracias.
    #855
    Hola,

    ¿Alguien conoce algún hosting gratis que no tenga la típica restricción de banear webs de phising? (O que tarden varios dias/semanas en banear)
    ¿Alguna recomendación en especial?

    Esta información me interesa para hacer unas pruebas educativas.

    Gracias por leer.