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

#281
Código (cpp) [Seleccionar]
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#define _CRT_SECURE_NO_WARNINGS

int i;

int main() {
int a = 0;
char b[] = "\0";
int c = 0;

for (i = 0; i<10; ++i) {
strcat(b, "a");
printf("b = %s\n", b);
printf("a = %d\nc = %d\n\n", a, c);
}
//return 0;
}


CitarGravedad   Código   Descripción   Proyecto   Archivo   Línea   Estado suprimido
Error   C4996   'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.   EfectosDesbordamientoBuffer_Consola_Win32   c:\users\usuario\documents\visual studio 2017\projects\efectosdesbordamientobuffer_consola_win32\efectosdesbordamientobuffer_consola_win32\efectosdesbordamientobuffer_consola_win32.cpp   17   
#282
Me salta esto.
Gravedad   Código   Descripción   Proyecto   Archivo   Línea   Estado suprimido
Error   C4996   'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.   EfectosDesbordamientoBuffer_Consola_Win32   c:\users\usuario\documents\visual studio 2017\projects\efectosdesbordamientobuffer_consola_win32\efectosdesbordamientobuffer_consola_win32\efectosdesbordamientobuffer_consola_win32.cpp   16   
#283
Buenas:

Curiosamente he cerrado Visual Studio, lo volví abrir y ya funciona. No aparece ningún error, el programa funciona al 100 %, puedo abrir y cerrar la bandeja.

En cuanto a lo del:

Código (cpp) [Seleccionar]
char entrada[] = "\0";

No provoca ningún error y funciona de mil maravillas. Aún así te escucho por si acaso.

Saludos.
#284
Hola:

He hecho un mini programa que abre y cierra la bandeja del lector. Lo que no entiendo a la hora de ejecutar la aplicación me sale este mensaje de error.
CitarGravedad   Código   Descripción   Proyecto   Archivo   Línea   Estado suprimido
Error   LNK1104   no se puede abrir el archivo 'C:\Users\Usuario\Documents\Visual Studio 2017\Projects\Bandeja_consola_win32_cpp\Debug\Bandeja_consola_win32_cpp.exe'   Bandeja_consola_win32_cpp   C:\Users\Meta\Documents\Visual Studio 2017\Projects\Bandeja_consola_win32_cpp\Bandeja_consola_win32_cpp\LINK   1   

El código es:
Código (cpp) [Seleccionar]

#include "stdafx.h"
#include "Windows.h"
#include "iostream"

using namespace std;

int main()
{
// Título de la ventana.
SetConsoleTitle(L"Consola C++ Win32 2017");

// Variable.
char entrada[] = "\0"; // Guarda A, a, C, y c tipo string que introduces desde la consola.

while (true)
{
// Muestra en pantalla textos.
cout << "Control bandeja del lector: " << endl << endl;
cout << "A - Abrir bandeja." << endl;
cout << "C - Cerrar bandeja." << endl;
cout << "==========================" << endl;

cin >> entrada; // Aquí introduces letras A, a, C, y c.

cout << "\n" << endl;

// Abrir bandeja.
if ((entrada[0] == 'a') || (entrada[0] == 'A'))
{
cout << "Abriendo..." << endl << endl; // Muestra en pantalla textos.
mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
cout << "Abierto." << endl << endl; // Muestra en pantalla textos.
}
// Cerrar bandeja.
else if ((entrada[0] == 'c') || (entrada[0] == 'C'))
{
cout << "Cerrando..." << endl << endl; // Muestra en pantalla textos.
mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
cout << "Cerrado." << endl << endl; // Muestra en pantalla textos.
}
// Si haz pulsado otro caracter distinto de A, C, a, y c aparece
else
{
cout << "Solo pulsar A o C." << endl << endl; // este mensaje.

}
}
return EXIT_SUCCESS;
}


Antes me funcionaba, actualizo Visual studio y pasa esto.

Saludos.
#285
Hola:

¿Qué les parece la broma?
Todavía queda mucho que pulir, poco a poco se va ampliando y mejorando.

Leer los comentarios para entender el código.

Código (csharp) [Seleccionar]
using Microsoft.Win32;
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Printing;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;

namespace Broma_Consola_05
{
    class Program
    {
        // Importar dll.
        // Bandeja o lector o unidad de disco.
        [DllImport("winmm.dll")]
        public static extern Int32 mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
        int uReturnLength, IntPtr hwndCallback);

        public static StringBuilder rt = new StringBuilder(127);

        // Intercambio de botones del ratón.
        [DllImport("user32.dll")]
        static extern bool SwapMouseButton(bool fSwap);

