elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 ... 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 [624] 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 ... 1236
6231  Programación / Scripting / Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT en: 21 Noviembre 2014, 20:27 pm
Lo que comentas no fue un fallo, te expliqué que podías utilizar la aplicación SetACL para adquirir privilegios, con la aplicación RegIni puedes cambiar los permisos pero no el propietario, aunque si con cambiar los permisos te sirve para el caso entonces perfecto y no se hable más :P.

Donde si que cometí un fallo con las prisas es aquí, se me olvidó añadir la variable para eliminar las claves de forma dinámica:
Código:
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList"    /F
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithProgids" /F
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice"      /F

Cambialo por:
Código:
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%FileExtension%\OpenWithList"    /F
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%FileExtension%\OpenWithProgids" /F
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%FileExtension%\UserChoice"      /F

Me alegro de que te haya servido :)

Saludos, y no olvides modificar tu mensaje principal para utilizar el icono de resuelto si el tema está resuelto.
6232  Programación / .NET (C#, VB.NET, ASP) / Re: :) Aca de nuevo ---- Cerrar programa y liberar todas las variables en: 21 Noviembre 2014, 19:23 pm
Buenas

1) Muestra las declaraciones de dichas variables, y la parte del código donde accedes a esa variable esperando que sea "0".

2) ¿Ese es el único y principal Form de la aplicación?, ya que en tal caso estás terminando la aplicación correctamente.

Las variables (normales) solo existen durante la instancia del Form/Class donde se encuentren, y si ese es el Form principal entonces todo tipo de variable/objeto solo existe mientras la app esté en ejecución, es decir, si terminas la app y la vuelves a iniciar toda variable debería volver a su valor por defecto (ya sea este valor "0" o el valor que le asignaste por defecto),
de todas formas no se si ese es el Form principal o un Form secundarío ni si estás usando variables compartidas u otra cosa, así que prueba a utilizar el evento FormClosing para "resetear" las variables, aunque esto no es necesario en caso de que solo tengas un Form en tu aplicación:

Form1:
Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Shown(ByVal sender As Object, ByVal e As EventArgs) _
  4.    Handles MyBase.Shown
  5.  
  6.        Form2.Show()
  7.        Debug.WriteLine(String.Format("Valor de 'Var' despues de cargar el Form2: {0}", CStr(Form2.var))) ' 5
  8.  
  9.        Form2.Close()
  10.        Debug.WriteLine(String.Format("Valor de 'Var' despues de cerrar el Form2 de forma normal: {0}", CStr(Form2.var))) ' 5
  11.  
  12.        Form2.Close(resetVars:=True)
  13.        Debug.WriteLine(String.Format("Valor de 'Var' despues de cerrar el Form2 de forma alterna: {0}", CStr(Form2.var))) ' 1
  14.  
  15.    End Sub
  16.  
  17. End Class

Form2:
Código
  1. Public Class Form2
  2.  
  3.    ' Declaro e inicializo la variable con el valor por defecto "1".
  4.    Public Shared var As Integer = 1
  5.  
  6.    Private Sub Form2_Load(ByVal sender As Object, ByVal e As EventArgs) _
  7.    Handles MyBase.Load
  8.  
  9.        ' Cambio el valor de Var al cargar este Form.
  10.        var = 5
  11.  
  12.    End Sub
  13.  
  14.    Public Overloads Sub Close(ByVal resetVars As Boolean)
  15.  
  16.        If resetVars Then ' reseteo la variable a su valor or defecto.
  17.            var = 1
  18.        End If
  19.  
  20.        ' Llamo al método close de la clase base.
  21.        MyBase.Close()
  22.  
  23.    End Sub
  24.  
  25. End Class

PD: Otra cosa que puedes hacer (en caso de que sea un Form secundario) es utilizar el método Form.Dispose, con esto se liberan sus recursos.

Saludos
6233  Programación / Scripting / Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT en: 20 Noviembre 2014, 17:58 pm
A ver, lo he testeado en una instalación limpia (en una máquina vitual)

