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 - raul338

#46
Programación Visual Basic / [Aporte] EnvironEx
18 Septiembre 2010, 01:43 AM
Hooola!

Resulta que estoy haciendo un programa que hace backups de cierta infomacion y necesitaba obtener (mediante Environ) algo asi:

En windows 7: C:\Users\<Usuario>\AppData\Local\
En windows XP: C:\Documents And Settings\<Usuario>\Configuracion Local\Datos de programa\

Para windows vista y adelante existe la variable de entorno "LocalAppData" pero para windows Xp no, y no encontre forma de hacerlo mediante Environ, hasta que buscando encontre un codigo en VBS, lo que facilmente lo pase a esta funcion:

Código (vb) [Seleccionar]

' Version original xD
Public Function GetLocalAppData() As String
   GetLocalAppData = CreateObject("Shell.Application").NameSpace(28).Self.Path
End Function


Funciona en windows 2000 en adelante :P

FUENTE original: http://www.winhelponline.com/blog/add-localappdata-environment-variable-in-windows-xp/ (Ver los comentarios)





EDIT! V2

Bueno, me pico la curiosidad y fui mas alla! jeje, deje el createObject y uso API ahora asi que bueno, hice esta pequeña Extension de Environ llamada "EnvironEx" que comparando resultados queda

Environ que te devuelve estos resulatdos
Citar
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\User\AppData\Roaming
CLASSPATH=.;C:\Program Files\Java\jre6\lib\ext\QTJava.zip
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=RAUL-PC
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Users\Raul
LOCALAPPDATA=C:\Users\User\AppData\Local
LOGONSERVER=\\RAUL-PC
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=...................................
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 2, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0f02
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\User\AppData\Local\Temp
TMP=C:\Users\User\AppData\Local\Temp
USERDOMAIN=Raul-PC
USERNAME=User
USERPROFILE=C:\Users\User
windir=C:\Windows

