|
8041
|
Programación / .NET (C#, VB.NET, ASP) / Re: Librería de Snippets !! (Posteen aquí sus snippets)
|
en: 13 Noviembre 2013, 06:23 am
|
Quiero compartir con ustedes este SystemMenu Manager, como su nombre indica, es un ayudante para manejar el SystemMenu, le añadi infinidad de métodos y el uso de eventos para manejar de forma sencilla los items que agreguemos... además lo he documentado todo muy bien, aunque me he dejado bastantes comentarios XML (es bastante tedioso), a pesar de las 1.600 lineas de código, aun le faltaría añadir bastantes métodos más, pero bueno, por el momento así está muy bien, espero que lo disfruten. Unas imágenes:    Un ejemplo de uso: ( Nótese que todos los métodos tienen su overload para utilizar una posición de item en lugar de un item predefinido. ) Public Class Form1 Private WithEvents SystemMenu As New SystemMenuManager(Me) Private Shadows Sub Shown() Handles MyBase.Shown ' Gets the total amount of menu items. ' MsgBox(SystemMenu.GetItemCount()) ' Sets the menu background color. SystemMenu.SetMenuBackColor(Color.Teal) ' Sets the menu style. ' SystemMenu.SetMenuStyle(SystemMenuManager.MenuStyle.AUTODISMIS) ' Sets the state of the Close button and menu item. ' SystemMenu.SetItemState(SystemMenuManager.Item.Close, SystemMenuManager.ItemState.Disabled) ' Sets the Bitmap image of the Move menu item. ' SystemMenu.SetItemBitmap(SystemMenuManager.Item.Move, New Bitmap("C:\File.png")) ' Gets the Bitmap image of the Move menu item. ' Dim bmp As Bitmap = SystemMenu.GetItemBitmap(SystemMenuManager.Item.Move) ' Removes the Bitmap image of the Move menu item. ' SystemMenu.RemoveItemBitmap(SystemMenuManager.Item.Move) ' Adds a separator at the bottom. SystemMenu.AddSeparator(SystemMenuManager.DefaultPositions.Last) ' Adds an item at the bottom. SystemMenu.AddItem("Hello World!", 666, SystemMenuManager.DefaultPositions.Last) ' Gets the ID of an item. ' MsgBox(SystemMenu.GetItemState(SystemMenuManager.Item.Move).ToString) ' Gets the text of an item. ' MsgBox(SystemMenu.GetItemText(SystemMenuManager.Item.Move)) ' Gets the state of an item. ' MsgBox(SystemMenu.GetItemState(SystemMenuManager.Item.Move).ToString) ' Sets the text of an item. ' SystemMenu.SetItemText(SystemMenuManager.Item.Move, "Muéveme") ' Checks if a handle is a menu handle. ' MsgBox(SystemMenu.IsMenuHandle(IntPtr.Zero)) ' Disable all the menu items. ' SystemMenu.DisableAllItems() ' Re-enable all the menu items. ' SystemMenu.EnableAllItems() ' Remove all the menu items. ' SystemMenu.RemoveAllItems() ' Restore the menu to defaults. ' SystemMenu.Restore_Menu() ' Dispose the SystemMenuManager Object. ' SystemMenu.Dispose() End Sub ' SystemMenu [MenuItemClicked] Private Sub SystemMenu_MenuItemClicked( ByVal MenuHandle As IntPtr, ByVal e As SystemMenuManager.ItemClickedEventArgs ) Handles SystemMenu.ItemClicked Dim sr As New System.Text.StringBuilder sr.AppendLine(String.Format("Item ID : {0}", CStr(e.ID))) sr.AppendLine(String.Format("Item Text : {0}", e.Text)) sr.AppendLine(String.Format("Item Type : {0}", e.Type.ToString)) sr.AppendLine(String.Format("Item State: {0}", e.State.ToString)) MessageBox.Show(sr.ToString, "SystemMenuManager", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub End Class
La Class la pueden ver en ESTE enlace de pastebin (no cabe en este post).
|
|
|
8044
|
Programación / .NET (C#, VB.NET, ASP) / Re: Librería de Snippets !! (Posteen aquí sus snippets)
|
en: 12 Noviembre 2013, 18:22 pm
|
Devuelve un Array con las ocurrencias que se encuentren de una Value en un Diccionario #Region " Match Dictionary Values " ' [ Match Dictionary Values ] ' ' // By Elektro H@cker ' ' Examples : ' ' MsgBox(Match_Dictionary_Values(New Dictionary(Of Integer, String) From {{1, "Hello World!"}}, ' "hello", False, StringComparison.CurrentCultureIgnoreCase).First.Value) Private Function Match_Dictionary_Values(Of K)( ByVal Value As String, ByVal MatchWholeWord As Boolean, ByVal IgnoreCase As StringComparison) As KeyValuePair(Of K, String)() If MatchWholeWord Then Return (From kp As KeyValuePair (Of K, String) In Dictionary Where String.Compare(kp.Value, Value, IgnoreCase) = 0).ToArray Else Return (From kp As KeyValuePair (Of K, String) In Dictionary Where kp.Value.IndexOf(Value, 0, IgnoreCase) > -1).ToArray End If End Function #End Region
Devuelve un Array con las ocurrencias que se encuentren de una Key en un Diccionario #Region " Match Dictionary Keys " ' [ Match Dictionary Keys ] ' ' // By Elektro H@cker ' ' Examples : ' ' MsgBox(Match_Dictionary_Keys(New Dictionary(Of String, Integer) From {{"Hello World!", 1}}, ' "hello", False, StringComparison.CurrentCultureIgnoreCase).First.Key) Private Function Match_Dictionary_Keys(Of V)( ByVal Key As String, ByVal MatchWholeWord As Boolean, ByVal IgnoreCase As StringComparison) As KeyValuePair(Of String, V)() If MatchWholeWord Then Return (From kp As KeyValuePair (Of String, V ) In Dictionary Where String.Compare(kp.Key, Key, IgnoreCase) = 0).ToArray Else Return (From kp As KeyValuePair (Of String, V ) In Dictionary Where kp.Key.IndexOf(Key, 0, IgnoreCase) > -1).ToArray End If End Function #End Region
Devuelve True si se encuentra alguna ocurrencia de un Value en un Diccionario. #Region " Find Dictionary Value " ' [ Find Dictionary Value ] ' ' // By Elektro H@cker ' ' Examples : ' ' MsgBox(Find_Dictionary_Value( ' New Dictionary(Of Integer, String) From {{1, "ABC"}}, ' "abc", True, StringComparison.CurrentCultureIgnoreCase)) Private Function Find_Dictionary_Value(Of K)( ByVal Value As String, ByVal MatchWholeWord As Boolean, ByVal IgnoreCase As StringComparison) As Boolean If MatchWholeWord Then Return (From kp As KeyValuePair (Of K, String) In Dictionary Where String.Compare(kp.Value, Value, IgnoreCase) = 0).Any Else Return (From kp As KeyValuePair (Of K, String) In Dictionary Where kp.Value.IndexOf(Value, 0, IgnoreCase) > -1).Any End If End Function #End Region
Devuelve True si se encuentra alguna ocurrencia de una Key en un Diccionario. #Region " Find Dictionary Key " ' [ Find Dictionary Key ] ' ' // By Elektro H@cker ' ' Examples : ' ' MsgBox(Find_Dictionary_Key( ' New Dictionary(Of String, Integer) From {{"ABC", 1}}, ' "abc", True, StringComparison.CurrentCultureIgnoreCase)) Private Function Find_Dictionary_Key(Of V)( ByVal Key As String, ByVal MatchWholeWord As Boolean, ByVal IgnoreCase As StringComparison) As Boolean If MatchWholeWord Then Return (From kp As KeyValuePair (Of String, V ) In Dictionary Where String.Compare(kp.Key, Key, IgnoreCase) = 0).Any Else Return (From kp As KeyValuePair (Of String, V ) In Dictionary Where kp.Key.IndexOf(Key, 0, IgnoreCase) > -1).Any End If End Function #End Region
|
|
|
8046
|
Programación / Scripting / Re: [Batch] Error en codigo. Ayuda!
|
en: 12 Noviembre 2013, 05:08 am
|
@echo off :pregunta set /p %hola% = Bucle Infinito? : if %hola%==SI goto pregunta El fallo principal es que al setear debes escribir el nombre de la variable sin el operador " %": Aparte de eso no debes dejar ningún espacio antes ni después del operador " =", y la escritura del código en general sigue los malos hábitos de los que empiezan a programar en Batch, te suegiero que te acostumbres a escribir de la manera que te muestro a continuación porque de lo contrario te van a salir muchos errores a menudo: :pregunta SET /p "hola=Bucle Infinito?:"
batch. me pareció un buen lenguaje de scripting por las incontables maneras de interactuar con el propio sistema operativo. Solo puedo decirte que a la larga te darás cuenta de que es todo lo contrario y que estás perdiendo el tiempo (sobretodo viniendo de Python), Batch es práctico para tareas simples, muy simples, y sobre lo de las incontables maneras de... se quedan en un par de comandos internos útiles, el resto son aplicaciones (llamados comandos externos) que no forman parte del lenguaje y los puedes llamar desde cualquier otro lenguaje, en resumen cualquier lenguaje es capaz de hacer lo mejor que se pueda llegar a programar en Batch, en la mitad de tiempo, y con las incontables mejoras que esto supone, sobretodo en velocidad de ejecución, Batch es MUY lento. Saludos!
|
|
|
8048
|
Programación / Scripting / Re: Modificacion de texto en batch
|
en: 11 Noviembre 2013, 06:59 am
|
Hola. ¿Tenemos que adivinar cual es la lógica usada para que en el resultado aparezcan estos caracteres?: ...Yo no le veo relación alguna con los números. De todas formas este es el tipo de operación que sería tan sencillo de realizar en cualquier otro lenguaje, pero que acabaría siendo demasiado engorroso en Batch y consumiría más dedicación de lo que realmente debería necesitar la escritura de dicha rutina. Queria ayuda para que al ejecutar un comando quedara asi: Te muestro la manera de hacerlo usando VBScript, la salida la puedes capturar con un For /F en Batch. Así queda el resultado, como en tu ejemplo, no se si tendrá mucha lógica o no, pero puedes adaptar lo necesario del código, desde luego creo que con esto tu duda quedará resuelta, El resultado lo mando al output estándar, entonces puedes utilizar un For /F desde Batch para obtener dicho output, el string formateado del jugador, y utilizarlo cmoo quieras utilizarlo.  If Wscript.Arguments.Count <> 0 Then WScript.StdOut.Write(Jugador(Wscript.Arguments(0))) WScript.Quit(0) Else WScript.Quit(1) End If Function Jugador(str) Set regEx = New RegExp regEx.Pattern = "^\D+" name = regEx.Execute(str).Item(0) regEx.Pattern = "\[\D+\]$" pos = Mid(regEx.Execute(str).Item(0), 2, 3) cosa = "%t%%%c" Jugador = (name & cosa & "%" & pos & "%") End Function
Saludos!
|
|
|
8049
|
Programación / Scripting / Re: Ayuda para reemplazar palabras en un .txt con batch usando Sed
|
en: 11 Noviembre 2013, 06:01 am
|
Es suficiente con obtener la representación correcta. Para la é de Miércoles: sed.exe -e "s/Miércoles/Dimecres/" "File.txt" > "Output.txt" Para la á de Sábado: sed.exe -e "s/Sábado/Disabte/" "File.txt" > "Output.txt" Para futuras necesidades: iconv -f latin1 -t utf-8 "File.txt" | sed "s/Sábado/Disabte/" | iconv -f utf-8 -t latin1 -> iconvSaludos
|
|
|
8050
|
Programación / Scripting / Re: como elimino espacio entre letras sin eliminar espacios entre palabras?
|
en: 11 Noviembre 2013, 05:28 am
|
Por curiosidad, ¿Eso lo has sacado de un archivo de texto con codificación Unicode?, porque en ese caso debería ser suficiente con convertir el archivo a UTF o ANSI (1252) para eliminar los whitespaces "duplicados". Eso si, el texto no debe contener en este caso el caracter "-" para su buen funcionamiento, de lo contrario puedes cambiarlo a cualquier otro. Eso tiene un facil apaño, Puedes usar una serie de caracteres, así la posibilidad de conflicto con los caracteres del string disminuye al 99,9%, yo he usado una carita: set "str=C l i c k o n t h e N e w P r o f i l e b u t t o n t o o p e n t h e P r o f i l e"
Una solución en cualquier otro lenguaje (ej: vbs) sería hacerle un Split a la cadena, y concatenar: str = "C l i c k o n t h e N e w P r o f i l e b u t t o n t o o p e n t h e P r o f i l e" arr = split(str," ") for each item in arr output = output & replace(item, " ", "") & " " next msgbox(output)
O diréctamente usar un regex para reemplazar los 3 espacios por 1, y el resto de espacios por nada. Saludos
|
|
|
|
|
|
|