En un principio como ya te comenté, el método que yo tutilizo para modificar una asociación me funciona sin problemas (que es la misma metodología que utilizo en aquél Batch-Script),
sin embargo, la extensión PNG (al igual que JPG) son extensiones que ya están registradas por Windows... por defecto, veo varias referencias a alguna CLSID y otras cosas, y, aunque a mi me funcione cómo lo hago, puede que haya obviado algún detalle a tener en cuenta en ciertas circunstancias como las de tu equipo.

Prueba este método "forzoso", reseteando/eliminando las MRU:

Código
  1. Windows Registry Editor Version 5.00
  2.  
  3. [HKEY_CLASSES_ROOT\.png]
  4. @="MyAssoc.PNG"
  5. [HKEY_CLASSES_ROOT\MyAssoc.PNG]
  6. @="Imagen PNG"
  7. [HKEY_CLASSES_ROOT\MyAssoc.PNG\Shell\Open\Command]
  8. @="\"C:\\Windows\\System32\\mspaint.exe\" \"%1\""
  9.  
  10. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.png]
  11. @="MyAssoc.PNG"
  12. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyAssoc.PNG]
  13. @="Imagen PNG"
  14. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyAssoc.PNG\Shell\Open\Command]
  15. @="\"C:\\Windows\\System32\\mspaint.exe\" \"%1\""
  16.  
  17. [-HKEY_CLASSES_ROOT\.png\OpenWithProgIds]
  18. [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList]
  19. [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithProgids]
  20. [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice]

En Batch:
Código
  1. @Echo OFF
  2.  
  3. Set "FileExtension=png"
  4. Set "TypeName=MyAssoc.PNG"
  5. Set "FileDescription=Imagen PNG"
  6. Set "Application=C:\Windows\System32\mspaint.exe"
  7.  
  8. (
  9. REG ADD "HKCR\.%FileExtension%"              /V "" /D "%TypeName%"                /F
  10. REG ADD "HKCR\%TypeName%"                    /V "" /D "%FileDescription%"         /F
  11. REG ADD "HKCR\%TypeName%\Shell\Open\Command" /V "" /D "\"%Application%\" \"%%1\"" /F
  12.  
  13. REG ADD "HKLM\SOFTWARE\Classes\.%FileExtension%"              /V "" /D "%TypeName%"                /F
  14. REG ADD "HKLM\SOFTWARE\Classes\%TypeName%"                    /V "" /D "%FileDescription%"         /F
  15. REG ADD "HKLM\SOFTWARE\Classes\%TypeName%\Shell\Open\Command" /V "" /D "\"%Application%\" \"%%1\"" /F
  16. )1>NUL
  17.  
  18. (
  19. REG DELETE "HKCR\.%FileExtension%\OpenWithProgIds"                                                 /F
  20. REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithList"    /F
  21. REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\OpenWithProgids" /F
  22. REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice"      /F
  23. )1>NUL 2>&1
  24.  
  25. Pause&Exit

PD: Lo mismo para el formato JPG

Saludos
6234  Programación / .NET (C#, VB.NET, ASP) / Re: Pregunta tonta ;( mostrar en label en: 20 Noviembre 2014, 16:54 pm
¿que es Result2255 y que hace Count?

El objeto Result2255 es una colección genérica ( List(Of Integer) ), y por ende la propiedad Count ya sabes o ya te puedes hacer una idea de para que sirve:
http://msdn.microsoft.com/en-us/library/vstudio/bb919303%28v=vs.90%29.aspx

PD: No, no soy mago, es que cada semana surge un nuevo problema con las listas de luis456 xD.



Label1.Text = Result2255.Count.ToString()
me muestra la cuenta en cualquier parte del formulario y no dentro del lebel ???

En tu caso el problema solo puede ser uno de estos tres:

1) Tienes esa instrucción dentro de un bloque try/catch, y la instrucción no se llega a procesar.
2) Por un descuido sin darte cuenta estás borrando/limpiando el texto del Label después de esa instrucción.
3) El control no es visible, ya sea por que utiizaste la propiedad Control.Visible = False, o por que pusiste el Label detrás de otro control, o pones un contorl delante en tiempo de ejecución.
4) Estés intentando asignarle un texto de forma asíncrona al Label y nunca se llegua a procesar la instrucción.

