|
7451
|
Programación / .NET (C#, VB.NET, ASP) / Re: Duda con "Win32_PrintJob"
|
en: 7 Febrero 2014, 19:25 pm
|
Que buena info @ Devdox, para que no se escape el dato importante ...esto lo dice todo: Public Enum Job_Notify_Field_Indexes '... JOB_NOTIFY_FIELD_TOTAL_PAGES = &H14 JOB_NOTIFY_FIELD_PAGES_PRINTED = &H15 '... End Enum
Saludos
|
|
|
7452
|
Programación / Programación General / Re: Ayuda con programa C#
|
en: 7 Febrero 2014, 18:56 pm
|
Hola, las preguntas de C# van al subforo de C#.
Suponiendo que no necesitos recusión (controles dentro de paneles, etc...)Método simple, no recursivo: For Each c As Control In Me.Controls c.BackColor = Color.Red Next c
foreach (Control c in this.Controls) { c.BackColor = Color.Red; } //======================================================= //Service provided by Telerik (www.telerik.com) //Conversion powered by NRefactory. //Twitter: @telerik //Facebook: facebook.com/telerik //=======================================================
Método simple, recursivo: Private Shadows Sub Shown() Handles MyBase.Shown SetControlsBackColor(Me.Controls, Color.Red) End Sub Private Sub SetControlsBackColor (ByVal Collection As Control. ControlCollection, ByVal Backcolor As Color) If c.Controls.Count <> 0 Then SetControlsBackColor(c.Controls, Backcolor) End If c.BackColor = Backcolor Next c End Sub
{ SetControlsBackColor(this.Controls, Color.Red); } private void SetControlsBackColor(Control.ControlCollection Collection, Color Backcolor) { foreach (Control c in Collection) { if (c.Controls.Count != 0) { SetControlsBackColor(c.Controls, Backcolor); } c.BackColor = Backcolor; } } //======================================================= //Service provided by Telerik (www.telerik.com) //Conversion powered by NRefactory. //Twitter: @telerik //Facebook: facebook.com/telerik //=======================================================
Método optimizado, no recursivo: Public Class Form1 Private Shadows Sub Shown() Handles MyBase.Shown ControlIterator.PerformAction(Me.Controls, Sub(c As Control) c.BackColor = Color.Green End Sub) End Sub ' ControlIterator ' ( By Elektro ) ' ''' <summary> ''' Iterates a serie of Controls to perform an operation. ''' </summary> Public Class ControlIterator ''' <summary> ''' Perform an operation on all the Controls on the specified Control Collection. ''' </summary> ''' <param name="ControlCollection">Indicates the control collection where to find the controls.</param> ''' <param name="Operation">Indicates the Action to perform on the controls.</param> ''' <param name="ContainsName">Indicates that only controls containing name should be collected.</param> Public Shared Function PerformAction(ByVal ControlCollection As Control.ControlCollection, ByVal Operation As [Delegate], Optional ByVal ContainsName As String = Nothing) As Boolean Return PerformActionOnControls((From c As Object In ControlCollection), Operation, ContainsName) End Function ''' <summary> ''' Perform an operation on Controls. ''' </summary> Private Shared Function PerformActionOnControls(ByVal Controls As IEnumerable(Of Object), ByVal Operation As [Delegate], Optional ByVal ContainsName As String = Nothing) As Boolean If ContainsName IsNot Nothing Then Controls = Controls.Where(Function(ctrl) ctrl.name.contains(ContainsName)) If Controls.Count = 0 Then Return False End If For Each [Control] As Object In Controls If [Control].InvokeRequired Then [Control].Invoke(Operation, New Object() {[Control]}) Else Operation.Method.Invoke(Operation, New Object() {[Control]}) End If Next [Control] Return True End Function End Class End Class
using Microsoft.VisualBasic; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Diagnostics; public class Form1 { { ControlIterator.PerformAction(this.Controls, (Control c) => { c.BackColor = Color.Green; }); } // ControlIterator // ( By Elektro ) // /// <summary> /// Iterates a serie of Controls to perform an operation. /// </summary> public class ControlIterator { /// <summary> /// Perform an operation on all the Controls on the specified Control Collection. /// </summary> /// <param name="ControlCollection">Indicates the control collection where to find the controls.</param> /// <param name="Operation">Indicates the Action to perform on the controls.</param> /// <param name="ContainsName">Indicates that only controls containing name should be collected.</param> public static bool PerformAction(Control.ControlCollection ControlCollection, Delegate Operation, string ContainsName = null) { return PerformActionOnControls((from c in ControlCollection), Operation, ContainsName); } /// <summary> /// Perform an operation on Controls. /// </summary> private static bool PerformActionOnControls(IEnumerable<object> Controls, Delegate Operation, string ContainsName = null) { if (ContainsName != null) { Controls = Controls.Where(ctrl => ctrl.name.contains(ContainsName)); if (Controls.Count == 0) return false; } foreach (object Control in Controls) { if (Control.InvokeRequired) { Control .Invoke(Operation, new object[] { Control }); } else { Operation .Method.Invoke(Operation, new object[] { Control }); } } return true; } } public Form1() { Shown += Shown; } } //======================================================= //Service provided by Telerik (www.telerik.com) //Conversion powered by NRefactory. //Twitter: @telerik //Facebook: facebook.com/telerik //=======================================================
|
|
|
7454
|
Sistemas Operativos / Windows / Re: [DUDA] Cambiar letra de unidad a archivo con un Batch [DUDA]
|
en: 7 Febrero 2014, 16:27 pm
|
hola
Vamos a ver, los archivos no tienen nada que ver, me explico... Si tu desconectas un HDD interno de un PC muerto, y lo conectas en otro PC donde ya exista un HDD con un SO instalado enonces el SO le asignará una letra (que esté libre libre) a ese nuevo HDD, es decir, no será 'C'.
Como ha comentado mDrinky no debería haber ningún problema al respecto.
PD: ¿Quizás estés confundiendo archivos con accesos directos?, si quieres modificar la letra de unidad del destino de accesos directos tiene facil solución.
Saludos
|
|
|
7455
|
Programación / .NET (C#, VB.NET, ASP) / Re: Combinaciones letras o numeros
|
en: 7 Febrero 2014, 11:02 am
|
Nah, no soy ningún prodigio como programador ni como tutor, solo es que tengo paciencia xD. saltar las combinaciones para que no sean seguidas Creo que tarde o temprano vas a acabar preguntándolo, mejor hazlo ahora, aquí estamos para ayudar... pero si lo preguntas haz el favor de explicarlo con detalles, no de esa manera que he citado porque no hay quien lo entienda xD. Saludos
|
|
|
7456
|
Programación / .NET (C#, VB.NET, ASP) / Re: DUDA Ruta archivos en ejecución[SOLUCIONADO]
|
en: 7 Febrero 2014, 10:39 am
|
Elektro, ¿ Hay alguna forma de hacerlo pero con un archivo abierto y no un proceso?. No estoy muy seguro así que no puedo asegurar nada, pero dudo que exista una manera eficiente. Si abres un archivo .TXT con un editor de texto y este editor de texto mantiene ocupado el archivo (en modo de lectura o escritura) segúramente puedas encontrar un Handle que haga referencia a ese archivo, de lo contario...pues no lo creo, ya que el archivo ya se cerró por el programa. Y si abres un archivo con un programa puedes encontrar la referencia a ese archivo "abierto" usando WMI para buscar los parámetros commandline de los procesos en ejecución, por ejemplo, si Notepad fuese el editor predefinido en tu sistema y haces doble click en un archivo de texto entonces se iniciará el Notepad con estos parámetros: Notepad.exe "Archivo abierto" ...y usando WMI podrás encontrar los parámetros de ese proceso para encontrar el archivo abierto. Pero si desde esa mimsa instancia del programa abres otro(s) archivo(s) entonces óbviamente buscar los parámetros de la aplicación no te va a servir de nada porque el programa ya está iniciado y el nuevo archivo lo has abierto desde el programa. Y si lo que quieres es monitorear la ejecución de un archivo, en tiempo real, pues... lo tienes dificil, un ' FileSystemWatcher' solo te va a informar de los cambios una vez se hayan realizado, no antes, ni mientras. Necesitarías escribir un driver (un ' filesystem filter driver') para capturar todas las operaciones de escritura que necesites, lo cual no es nada facil... Aunque como ya digo, no estoy muy seguro de si habrá otra forma. Saludos.
|
|
|
7457
|
Programación / Scripting / Re: PYTHON EJECUTABLE EN WINDOWS SOLO RETOCANDO CODIGO
|
en: 7 Febrero 2014, 10:05 am
|
Para leer un Script es necesario ejecutar la aplicación que se encarga de interpretar las órdenes (el intérprete)... (Ej: Python.exe ".\Script.py").
Puedes usar CX_FREEZE para unir en un solo archivo executable el intérprete junto al script y los módulos que quieras, para que corran en cualquier Windows sin necesidad de tener instalado Python.
Saludos.
|
|
|
7458
|
Programación / .NET (C#, VB.NET, ASP) / Re: Combinaciones letras o numeros
|
en: 6 Febrero 2014, 20:31 pm
|
For X As Integer = 0 To Elementos.Count - 1 Step 4 MessageBox.Show( String.Format("{0} {1} {2} {3}", Elementos(X), If(Not (X + 1) >= Elementos.Count, Elementos(X + 1), String.Empty), If(Not (X + 2) >= Elementos.Count, Elementos(X + 2), String.Empty), If(Not (X + 3) >= Elementos.Count, Elementos(X + 3), String.Empty), "Cuatro Elementos")) Next X
Fíjate bien en los cambios, esto puedes hacerlo sin ayuda For X As Integer = 0 To Elementos.Count - 1 Step 4 ListBox1.Items.Add( String.Format("{0} {1} {2} {3}", Elementos(X), If(Not (X + 1) >= Elementos.Count, Elementos(X + 1), String.Empty), If(Not (X + 2) >= Elementos.Count, Elementos(X + 2), String.Empty), If(Not (X + 3) >= Elementos.Count, Elementos(X + 3), String.Empty))) Next X
Saludos!
|
|
|
7459
|
Programación / Scripting / Re: Generar Reporte de Pings con Proceso Batch (.bat)
|
en: 6 Febrero 2014, 06:14 am
|
@Nicolas No formaré parte de la discusión pero creo que deberías sentirte agradecido por el esfuerzo que hacen el resto de compañeros para mostrarte códigos, ya sé que @ mDrinky escribió poco, pero podría no haberte escrito nada.
quiero generar los reportes de los IP que esten ocupados por usuarios, lo ideal seria tener el nombre del usuario y su ip en el caso de que estuviece ocupado No llego a comprender muy bien lo que quieres hacer, pero pareces dar a entender que estás intentando sacar el nombre de usuario de una IP que no está asignada en tu red/grupo de trabajo ( Ejemplo: www.google.com ). El tema Redes no es lo mio así que quizás estoy equivocado con mis conjeturas pero vamos, yo nunca he oido decir que esto sea algo posible... dudo mucho que sea posible acceder a esa información tan relevante teniendo una misera IP... un Lookup a una IP externa no muestra información acerca del nombre de usuario del SO al que está asignada una IP. Por otro lado, si es en tu red local y estás usando AD entonces puedes usar priméramente el comando nbtstat para obtener el nombre del equipo de una IP: Y luego puedes usar el comando net view para listar los usuarios del dominio de ActiveDirectory. ...Por último solo tendrías que usar el comando find y/o findstr para filtrar la salida del comando net view buscando el nombre del equipo que obtuviste usando el comando de nbtstat y listo, ahí verás el nombre de usuario. No te muestro código porque no puedo manejar esos comandos en mi PC, y tampoco sé si es eso lo que quieres, pero es bin facil de hacer solo tendrías que usar FOR /F para iterar el output de cada comando y quedarte con el valor importante de cada uno. Saludos!
|
|
|
|
|
|
|