Comparando con los comentarios que estan al lado de cada constante. Como veran, hay info que hay en uno que en otro no hay...
Código (vb) [Seleccionar]
Option Explicit
' Los resultados que tiro con windows 7
Public Enum CSIDL
   CSIDL_PROFILE = 40                      ' C:\Users\Raul
   CSIDL_PERSONAL = 5                      ' C:\Users\Raul\Documents
   CSIDL_DESKTOP = 0                       ' C:\Users\Raul\Desktop
   CSIDL_DESKTOPDIRECTORY = 16             ' C:\Users\Raul\Desktop
   CSIDL_FAVORITES = 6                     ' C:\Users\Raul\Favorites
   CSIDL_MYMUSIC = 13                      ' C:\Users\Raul\Music
   CSIDL_MYPICTURES = 39                   ' C:\Users\Raul\Pictures
   CSIDL_MYVIDEO = 14                      ' C:\Users\Raul\Videos
   CSIDL_LOCAL_APPDATA = 28                ' C:\Users\Raul\AppData\Local
   CSIDL_HISTORY = 34                      ' C:\Users\Raul\AppData\Local\Microsoft\Windows\History
   CSIDL_INTERNET_CACHE = 32               ' C:\Users\Raul\AppData\Local\Microsoft\Windows\Temporary Internet Files
   CSIDL_APPDATA = 26                      ' C:\Users\Raul\AppData\Roaming
   CSIDL_RECENT = 8                        ' C:\Users\Raul\AppData\Roaming\Microsoft\Windows\Recent
   CSIDL_SENDTO = 9                        ' C:\Users\Raul\AppData\Roaming\Microsoft\Windows\SendTo
   CSIDL_TEMPLATES = 21                    ' C:\Users\Raul\AppData\Roaming\Microsoft\Windows\Templates
   CSIDL_NETHOOD = 19                      ' C:\Users\Raul\AppData\Roaming\Microsoft\Windows\Network Shortcuts
   CSIDL_PRINTHOOD = 27                    ' C:\Users\Raul\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
   CSIDL_COOKIES = 33                      ' C:\Users\Raul\AppData\Roaming\Microsoft\Windows\Cookies
   CSIDL_STARTMENU = 11                    ' C:\Users\Raul\AppData\Roaming\Microsoft\Windows\Start Menu
   CSIDL_STARTUP = 7                       ' C:\Users\Raul\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
   CSIDL_PROGRAMS = 2                      ' C:\Users\Raul\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
   CSIDL_ADMINTOOLS = 48                   ' C:\Users\Raul\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools
   CSIDL_ALTSTARTUP = 29                   ' C:\Users\Raul\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
   CSIDL_CDBURN_AREA = 59                  ' C:\Users\Raul\AppData\Local\Microsoft\Windows\Burn\Burn
   CSIDL_COMMON_APPDATA = 35               ' C:\ProgramData
   CSIDL_COMMON_ADMINTOOLS = 47            ' C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
   CSIDL_COMMON_ALTSTARTUP = 30            ' C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
   CSIDL_COMMON_STARTMENU = 22             ' C:\ProgramData\Microsoft\Windows\Start Menu
   CSIDL_COMMON_PROGRAMS = 23              ' C:\ProgramData\Microsoft\Windows\Start Menu\Programs
   CSIDL_COMMON_STARTUP = 24               ' C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
   CSIDL_COMMON_TEMPLATES = 45             ' C:\ProgramData\Microsoft\Windows\Templates
   CSIDL_COMMON_OEM_LINKS = 58             ' C:\ProgramData\OEM Links
   CSIDL_COMMON_DESKTOPDIRECTORY = 25      ' C:\Users\Public\Desktop
   CSIDL_COMMON_DOCUMENTS = 46             ' C:\Users\Public\Documents
   CSIDL_COMMON_FAVORITES = 31             ' C:\Users\Raul\Favorites
   CSIDL_COMMON_MUSIC = 53                 ' C:\Users\Public\Music
   CSIDL_COMMON_PICTURES = 54              ' C:\Users\Public\Pictures
   CSIDL_COMMON_VIDEO = 55                 ' C:\Users\Public\Videos
   CSIDL_BITBUCKET = 10                    ' ???
   CSIDL_COMPUTERSNEARME = 61              ' ???
   CSIDL_CONNECTIONS = 49                  ' ???
   CSIDL_CONTROLS = 3                      ' ???
   CSIDL_DRIVES = 17                       ' ???
   CSIDL_INTERNET = 1                      ' ???
   CSIDL_MYDOCUMENTS = 12                  ' ???
   CSIDL_NETWORK = 18                      ' ???
   CSIDL_PRINTERS = 4                      ' ???
   CSIDL_FONTS = 20                        ' C:\Windows\Fonts
   CSIDL_PROGRAM_FILES = 38                ' C:\Program Files
   CSIDL_PROGRAM_FILESX86 = 42             ' C:\Program Files
   CSIDL_PROGRAM_FILES_COMMON = 43         ' C:\Program Files\Common Files
   CSIDL_PROGRAM_FILES_COMMONX86 = 44      ' C:\Program Files\Common Files
   CSIDL_RESOURCES = 56                    ' C:\Windows\resources
   CSIDL_RESOURCES_LOCALIZED = 57          ' C:\Windows\resources\0c0a
   CSIDL_SYSTEM = 37                       ' C:\Windows\system32
   CSIDL_SYSTEMX86 = 41                    ' C:\Windows\system32
   CSIDL_WINDOWS = 36                      ' C:\Windows
End Enum

Private Declare Function SHGetFolderPath Lib "shfolder" _
   Alias "SHGetFolderPathA" _
   (ByVal hwndOwner As Long, ByVal nFolder As Long, _
   ByVal hToken As Long, ByVal dwFlags As Long, _
   ByVal pszPath As String) As Long

Private Const MAX_PATH = 260

Public Function EnvironEx(nCode As CSIDL) As String
   Dim path As String * MAX_PATH
   Call SHGetFolderPath(&H0, nCode, 0, 0, path)
   EnvironEx = Replace$(Trim$(path), vbNullChar, vbNullString)
End Function



Y ahora si, es un aporte esto ya :xD (No descubri nada del otro mundo, simplemente lo comparto porque seguro hay quienes no sabian de la existencia de esto)
#47
Foro Libre / Dia del programador?
13 Septiembre 2010, 23:11 PM
 :xD :xD

Hoy estaba programando y estaba en el msn y me saludan con un "feliz dia"  :huh: y me empiezan a decir que es el dia del programador... yo ni enterado  :laugh:

Citar
¡Feliz Día del programador!



Hoy 13 de septiembre de un año común no-bisiesto es el día 256 del año y se celebra el Día del Programador.

La página web que intenta hacer oficial esta fiesta no-oficial es ProgrammerDay.info. Al igual que con el Día de Pi o el Día del Administrador de Sistemas sera árdua la labor para conseguirlo, pero eso no quita que se pueda montar un poco de diversión al respecto.

256 es un número significativo para los programadores porque es una potencia de dos (28) y el número de valores que se pueden representar en un byte.

Actualización: Como nos dijo Othermore el 1111 1111 del logotipo en realidad equivale a 255, pero bueno, debe ser porque «contando desde el 0» sale un día más o algo así (o una «licencia gráfica» del promotor de la página, tal vez).

Asi que, para el que no lo sabia, que festeje xD

Saludos y feliz dia a los programadores!!!!
#48
Asi es :P

Unos hackers mientras desarrollaban un virus, hacian pruebas colgando la pc, se ofrecio enviar el tipico informe de errores -con codigo incluido- a microsoft, los hackers contestaron que si :xD

http://www.zdnet.com.au/hackers-accidentally-give-microsoft-their-code-339305548.htm
#49
Hardware / Caso extraño: PC no apaga D:
20 Agosto 2010, 07:40 AM
Hoolas!

Aca vengo yo y mis raros problemas, esta vez, es de mi pc, que directamente no apaga nunca. Ni desde windows ni linux. Solo queda la pantalla en negro (o sea,recibe imagen negra, no es que no reciba señal) y los coolers (fuente y procesador) siguen corriendo  :( las luces del gabinete: la de "encendido"sigue prendida, la de ... "ocupado" (?) no vuelve a titilar

Solo tengo que mantener presionado el boton de apagado por 5 segundos para apagarla,otra forma no hay :-\

No se que pueda especificar para que me puedan ayudar, ya limpie el gabinete :xD pero sigue igual

Espero opiniones/ideas y gracias de antemano
#50
Hooola!

No sabia si presentar esto como reto o no (?)


http://gaussianos.com/la-conjetura-del-196/
http://en.wikipedia.org/wiki/Lychrel_number


Ahi esta, tienen que hacer una funcion booleana que calcule los numeros capicuas a partir de este, con un numero maximo de vueltas, para calcular si es de Lychrel o no :P Ademas de devolver el numero final dado

La firma debe ser asi:

Código (vb) [Seleccionar]

Public Function IsLychrelNumber(numero As Double, ByRef numeroFinal As Double,Optional maxVueltas As Long = 20) As Boolean


Si no se logra dar el numero de vueltas en menos de maxVueltas se toma como si fuera numero de Lychrel (aunque el numero este en la vuelta 21 :¬¬)

NOTA: Cabe aclarar que debe devolver True cuando no se encuentra el numero capicua  :silbar:

El tiempo se medira con la clase CTiming ya publicada en retos anteriores...

Ahora si! A codear!
#51
GNU/Linux / Problema de permisos en KDE
26 Julio 2010, 00:20 AM
Hoolas!

Hace poco que me estoy metiendo en linux de lleno y la verdad, he aprendido algo y he tenido algun que otro problemita...... pero poco a poco con google y paciencia se van resolviendo :)

Les cuento la historia..... instale ubuntu (queria kubuntu, pero al parecer los drivers genericos que trae no aceptan mi integrada VIA S3 Unichrome P4M890), buscando por mares logre dar con el driver del chipset de esa placa (VX700) pero..... por alguna razon ese modelo no aparecia en la lista de drivers ..... pero con un poco de programacion logre agregarlo :P

Entonces me decido a instalar KDE, selecciono los paquetes, kdm, etc.... instala todo bien y se ve de lujo!!!!  ;-)

El problema es que, cada vez que me logueo en KDE me tira un error de permisos de que no puede escribir su archivo de configuracion (ubicado en home/.kde/share/apps) y cada vez que inicio kate me tira el mismo error (con el archivo de configuracion de kate) ...... google no me ayuda (sera que nadie ha tenido el mismo problema?)

Intente darle todos los permisos a la carpeta y los archivos.... y..... no hizo efecto (o no lo habre hecho bien :P)

Asi que recurro a ustedes aver si me pueden ayudar :) cualquier log que me pidan o informacion que necesiten se los dare :)

Espero que me puedan ayudar

PD: Es ubuntu 9.10 todo actualizado (no tenia ganas de bajar kubuntu en su ultima version :xD Aunque despues lo baje, probe en modo live cd y..... problema de drivers  :-()
#52
Foro Libre / Feliz cumpleaños a mi xD
15 Julio 2010, 05:09 AM
jajajaja...... dudaba de que alguien me hiciera el mensaje, asi que decidi hacermelo yo mismo por orgulloso :laugh: :xD

Cumplo 18 :E y queria compartirlo con la gran comunidad que fui creciendo :)
#53
Hoolas!!

Estoy programando un sistema de gestion en vb6 y mysql, con ado por codigo
todo va de maravilla, salvo que hay veces que salta error al intentar trabajar con un recordset vacio. Pero.... por mas que evalue si esta vacio me tira el error  :laugh:

Este es el codigo:
Código (vb) [Seleccionar]

    Private Function Ejecutar() As Boolean
        Debug.Print Time & " - " & Consulta & vbCrLf
               
        If Not cnnDatos.Execute(Consulta) Is Nothing Then
            Set rsDatos = cnnDatos.Execute(Consulta)
            If Not (rsDatos.BOF And rsDatos.EOF) Then rsDatos.MoveFirst
            Ejecutar = True
        Else
            Ejecutar = False
        End If
    End Function


Siendo cnnDatos la conexion a MySQL y rsDatos un recordset

El if que evalua si el lo que devuelve el cnnDatos.execute lo agregue para tratar de caputrar el error y asi devolver falso (y decir que no hay registro), pero hay veces que el debuger se para ahi, diciendo que no se puede "abrir" el recorset o que EOF = BOF o algo asi....

Alguna ayuda/sugerencia/copy&paste :xD :¬¬?
#54
Hardware / Problema muy extraño
29 Mayo 2010, 00:16 AM
Hoola!

Por lo general no tengo problemas de hardware y los pocos que surgen san google me guia para resolverlos, pero esta vez es algo muy raro que al parecer a nadie mas le paso.

Les cuento, es una placa madre pcchips M810L v7.1c con bios actualizado, con un AMD "Pro1300+" dice, un Ram DIMM (creo) de 64mb, todo lo demas onboard, un disco de 20 gb y una lectora cd a 32x :laugh: :laugh: es algo viejita pero bueno,estamos rescatandola

El problema es que a veces enciende, a veces solo se escucha el cooler y el monitor no da ninguna señal (problema 1) y raras veces no enciende la luz de prendido de la cpu. Dejando esperar unos 4 o 5 minutos enciende normalmente y se ve el bios  :-\

Cuando enciende tira "Checkin NVRAM...NO NVRAM" y dice que la pila esta baja (tengo la pila original y 3 nuevas y con todas dice lo mismo)...


(en el momento de la foto tenia 2 modulos de 64 mb de ram, y todavia el bios no estaba actualizado)

Bueno, probando me comprobe que no guarda ninguna configuracion que le ponga del bios al reiniciar. Siguiendo el boot con los valores por default tarda cerca de 5 minutos en reconocer si hay algo conectado o no (aun sin haber conectado la disquetera ni hd ni lectora)

Luego (en caso de que este  conectado el hd) bootea normal a windows 2000..... pero tardo 15 minutos en prender!!! y me llama la atencion los mensajes tomados en la imagen. Y es que a veces ni continua y tira error de disco duro (cuando este no esta conectado)

el bios lo pude actualizar (recomendacion de google) booteando por diskete, pero ni aun asi. A Alguien se le ocurre algo (descarten comprar pc nueva  :xD :¬¬)


  • Las memorias (2 modulos de 64) las comprobe juntas y por separados en los distintos zocalos sin resultado alguno
  • Todas las pilas (salvo una) tienen el mismo codigo
  • Ayuda plis!! (?  :xD

De ante mano muchas gracias, y espero queme puedan ayudar :)
#55
 :D Hoola!

Venia preparando esto desde hace tiempo, pero siempre aparecian algun problema de "cuentas" y se desfiguraba todo jaja  :laugh:

En fin, Tuve que usar threads para una aplicacion que hice, y decidi hacerlo en consola (uff... para que  :xD)

En fin, el programa hacia lo que queria que haga, peeero...  necesitaba ejecutar "comandos" introducidos por el usuario, y a la vez el programa debia reportar algunos  datos al usuario. Como era de suponerse hacia un ReadLine y en otro thread usaba WriteLine cuando era necesario. Ahi surgio un problema, se cruzaba todo haciendo todo ilegible al volver a leer, les pongo un ejemplo grafico:

Escenario: Un servidor de juegos... Al estilo Half-Life  :xD


Log:
Nivel 1 iniciado
esperando respuesta....
_


si yo pongo un comando ("agregar bot 1") pero en medio de la escritura entra un jugador .... se reporta como "Nuevo jugador: -xDMan-", se pone justo apenas terminamos de escribir la letra en la que estabamos, se escribe el reporte y despues nosotros seguimos escribiendo. Queda horrible!!!

Empezamos a escribir el comando:

Log:
Nivel 1 iniciado
esperando respuesta....
agregar b_


Entra el usuario, interrumpiendo nuestro comando

Log:
Nivel 1 iniciado
esperando respuesta....
agregar bNuevo jugador: -xDMan-_


Si seguimos escribiendo (supongamos que no nos dimos cuenta que salio eso)

Log:
Nivel 1 iniciado
esperando respuesta....
agregar bNuevo jugador: -xDMan-ot 1_


y el ReadLine devuelve bien: agregar bot 1

pero cuando lees la consola directa, es total mente ilegible, todo mezclado  :¬¬


y aca idee los metodos necesarios para resolverlo  ;)

Son dos funciones que reemplazan a Console.WriteLine y Console.ReadLine

ReadLine: es muy similar al Console.ReadLine, pero tiene un buffer en el que se guarda el string escrito
WriteLine: lo que hace es "borrar" de la consola lo escrito y poner lo que se quiere introducir, y luego abajo poner exactamente lo que habiamos puesto (desde el buffer :P) y todo haciendo parecer que no paso nada.

Usando mis metodos ReadLine y WriteLine, quedaria asi

Empezamos a escribir el comando:

Log:
Nivel 1 iniciado
esperando respuesta....
agregar b_


Entra el usuario, interrumpiendo nuestro comando

Log:
Nivel 1 iniciado
esperando respuesta....
Nuevo jugador: -xDMan-
agregar b_


seguimos escribiendo como si nada hubiera pasado

Log:
Nivel 1 iniciado
esperando respuesta....
Nuevo jugador: -xDMan-
agregar bot 1_


y el ReadLine devuelve bien (como era de esperarse): agregar bot 1


Como les dije, es una consola al estilo quake (porque en quake se vio la primera consola asi, de ahi el nombre)


Sin mas, aca esta el codigo, A mas de uno le puede servir  ;-)
(no se necesita ninguna referencia, nada, esta todo listo para servir  :laugh:)


Código (csharp) [Seleccionar]

// Si uno hace un WriteLine mientras se espera un ReadLine pasa esto:
// "probando              // Si antes de que ponga la ultima comilla pongo un Console.WriteLine("Hola") queda asi
// "progandoHola
// "
//
// La siguentes funciones estan hechas para evitar eso
// By Raul338 (proximamente: raul338.com.ar)
static string buffer = "";
/// <summary>Escribe un texto sin "cortar" o interrumpir un Console.ReadLine()</summary>
/// <param name="Text">Texto a escribir</param>
static void WriteLine(string Text)
{
    // Guarda la ubicacion actual (la linea se le suma 1, porque es la que sigue)
    int lastLeftPos = Console.CursorLeft;
    int lastTopPos = Console.CursorTop +1;

    // Lineas de lo que se va a escribir y lo escrito a mano
    int lineas = ObtenerLineas(Text);
    int lineasEscritas = ObtenerLineas(buffer);

    // Esto equilibra algunas cuentas
    if (lastTopPos != 0)
        if (lineasEscritas < 1)
            lastTopPos -= 1;

    // Ponemos el cursor al principio de la linea que empezamos a escribir y borramos lo escrito
    Console.SetCursorPosition(0, lastTopPos - lineasEscritas);
    Console.Write("".PadLeft(buffer.Length)); // Aca vaciamos todo :P
    Console.SetCursorPosition(0, lastTopPos - lineasEscritas);

    // Escribimos el texto
    Console.WriteLine(Text);
   
    // Ponemos en el cursor en el nuevo lugar (lugarAnterior + las nuevas lineas)
    Console.SetCursorPosition(0, lastTopPos + lineas - lineasEscritas);

    // Ponemos lo que el usuario habia escrito anteriormente
    Console.Write(buffer);
}

/// <summary>Obtienes las lineas que ocupa el texto introducido en consola</summary>
/// <param name="input">Texto a contar las lineas</param>
/// <returns>Lineas que ocupa en consola</returns>
/// <!-- By Raul338 -->
static int ObtenerLineas(string input)
{
    int lineas = 0;
    // Separamos el texto en lineas
    System.Text.RegularExpressions.Match matchResult = System.Text.RegularExpressions.Regex.Match(input, @"[^\r\n]*(?:\r\n)?");
    while (matchResult.Success)
    {
        // Por alguna razon se incluyen capturas vacias o_O
        if (matchResult.Value != "")
        {
            // La expreision regular tambien cuenta los cierre de lineas, asi que los separamos
            int enter = matchResult.Value.IndexOf(System.Environment.NewLine);

            string final = matchResult.Value;
            if (enter >= 0)
                final = matchResult.Value.Substring(0, enter);

            // Hacemos la division, sera una linea, pero en consola no entra como tal y se dividen en lineas
            lineas += Convert.ToInt32(final.Length / Console.WindowWidth) + 1;
        }
        matchResult = matchResult.NextMatch();
    }
    return lineas;
}

/// <summary>ReadLine 2.0 para poder Escribir a la vez</summary>
/// <returns>El texto escrito</returns>
static string ReadLine()
{
    string result = "";
    // Lee cada tecla presionada
    ConsoleKeyInfo t = Console.ReadKey(false);
    while (t.Key != ConsoleKey.Enter)
    {
        // En caso de que borre, se quita el ultimo caracter
        if (t.Key == ConsoleKey.Backspace && buffer.Length > 0)
        {
            Console.Write(" ");
            Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
            buffer = buffer.Substring(0, buffer.Length - 1);
        }
        else
        {
            // Es un caracter cualquiera, se agrega al string
            buffer += t.KeyChar.ToString();
        }
        t = Console.ReadKey(false);
    }
    Console.WriteLine();
    // Se vacia el buffer y se devuelve lo escrito
    result = buffer;
    buffer = "";
    return result;
}



Y aca un pequeño ejemplo: Un thread con un bucle infinito que muestra numeros sucesivos en la pantalla, y ustedes pueden escribir lo que sea

Código (csharp) [Seleccionar]

static void Main(string[] args)
{
    // Empezamos el relleno
    Thread t = new Thread(Rellena);
    t.Start();

    string comando;
    do
    {
        // Al mismo tiempo que escribimos se separa lo que se va a mostrar de lo que escribimos
        comando = ReadLine();
        WriteLine(DateTime.Now.ToString("HH:mm:ss") + System.Environment.NewLine +" - " + comando);
    } while (comando != "salir");

    t.Abort();
}


// Iteracion infinita para rellenar la consola
static void Rellena()
{
    int i = 0;
    while (true) {
        WriteLine(i.ToString());
        if (i == int.MaxValue) i = 0;
        i++;
        Thread.Sleep(1000);
    }
}



Espero que lo prueben, y les guste  :)

Cualquier critica (constructiva) es recibida   ;)
#56
Hoola!
Estamos aburridos y queremos jugar (con emulador) a algun juego bueno y atrapante (en lo posible no de pelea xq al cabo de un tiempo aburren :xD) para emular ya que tenemos 2 joysticks. Pueden ser de PlayStation 1 para atras (SNES, N64, SEGA, u otros) pero no encuentro buenos "titulos" que me llamen la atencion asi que quiero que me recomienden cuales juegos de 2 jugadores (al mismo tiempo, no esperar a que uno pierda para que el otro juegue :xD) son mejores, al menos para ustedes ;-)

No pido de play2 porque la grafica no me da  :laugh: :laugh:
#57
Hola!!
Recuerdan ese post donde hablabamos de una calculadora que resuelva "por jerarquia"?
calculadora por jerarquia ()*/+- ...C#...

Bueno, al final (despues de un pequeño tiempo de dejar el proyecto abandonado) pude terminar mi pequeña version: Usando el poder de las expresiones regulares ::)
Aunque tuve que romperme el craneo para terminarlo, me di cuenta de algunas pavadas y las corregi. Ahora solo queda testearla en forma masiva

Es un modulo, por lo cual se puede usar en cualquier tipo de proyecto: Windows, Consola, Web

Su uso, simple: Llamen a "Calculadora.Eval(operacion)" y tendran el resultado enseguida :)

Miren el screenshot


Aca el codigo para quienes quieran verlo:
http://www.mediafire.com/download.php?mrwwm3zeiqz

Disfrutenlo :D (??)
#58
Hookear el teclado y escribir tildes??
Hola, de los miles de ejemplos que hay en internet para hacer un "keylogger" me base para hacer una especie de programa residente que ante presionar una contraseña (ejemplo, "holaelhacker.net") abra un determinado programa (ej: google chrome).

El programa funciona, todo bien, pero... ahora en el teclado no se pueden escribir las letras con tildes (no con ALT + 168, sino presionado la "´" y la letra a poner con tilde), cuando deberia salir "á" sale "´´a". :huh: (no cambie nada de la configuracion de idioma, cuando se saca el hook, vuelve a funcionar todo normal)

Alguna idea para solucionarlo (yo creo que es imposible usando hooks pero pregunto igual :P y en caso de que sea imposible...) o se debe hacer de otra manera? (ver las teclas presionadas con un timer (:¬¬) o usar hotkeys?

Gracias de antemano por opinar  :)
#59
Hola!

La otra vez, viendo un tema sobre un bot para fotolog (que ya estaba rondando por internet), ya no funcionaba debido a los cambios de la pagina, asi que lo modifique y lo logre hacer funcionar, pero en vb6 no me llevo tan bien que digamos, asi que lo pase a .net precisamente a C# (no se xq, se me dio de la nada jaja) asi que ahora lo comparto, no sera el primer proyecto que compartire

Se que nadie (o muy pocos, que yo conosca) de aca usan fotolog, asi que es solo para probar.
Ademas esta es una forma de hacerlo, (hay otra, con WebRequest y etc, pero ya algun dia lo hare)

[EDIT]
Version 1.1:
· Bug corregido: Si no tenias firmas el boton "firmar" se habilitaba y entraba en un bucle vacio (:huh:)
· Agregado la opcion para ver tus favoritos y los favoritos de cualquier usuario y firmarles a ellos (Gracias elmaro por la idea)

Para aquellos que vengan de programacion vb, habran conocido al InputBox, Despues de buscar y ver que no existe en C# (ovbio no?) hize un pequeño formulario parecido para invocarlo sin instanciarlo y no tener que crear un formulario sin nada mas... Cualquier sugerencia es aceptada, y lo pueden modificar a su gusto

Captura:


Descargar:

Source (Bot Flogger 1.1 + InputBox para C#): http://www.mediafire.com/download.php?mgznmmlyukh

Ejecutable (Bot Flogger 1.1): http://www.mediafire.com/download.php?n2thuyh2nzh



Version anterior

Version 1.0 (Source C#) (Source VB6) (Ejecutable)

Espero les sirva :)
#60
Programación Visual Basic / Pintar sobre DirectX ?
11 Diciembre 2009, 20:41 PM
Hola a todos.

Me estan pidiendo una aplicacion, algo problematica. La cual desarrolle en .net, funciona, salvo por un detalle.
En pocas palabras la funcion que tiene la aplicacion es la siguente

Mostrar un "reloj" en la pantalla y que funcione como cronometro en cuenta regresiva. Que sea transparente y que no tenga ninguna ventana de windows.
Lo hice, al ser transparente se "pinta" cada cierto tiempo, el problema? atras hay una ventana de algun juego que trabaja con DirectX (no importa el juego, a veces son juegos de pc y aveces emuladores, ya que son varios, algunos 2d y otros 3d) entonces el formulario transparente "titila" y a veces ni si quiera es legible.

Entonces lo que quiero es alguna recomendacion (no importa al ser vb6, lo puedo rehacer, sino lo intentare pasar a vb.net) ya sea para usar algun motor grafico o API o lo que sea para lograr que no "titile".

Si quieren mas informacion (o el codigo, que esta en vb.net) solo contesten
#61
Holaz

Estoy haciendo por un tema de "privacidad" un programa que oculta y muestra ventanas. En el cual las ventanas se muestran en un Listbox, uno le hace doble click y se ocultan / muestran segun sea el caso.
El programa tiene un Timer que cada cierto tiempo (2 segundos) actualiza el ListBox con las nuevas ventanas o quitando las que se cierran. Hasta ahi a veces solo hay un detalle, cuando se actualiza a veces mueve de lugar el item, por lo que si en el medio de tu "doble click" se mueve puede que ocultes otra ventana por error (ojo, usando el mouse, si uno solo usa el teclado no le pasa nada, puesto que el foco del item seleccionado se mueve conforme se muevan los items)

El problema viene cuando quiero cambiar el ListBox por un ListView que queda mas lindo y organizado. Pero cuando actualiza se ve cuando borra y va rellennando uno por uno,,, y hace que la seleccion y la lectura sean una odisea...

Asi que les pido que me acosejen... como puedo hacer un listbox actualizable pero que no confunda en la lectura (algo asi el listbox del Administrador de Tareas "taskmgr")

Les adjunto el programa, no esta terminado, porque pienso hacer que registre un hotkey para que nosea necesario activar el programa para ocultar una ventana  :laugh:

Descargar WindoWizard 1.0
MIRROR: Descargar WindoWizard 1.0 (MediaFire)
#62
Hooolaa!!!

Buscando en google... no llegue a encontrar lo que queria  :¬¬

tengo 2 tareas para hacer en un proyecto que controla ciertos procesos, que son agregados a una lista.

Me gustaria que cuando se añada la ruta de un ejecutable (exe) no solo aparezca la ruta sino el nombre de la aplicacion. (Buscando en google solo me aparece para leer desde el mismo ejecutable de la aplicacion, o usando assemblys pero eso solo funcionan para aplicaciones hechas en .net)

Ejemplo: si pongo el ejecutable C:\WINDOWS\System32\calc.exe quiero alguna funcion que me devuelva "Calculadora" (leyendo el Application Name del exe)





2º Duda/Problema

Para agregar exe, el usuario debe ir a la ruta donde esta instalado (alias Archivos de Programa), yo quiero que se agregue tambien archivos lnk (accesos directos) para asi leerlos y obtener el exe de donde proviene, para asi usar el punto anterior  ;)

Buscando en google, encuentro ejemplos en vb6, pero estos requieren de librerias externas o del Windows Scripting Host pero este se puede desactivar...  :¬¬ asi que me gustaria alguna forma sin depencias de hacerlo jeje....


bueno....espero que me puedan ayudar  ;D



Saludos!!!
#63
Hola a todos!

Bueno, la pregunta es simple pero complicada  ::) Hay alguna forma por codigo para saber si una base de datos X tiene acceso protegido por contraseña? (para incluir en el ConnectionString "user=***;pwd=***;")

No es de urgencia, pero me surgio la duda jeje..... y nunca la he visto en algun programa jeje.....de ultima (se me ocurre) intentar un conection string sin autenticacion y si falla, pedir la autenticacion  ;D ;D

Bueno.....desde ya, muchas gracias