En cualquier caso sin ver el código es imposible ayudar, pero eso te debería servir para encontrar el fallo... porque seguro que es una "tontería" como las que he comentado, revisa el code bien.

Saludos
6235  Programación / Scripting / Re: (Ayuda,) Cambiar asociaciones de JPG o PNG con un BAT en: 20 Noviembre 2014, 01:09 am
Creeme, esa clave de registro que te ha comentado tu compañero no es importante, solo almacena la elección del programa que haces en la lista de programas que te muestra Windows para abrir el archivo (Click derecho > Abrir con...), eso no tiene que ver con la asociación del archivo sino con tu elección favorita.
Aquellas claves que sí tienen que ver con la asociación son las que te expliqué, las claves que modifico en aquél Batch-Script.

EDITO: luego editaré este mensaje para proponerte alguna otra solución



De todas formas te explico el Error de acceso:
A lo que se deniega el acceso es al intento de modificación del registro, no tiene que ver con el archivo en si mismo, el archivo no está protegido;
ciertas partes del registro están protegidas por defecto al igual que ciertos archivos sensibles del sistema están protegidos, ambos necesitan adquirir privilegios para su modificación y/o eliminación (a pesar de que ya seas Administrador en el equipo, un Administrador no tiene privilegios sobre todo).

Puedes utilizar la aplicación SetACL para adquirir privilegios de forma automatizada sobre dicha clave: https://helgeklein.com/download/

Ejemplo, en Batch:
Código
  1. @Echo OFF
  2.  
  3. Set "RegKey=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice"
  4.  
  5. ".\SetACL.exe" -on "%RegKey%" -ot "reg" -ownr "n:%UserName%"        -rec "Yes" -actn "setowner" -silent
  6. ".\SetACL.exe" -on "%RegKey%" -ot "reg" -ace  "n:%UserName%;p:full" -rec "Yes" -actn "ace"      -silent

(o también puedes hacerlo de forma manual desde el regedit)

Después de eso ya podrás modificar/eliminar la clave en cuestión.

