Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - Yaldabaot

#161
Voy a implementarlo y comentarte como me va, MUCHAS GRACIAS.
#162
Buenas,

He estado buscando en internet y lo que encuentro no me sustenta mucho, ¿alguno de ustedes sabe como obtener la ruta de un archivo en ejecución, pero que NO esté dentro del mismo folder que viene el debug del visual studio y que no sea la misma aplicación del programa que uno está creando?.

En pocas palabras, necesito obtener la ruta de un archivo que se está ejecutando, pero que no sea la misma aplicación que uno está programando, es en C#.

He estado utilizando
este código

Código (csharp) [Seleccionar]


string logsDirectory = Path.Combine(Environment.CurrentDirectory, trozo2);



Pero lo que obtengo es la ruta donde está proyecto y es lo que NO necesito.

#163
¿Nadie sabe?, he estado buscando y hay varias personas con el mismo problema que yo y que no han podido solventarlo, les agradecería que si saben algo me ayuden.
#164
Buenas,

He estado haciendo un tipo de monitoreo de impresoras, cuando el usuario imprime la cola de impresión me da las datos.

Pasa que cuando los pido, los datos de nombre, fecha y nombre del documento me dan lo que necesito, pero cuando trato de averiguar cuántas páginas tiene el documento el programa sólo me retorna 1 y en el caso de las páginas totales 0.

El programa lo estoy haciendo con Visual Studio 2010 y con C#.


Es importante aclarar que he probado con word y notepad, los cuáles se generan con más de 1 página.

Les agradecería si me pudieran ayudar con esto.


Código (csharp) [Seleccionar]


System.Collections.ArrayList printJobCollection = new System.Collections.ArrayList();

       //Obtiene los trabajos que contiene en memoria.

       public System.Collections.ArrayList obtenerimpresiones(string PrinterName)
       {

           string PrinterJobs = "SELECT * FROM Win32_PrintJob";
           string hora;

           ManagementObjectSearcher FindPrintJobs = new ManagementObjectSearcher(PrinterJobs);
           ManagementObjectCollection prntJobCollection = FindPrintJobs.Get();
 
           foreach (ManagementObject prntJob in prntJobCollection)
           {


               System.String jobName = prntJob.Properties["Name"].Value.ToString();
               System.String pages = prntJob.Properties["PagesPrinted"].Value.ToString();
               System.String print = prntJob.Properties["DriverName"].Value.ToString();
               System.String totalpages = prntJob.Properties["TotalPages"].Value.ToString();
               
               

               hora = DateTime.Now.ToString();


               char[] JobSplit = new char[1];

               JobSplit[0] = Convert.ToChar(",");

               string prnterName = jobName.Split(JobSplit)[0];
           
               string documentName = "Nombre del documento->" + prntJob.Properties["Document"].Value.ToString() + " Usuario->" + prntJob.Properties["owner"].Value.ToString() + " - Fecha->" + hora + " - Páginas del documento->" + pages + "- Impresora ->" + print + "Total páginas impresas->" + totalpages + "\n";

               if (String.Compare(prnterName, PrinterName, true) == 0)
               {

                   printJobCollection.Add(documentName);
                 

               }


           }


           return printJobCollection;            
           
                     

           }






#165
Genial!, gracias por el dato!.

Disculpas por lo del triple post, saludos.
#166
Gracias al fragmento que me pusiste ya logré como descifrarlo y pude resolverlo

Adjunto el código por si acaso alguien lo ocupa

GRACIAS!!


Código (vbnet) [Seleccionar]


Dim i As Integer = 0

        For Each sheet As Excel.Worksheet In xlWorkBook.Worksheets
            Try

                'Verifica si está en la primera hoja para no borrarla.!
                If i = 0 Or i = 1 Then

                    i = i + 1

                Else
                           
                    'Sino simplemente la elimina.
                    sheet.Delete()
                    i = i + 1

                End If
             
            Catch ex As Exception
                MsgBox(ex.Message & ex.StackTrace)
            End Try
        Next sheet

        'Elimina hoja sobrante
        xlWorkBook.Sheets(2).delete()





#167
Ok, si me sirvió pero, ¿Existe alguna manera de empezar en el segundo elemento en un for each?, el código funciona, y funciona tan bien que me salta una excepción porque me volé todas las hojas.


GRACIAS
#168
Hola,

Agradezco que te hayas tomado el tiempo para leerme y responderme

Esta es la declaración de la variable

Código (vbnet) [Seleccionar]


 Dim contador As Integer = 0


Acá dónde se "cae" el código
Código (vbnet) [Seleccionar]

CType(xlWorkBook.Sheets(k), Excel.Worksheet).Delete()


¿Para qué dos bucles? Bien, los utilizo para dos cosas:

1- Sacar la cantidad de hojas del libro(Bucle 1 o el primero que miras)
2- Realizar el delete.


El índice lo utilizo para que elimine todas las hojas a partir de la hoja 1, es por eso que necesito ponerle un índice.

Disculpa por la falta de esos detalles.

Intentaré lo que me dices, y te daré detalles!.

GRACIAS :D



#169
Hola,

Estoy realizando un limpiador de Excel, y tengo un problema de índices y desbordamientos.

Lo que quiero hacer es eliminar las hojas de un excel, dejando la primer hoja con sus datos, resulta que sólo puedo hacerlo individualmente de esta manera:

CType(xlWorkBook.Sheets(i), Excel.Worksheet).Delete()

Pero cuando intento hacerlo con un ciclo salta esta excepción:

Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

Estoy utilizando VS 2010, Excel 2007, y este es el código que utilizo para eliminar las hojas. He realizado gran cantidad de intentos. Sinceramente no comprendo el porque del error.

Código (vbnet) [Seleccionar]


Dim contador As Integer = 0

       'Obtiene la cantidad de hojas a borrar
       For Each sheet As Excel.Worksheet In xlWorkBook.Worksheets

           contador = contador + 1
       Next

       'Contador
       MsgBox(contador)



       For k = 0 To contador Step 1

           ' CType(xlApp.ActiveWorkbook.Sheets(i), Excel.Worksheet).Delete()
           'xlWorkBook.Sheets(i).delete()

           If k = 0 Then

               ' k = k + 1
           Else

               CType(xlWorkBook.Sheets(k), Excel.Worksheet).Delete()

               'xlWorkBook.Sheets(k).delete()
               'k = k + 1
               MsgBox(k)
           End If
       Next




No se si es porque se manejen los índices diferente en EXCEL y en VS, agradecería sus consejos.

Con respecto al for he probado varias formas de incrementos y nada tampoco, lo curioso es que se empieza a desbordar después de una cierta cantidad, con cantidades pequeñas funciona bien.

Agradezco de antemano la ayuda.

#170
Hola, se que no soy muy querido por acá, al menos intentaré dejar un aporte y agradecer las respuestas.

Ya encontré la solución.

http://www.papercut.com/products/free_software/print_logger/

Este es un log de las impresiones, licencia free.