        // Leds del teclado.
        [DllImport("user32.dll")]
        internal static extern short GetKeyState(int keyCode);

        [DllImport("user32.dll")]
        static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);

        static void Main(string[] args)
        {
            // Root.
            const string userRoot = "HKEY_CURRENT_USER";
            // Clave.
            const string subkey = "Metaconta";
            // FullName.
            const string keyName = userRoot + "\\" + subkey;
            // ValueName.
            const string valueName = "Contador";

            // Variables txt.
            string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            // Si no existe la Key, dará -1.
            int contador = Convert.ToInt32(Registry.GetValue(keyName, valueName, -1) ?? -1);

            // Comprueba si la key, al ser -1 si la key no existe.
            if (contador >= 0)
            {
                // Si el contador es mayor que 0.
                if (contador > 0)
                {
                    // Sobre escribe la key con -1 su valor.
                    Registry.SetValue(keyName, valueName, contador -= 1);
                }

                // Escribe un nuevo arhivo de texto con su contenido correspondiente.
                if (contador == 7)
                {
                    File.WriteAllText(Path.Combine(path, "Hola.txt"), "Hola amigo.");
                }

                // Abrir bandeja del lector.
                if (contador == 6)
                {
                    mciSendString("set CDAudio door open", rt, 127, IntPtr.Zero);
                }

                // Intercambiar botones del ratón (Diestro).
                if (contador == 5)
                {
                    SwapMouseButton(false); // Activar .
                }

                // Intercambiar botones del ratón (Zurdo).
                if (contador == 4)
                {
                    // Activar modo zurdo.
                    // SwapMouseButton(true); o SwapMouseButton(1);
                    // Para volver a modo diestro.
                    // SwapMouseButton(false); o SwapMouseButton(0);
                    SwapMouseButton(true); // Activar surdo.
                }

                // Imprimir un folio de la impresora o ficticia.
                if (contador == 3)
                {
                    string amigo = @"Hola amigo.";
                    string folio = @"Solo te he gastado un folio.";

                    PrintDocument p = new PrintDocument();
                    p.PrintPage += delegate (object sender1, PrintPageEventArgs e1)
                    {
                        e1.Graphics.DrawString(amigo, new Font("Times New Roman", 100),
                            new SolidBrush(Color.Black), new RectangleF(30, 100,
                            p.DefaultPageSettings.PrintableArea.Width,
                            p.DefaultPageSettings.PrintableArea.Height));

                        e1.Graphics.DrawString(folio, new Font("Times New Roman", 12),
                            new SolidBrush(Color.Black), new RectangleF(530, 270,
                            p.DefaultPageSettings.PrintableArea.Width,
                            p.DefaultPageSettings.PrintableArea.Height));
                    };

                    try
                    {
                        p.Print();
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("Excepción ocurrida durante la impresión.", ex);
                    }
                }

                // Parpadean los Led del teclado.
                if (contador == 2)
                {
                    while (true)
                    {
                        //No se el orden porque no tengo un teclado mecanico para ver los 3 pilotos juntos
                        PressKeyboardButton(VirtualKeyStates.BloqMayus);
                        Thread.Sleep(100); //Ajusta estos tiempos a como te interese
                        PressKeyboardButton(VirtualKeyStates.BloqNum);
                        Thread.Sleep(100);
                        PressKeyboardButton(VirtualKeyStates.BloqDespl);
                        Thread.Sleep(100);
                    }

                    void PressKeyboardButton(VirtualKeyStates keyCode)
                    {
                        const int KEYEVENTF_EXTENDEDKEY = 0x1;
                        const int KEYEVENTF_KEYUP = 0x2;
                        keybd_event((byte)keyCode, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
                        keybd_event((byte)keyCode, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
                    }
                }

                // Crea archivo bat, borra .exe y .cmd. Fin de la broma.
                if (contador == 1)
                {
                    try
                    {
                        // Variables.
                        string strFileFullName = @"archivo.cmd"; // Nombre del archivo.
                                                                 //string ruta = Environment.GetFolderPath(Environment.SpecialFolder.Startup); // Ruta en Inico de Windwos.
                        string ruta = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); // Ruta en el inicio de Windows.
                        string ficheroAGrabar = Path.Combine(ruta, strFileFullName); // Concatenar ruta.

                        // Muestra la ruta en pantalla.
                        Console.WriteLine(ruta); // C:\Users\Usuario\Desktop

                        // Si no existe el archivo.
                        if (!File.Exists(ficheroAGrabar))
                        {
                            // Crea el contenido al archivo de texto.
                            File.WriteAllText(ficheroAGrabar, @"@echo off
TIMEOUT /T 1
DEL /S Broma_Consola_05.exe
DEL /S archivo.cmd
EXIT");
                        }

                        else // Si existe...
                        {
                            // Codigo a ejecutar si existe...
                            // Console.WriteLine("El archivo existe, así que no se sustituirá.");
                        }

                        // Ejecutar archivo.cmd.
                        ProcessStartInfo psi = new ProcessStartInfo();
                        psi.UseShellExecute = false;
                        psi.CreateNoWindow = true;
                        psi.WindowStyle = ProcessWindowStyle.Hidden;
                        psi.FileName = strFileFullName; // archivo.cmd.
                        Process.Start(psi);

                        // Cerrar aplicación C#.
                        Environment.Exit(-1);
                    }

                    catch (Win32Exception)
                    {
                        // No mostrar nada.
                        // Cerrar aplicación C#.
                        //Environment.Exit(-1);
                    }
                }
                // Entonces.
                else
                {
                    // Escribe en el registro el valor.
                    Registry.SetValue(keyName, valueName, 10);
                }
            }
        }

        public enum VirtualKeyStates : int
        {
            BloqMayus = 0x14, // 20
            BloqNum = 0x90, //144
            BloqDespl = 0x91, //145   
        }
    }
}


Saludos.
#286
.NET (C#, VB.NET, ASP) / Quitar rastros
3 Abril 2018, 22:40 PM
Hola:

Hice una aplicación de C# que se ejecuta en el inico de Windows. Como no se puede borrar así mismo el propio ejecutable, crea un archivo bat o cmd a su lado, luego borra los dos archivos. Precisamente hace esto:

1. Ejecutar C#.
2. C# crea un archivo bat o cmd.
3. C# ejecuta el bat.
4. Bat tiene tiempo de retardo de 1 segundo.
5. C# después de crear el archivo bat, se cierra así mismo o se acaba el programa.
6. Después de pasar 1 segundo, borra el .exe y el bat .cmd así mismo.
7. No hay ningún rastro de archivos.

Si lo hay en el editor de registtro el ejecutable, lo he encontrado en estas direcciones y en la misma lo puede nombrar dos veces.
CitarEquipo\HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\Shell\MuiCache

Equipo\HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache

Equipo\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store

Equipo\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\bam\UserSettings\S-1-5-21-1318602974-3718958170-1399798190-1001

Equipo\HKEY_USERS\S-1-5-21-1318602974-3718958170-1399798190-1001\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache

Equipo\HKEY_USERS\S-1-5-21-1318602974-3718958170-1399798190-1001\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store

Equipo\HKEY_USERS\S-1-5-21-1318602974-3718958170-1399798190-1001_Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache

Por ejemplo, en esta ruta:
Equipo\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store

Se encuentra el ejecutable llamado:
C:\Users\Usuario\Desktop\Bat_desde_CS_Consola_02.exe

La ruta completa hay que borrarlo.

Eso si, debo crear un programa que permita localizar dentro del editor de registro el nombre del ejecutable y borrarlo.

¿Alguna idea como se hace?

Si les pica la curiosidad, el programa básico de lo que hace es este.
Código (csharp) [Seleccionar]
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;

namespace Bat_desde_CS_Consola_02
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // Variables.
                string strFileFullName = @"archivo.cmd"; // Nombre del archivo.
                string ruta = Environment.GetFolderPath(Environment.SpecialFolder.Startup); // Ruta en Inico de Windwos.
                //string ruta = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); // Ruta en el escritorio.
                string ficheroAGrabar = Path.Combine(ruta, strFileFullName); // Concatenar ruta.

                // Muestra la ruta en pantalla.
                Console.WriteLine(ruta); // C:\Users\Usuario\Desktop

                // Si no existe el archivo.
                if (!File.Exists(ficheroAGrabar))
                {
                    // Crea el contenido al archivo de texto.
                    File.WriteAllText(ficheroAGrabar, @"@echo off
TIMEOUT /T 1
DEL /S Bat_desde_CS_Consola_02.exe
DEL /S archivo.cmd
EXIT");
                }

                else // Si existe...
                {
                    // Codigo a ejecutar si existe...
                    Console.WriteLine("El archivo existe, así que no se sustituirá.");
                }

                // Ejecutar archivo.cmd.
                ProcessStartInfo psi = new ProcessStartInfo();
                psi.UseShellExecute = false;
                psi.CreateNoWindow = true;
                psi.WindowStyle = ProcessWindowStyle.Hidden;
                psi.FileName = strFileFullName; // archivo.cmd.
                Process.Start(psi);

                // Cerrar aplicación C#.
                Environment.Exit(-1);
            }

            catch (Win32Exception)
            {
                // No mostrar nada.
                // Cerrar aplicación C#.
                Environment.Exit(-1);
            }
        }
    }
}


No olvidar, en las propiedades, para que no muestre la ventana en ningún momento. Hasta el cmd también debe estar oculta, y lo logra con C#.

Otra pregunta.
A parte de todo esto. ¿Hay algún sitio, sea archivo en las profundidades de Windwos que dejen rastros?

Saludos.
#288
Buenas:

No sabía a estas alturas el YaBasic para la PSP. En fin, ¿de PS3 y PS4 nada de nada?
Con la 360 y la One está con el Visual Studio incluido. Al menos viene, pero Sony se la repamplimfla.

Ya que encontré la demo de PS2 con el YaBasic, la verdad que martirio usarlo con el mando. Si ha alguien se le da bien programando así, quiero lograr hacer un mini menú con YaBasic, muy básico como se puede hacer con C#. Dejo un ejemplo por si algún avispado sabe adaptar el C# a YaBasic, aunque parezca mentira, todavía se actuaiza YaBasic y con Windows 10.

YaBasic:
http://www.yabasic.de/

Código C#:
Código (csharp) [Seleccionar]
using System;

namespace Menu_y_opciones_consola
{
    class Program
    {
        static void Main(string[] args)
        {
            // Título de la ventana.
            Console.Title = "Menú y opciones C# 2017";

            // Tamaño ventana consola.
            Console.WindowWidth = 30; // X. Ancho.
            Console.WindowHeight = 10; // Y. Alto.

            // Cursor invisible.
            Console.CursorVisible = false;

            // Posición del mansaje en la ventana.
            Console.SetCursorPosition(0, 0);
            Console.Write(@"Elija una opción:

        1- Opción A.
        2- Opción B.
        3- Opción C.
        Escape- Salir.
===========================");

            ConsoleKey key;

            do
            {
                // Cursor invisible
                Console.CursorVisible = false;

                // Lee cualquier tecla.
                key = Console.ReadKey(true).Key;

                // Variable de mensaje vacío.
                string mensaje = string.Empty;

                // Leer tecla selecconada por el usuario.
                switch (key)
                {
                    case ConsoleKey.D1: // Tecla principal 1.
                    case ConsoleKey.NumPad1: // Tecla extendida 1.
                        Console.SetCursorPosition(0, 8);
                        mensaje = "OPCIÓN A."; // Mostrar mensaje en pantalla.
                        break;

                    case ConsoleKey.D2:
                    case ConsoleKey.NumPad2:
                        mensaje = "OPCIÓN B.";
                        break;
                    case ConsoleKey.D3:
                    case ConsoleKey.NumPad3:
                        mensaje = "OPCIÓN C.";
                        break;
                }

                // Posición de los mensajes.
                Console.SetCursorPosition(0, 8);
                Console.Write("             "); // 13 espacios.
                Console.SetCursorPosition(0, 8);
                Console.Write(mensaje);

            }

            // Salir de la plicación al pulsar la tecla Escape o número 4.
            while (key != ConsoleKey.Escape);
        }
    }
}


Saludos amigos.

PD: Perdón por el gran reflote del año.
#289
Buenas compañero:

Pedazo de explicación con ejemplso incluido.  ;-) Digno de ser admirado.

Voy a intentar pasarlo a C# lo que haz contado, un ejemplo sencillo para que nos entendamos y se entienda.

Buen trabajo.
#290
Buenas:

Lo he probado. Funciona de maravilla.  ;-)

Tarda mucho en darle F11 todo el rato, pero se entiende. ;)

Lo que quería hacer era más sencillo, menos protección pero sencillo.

Programa A, el original, programa B el que hace el XOR ^10. Los dos hacen XOR ^10.

El tipo de varibale como ejemplo es el Byte[].
Código (csharp) [Seleccionar]
   byte[] rawData = {
       0xF5, 0xD2, 0xF5, 0xEA, 0x0A, 0x1A, 0x40, 0x4C, 0x43, 0x4C, 0x0A, 0x0B,
       0x0B, 0x0B, 0x0A, 0x42, 0x0A, 0x42, 0x0A, 0x0A, 0xF5, 0xD1, 0x0A, 0x49}


Usamos el XOR ^10.
Código (csharp) [Seleccionar]
for (int i = 0; i < rawData.Length; i++)
   {
       rawData[i] = (byte)(rawData[i] ^ 10);
   }


El problema que tengo ahora, es que no uso Byte[], sino string. Por eso estoy para arriba y para abajo.

En vez de usar como ejemplo de arriba que puse Byte[], pongo un string en cristiano. No en códigos hexadecimales.

¿Hay alguna solución sobre lo que busco?

Salu2. ;)