Saludos!
6236  Programación / .NET (C#, VB.NET, ASP) / Re: Aplicacion de descarga se pinza en: 20 Noviembre 2014, 00:27 am
Gracias por la respuesta elektro lo tendré en cuenta la verdad que con el doenvents se pinza tambien, pasado un rato se pinza, tendré que aprender a usar eso de threads, aunque cuantos deberái crear?

Solo un proceso hijo para que haga la descarga bastaría no? y no se pinzaría verdad?

O necesito varios, ¿qué garantías me dan los threads y cuantos he de usar?

Gracias.

No he visto el código que tienes y dependiendo de la situación/código recomiendo una cosa u otra, pero me hago una idea que debe ser un código bastante "tocho" donde haces peticiones a webs y procesas los source y tal así que creo que lo mejor en tu caso sería que arrastrases al Form un BackgroundWorker (solo uno) y utilices sus eventos para realizar la tarea del Web-Spider en segundo plano, tanto acceder a webs como la descarga.

Formas hay muchas, y te sirve por igual un Thread, Task, o BackgroundWorker, pero veo mucho más apto el BakgroundWorker en tu caso por que debes ir actualizando el estado de las descargas y tal en la UI (o eso pre-supongo sin haber visto el code), y el BakgroundWorkers te facilida esa tarea de "actualización" gracias a los eventos que dispone a los que puedes suscribirte.

¿Garantías?, lo que ocurra en segundo plano se queda en ese segundo plano, quiero decir que la UI (que es el thread principal) no se va a colapsar/colgar/laguear en ningún momento si elaboras bien el código, es decir, sin usar el For en el thread de la UI por que eso es lo que genera el colapso, lo que tengas que hacer hazlo en segundo plano.

Te sugiero leer ejemplos donde usen BakgroundWorkers para aprender su funcionamiento y no cometer errores, ya que no es cosa de 1 día y quizás no te salga como esperas a la primera:
http://lmgtfy.com/?q=codeproject+backgroundworker

PD: Y si estás usando .Net Framework 4.5 te puedes servir también de las "nuevas" declaraciones asíncronas:
Asynchronous Programming with Async and Await

Saludos!
6237  Programación / .NET (C#, VB.NET, ASP) / Re: Aplicacion de descarga se pinza en: 18 Noviembre 2014, 19:12 pm
Application.DoEvents();

En vb6 vale, pero hay mitos y leyendas sobre la instrucción "DoEvents" en .Net, es una solución al problema que tienes pero que acarraerá otro tipo de problemas en segundo plano... por ejemplo el "lag" al que te refieres ya que la instrucción "DoEvents" se procesa cada cierto tiempo dentro del búcle que hiciste, no es nada recomendable usar esa "técnica" ni siquiera como último recurso, más cuando tienes una multitud de alternativas que son las que debes utilizar.

Lo que te ocurre con la aplicación es lo más normal del mundo ya que es single-thread. La duda que tienes es debido a una falta de conocimientos y entendimiento sobre lo que estás haciendo, sobre un concepto muy importante de la proramación;
Debes aprender programación asíncrona, el uso del multi-threading:

BackgroundWorker Class (System.ComponentModel)
Thread Class (System.Threading) - MSDN
Task Class (System.Threading.Tasks) - MSDN


He probado a ponerle Thread.Sleep(10); pero nada sigue igual.

Esa instrucción precisamente debes evitar usarla, ya que sirve para detener la ejecución del thread actual... (es decir para "colgar" la app y dejarla sin respuesta)

En otras palabras, las tareas "intensivas" debes realizarlas en segundo plano (sub-threads) sí o sí para no colapsar/colgar el thread actual, no utilices DoEvents.

Saludos
6238  Programación / .NET (C#, VB.NET, ASP) / Re: EJECUTAR CMD EN APLICACIÓN .NET en: 18 Noviembre 2014, 18:35 pm
se me ocurre si hay alguna manera de que grabe los datos del textbox y por mas que se cierre y vuelva a abrir aparece con esos valores hasta que se cambie.

Hay muchas maneras de hacer eso, lo que más sencillo te resultará es utilizar la infrastructura de My.Settings.

Puedes crear la propiedad desde las opciones del proyecto, y luego acceder a dicha propiedad en tiempo de ejecución para guardar/cargar valores.

Es muy sencillo, pero lee un poco acerca de ello para enterarte:

Managing Application Settings
Using My.Settings in Visual Basic 2005
How to: Change User Settings in Visual Basic

Saludos
6239  Programación / Programación General / MOVIDO: Realizar una interfaz [Python] en: 18 Noviembre 2014, 00:52 am
El tema ha sido movido a Scripting.

http://foro.elhacker.net/index.php?topic=424866.0
6240  Programación / Scripting / Re: Realizar una interfaz [Python] en: 18 Noviembre 2014, 00:51 am
Lo que me interesa es que no salgan los 3 botones de minimizar, pantalla completa y la x de cerrar.

Para TKinter:
Código
  1. self.dlgWin.overrideredirect(1)
will remove all of the buttons (make a borderless window). Is that what you're looking for?

O...:
Código
  1. import Tkinter as tk
  2.  
  3. root= tk.Tk()
  4.  
  5. root.title("wm min/max")
  6.  
  7. # this removes the maximize button
  8. root.resizable(0,0)
  9.  
  10. # # if on MS Windows, this might do the trick,
  11. # # but I wouldn't know:
  12. # root.attributes(toolwindow=1)
  13.  
  14. # # for no window manager decorations at all:
  15. # root.overrideredirect(1)
  16. # # useful for something like a splash screen
  17.  
  18. root.mainloop()


PD: Las preguntas sobre lenguajes de Scripting van en su correspondiente sección...

Saludos!
Páginas: 1 ... 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 [624] 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 ... 1236
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines