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

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 ... 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [41] 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 ... 255
401  Programación / .NET (C#, VB.NET, ASP) / Re: Controlando estados de los mensajes en: 4 Mayo 2018, 13:21 pm
Buenos días buen hombre:

Lo he logrado. Lo dejo aquí por si alguien le pica la curiosidad algún lector o lectora.
Código
  1. open System
  2. open System.Text
  3. open System.Windows.Forms // Añadir refrencias.
  4. open System.Drawing // Añadir referencias.
  5. open System.Runtime.InteropServices
  6.  
  7. // Importar librería o dll externo.
  8. [<DllImport("winmm.dll")>]
  9. extern int mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
  10.        int uReturnLength, IntPtr hwndCallback)
  11.  
  12. let rt = StringBuilder(127)
  13.  
  14. // M&#233;todo necesario para admitir el Dise&#241;ador. No se puede modificar
  15. // el contenido de este m&#233;todo con el editor de c&#243;digo.
  16. let form = new Form()
  17. let label_Mensaje = new Label()
  18. let groupBox_Bandeja = new GroupBox()
  19. let button_Abrir = new Button();
  20. let button_Cerrar = new Button();
  21. groupBox_Bandeja.SuspendLayout()
  22. form.SuspendLayout()
  23.  
  24. // groupBox_Bandeja
  25. groupBox_Bandeja.Controls.Add(button_Abrir) // A&#241;adir botones en el
  26. groupBox_Bandeja.Controls.Add(button_Cerrar) // groupBox_Bandeja.
  27. groupBox_Bandeja.Location <- Point(22, 118)
  28. groupBox_Bandeja.Name <- "groupBox_Bandeja"
  29. groupBox_Bandeja.Size <- Size(227, 90)
  30. groupBox_Bandeja.TabIndex <- 0
  31. groupBox_Bandeja.TabStop <- false
  32. groupBox_Bandeja.Text <- "Bandeja:"
  33.  
  34. // button_Abrir
  35. button_Abrir.Location <- Point(26, 39)
  36. button_Abrir.Name <- "button_Abrir"
  37. button_Abrir.Size <- Size(75, 23)
  38. button_Abrir.TabIndex <- 0
  39. button_Abrir.Text <- "&Abrir"
  40. button_Abrir.UseVisualStyleBackColor <- true
  41. // this.button_Abrir.Click += new System.EventHandler(this.button_Abrir_Click);
  42.  
  43. // button_Cerrar
  44. button_Cerrar.Location <- Point(129, 39)
  45. button_Cerrar.Name <- "button_Cerrar"
  46. button_Cerrar.Size <- Size(75, 23)
  47. button_Cerrar.TabIndex <- 1
  48. button_Cerrar.Text <- "&Cerrar"
  49. button_Cerrar.UseVisualStyleBackColor <- true
  50.  
  51. // label_Mensaje
  52. label_Mensaje.AutoSize <- true
  53. //label_Mensaje.Font <- Font("Microsoft Sans Serif", 36, FontStyle.Bold, GraphicsUnit.Point, ((byte)(0)))
  54. label_Mensaje.Location <- Point(12, 9)
  55. label_Mensaje.Name <- "label_Mensaje"
  56. label_Mensaje.Size <- Size(52, 55)
  57. label_Mensaje.TabIndex <- 1
  58. label_Mensaje.Text <- "?"
  59. form.Controls.Add(label_Mensaje) // A&#241;adir en el formulario.
  60.  
  61. // Crear formulario.
  62. let AutoScaleDimensions = new Size(6, 13)
  63. form.AutoScaleMode <- AutoScaleMode.Font
  64. form.BackColor <- Color.FromArgb(((int)(((byte)(114)))), ((int)(((byte)(54)))), ((int)(((byte)(161))))) // Color violeta.
  65. let ClientSize = new Size(284, 261)
  66. form.Controls.Add(groupBox_Bandeja) // A&#241;adir en el formulario.
  67. form.Name <- "Form1"
  68. form.StartPosition <- FormStartPosition.CenterScreen
  69. form.Text <- "Visual F# 2017"
  70. groupBox_Bandeja.ResumeLayout(false)
  71. form.ResumeLayout(false)
  72. form.PerformLayout()
  73. //----------------------------------------------------------------------------------
  74.  
  75. // Abrir la bandeja.
  76. button_Abrir.Click.Add(fun _a ->
  77. label_Mensaje.Text <- "Abriendo..."
  78. Application.DoEvents()
  79. mciSendString("set CDAudio door open", rt, 127, IntPtr.Zero) |> ignore
  80. label_Mensaje.Text <- "Abierto."
  81. )
  82.  
  83.  
  84. // Cerrar la bandeja.
  85. button_Cerrar.Click.Add(fun _c ->
  86. label_Mensaje.Text <- "Cerrando..."
  87. Application.DoEvents()
  88. mciSendString("set CDAudio door closed", rt, 127, IntPtr.Zero) |> ignore
  89. label_Mensaje.Text <- "Cerrado."
  90. )
  91.  
  92. [<STAThread>]
  93. Application.Run(form)

Lo que no logro es la línea que lo dejé en C#  no se como adaptarlo en F#, cambiar el tamaño de la fuente de un label.

Gracias por las respuestas.

PD: Todo lo de F# que has contado lo he leído, a pesar de ello, muchos por Internet hacen tonterías estas y soy de ellos.

PD2: Probaré el leguaje R. Haber si logro hacer lo mismo. Son solo tonterías que hago. Pero antes, seguiré con F#, esta vez con WPF para variar.
402  Programación / .NET (C#, VB.NET, ASP) / Controlando estados de los mensajes en: 4 Mayo 2018, 00:17 am
Hola:

Por fin a base de código y comiando desde C#, he logrado hacer que muestre en modo visual el F#, normalmente es en consola, pero bueno.



Quiero lograr de alguna vez por todas, que al pulsar el botón abrir, en el momento que lo pulses, dice el mensaje "Abriendo...".

Cuando la bandeja del lector se abrió del todo, dice, "Abierto.".

Logro que abra y cierre la bandeja pero no que muestre los mensajes.

¿Alguna idea?

Sigo dándole caña, me cansé.

Código Visual F#:
Código:
// En Opciones de Lector_Form_fs en el Explorador de soluciones.
// Con el segundo botón del ratón, en Tipo de salida: Aplicación Windwos.

open System
open System.Text
open System.Windows.Forms // Añadir refrencias.
open System.Drawing // Añadir referencias.
open System.Runtime.InteropServices

// Importar librería o dll externo.
[<DllImport("winmm.dll")>]
extern int mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
        int uReturnLength, IntPtr hwndCallback)

let rt = StringBuilder(127)

// Método necesario para admitir el Diseñador. No se puede modificar
// el contenido de este método con el editor de código.
let form = new Form()
let label_Mensaje = new Label()
let groupBox_Bandeja = new GroupBox()
let button_Abrir = new Button();
let button_Cerrar = new Button();
groupBox_Bandeja.SuspendLayout()
form.SuspendLayout()

// groupBox_Bandeja
groupBox_Bandeja.Controls.Add(button_Abrir) // Añadir botones en el
groupBox_Bandeja.Controls.Add(button_Cerrar) // groupBox_Bandeja.
groupBox_Bandeja.Location <- Point(22, 118)
groupBox_Bandeja.Name <- "groupBox_Bandeja"
groupBox_Bandeja.Size <- Size(227, 90)
groupBox_Bandeja.TabIndex <- 0
groupBox_Bandeja.TabStop <- false
groupBox_Bandeja.Text <- "Bandeja:"

// button_Abrir
button_Abrir.Location <- Point(26, 39)
button_Abrir.Name <- "button_Abrir"
button_Abrir.Size <- Size(75, 23)
button_Abrir.TabIndex <- 0
button_Abrir.Text <- "&Abrir"
button_Abrir.UseVisualStyleBackColor <- true

// button_Cerrar
button_Cerrar.Location <- Point(129, 39)
button_Cerrar.Name <- "button_Cerrar"
button_Cerrar.Size <- Size(75, 23)
button_Cerrar.TabIndex <- 1
button_Cerrar.Text <- "&Cerrar"
button_Cerrar.UseVisualStyleBackColor <- true

// label_Mensaje
label_Mensaje.AutoSize <- true
//label_Mensaje.Font <- Font("Microsoft Sans Serif", 36, FontStyle.Bold, GraphicsUnit.Point, ((byte)(0)))
label_Mensaje.Location <- Point(12, 9)
label_Mensaje.Name <- "label_Mensaje"
label_Mensaje.Size <- Size(52, 55)
label_Mensaje.TabIndex <- 1
label_Mensaje.Text <- "?"
form.Controls.Add(label_Mensaje) // Añadir en el formulario.

// Crear formulario.
let AutoScaleDimensions = new Size(6, 13)
form.AutoScaleMode <- AutoScaleMode.Font
form.BackColor <- Color.FromArgb(((int)(((byte)(114)))), ((int)(((byte)(54)))), ((int)(((byte)(161))))) // Color violeta.
let ClientSize = new Size(284, 261)
form.Controls.Add(groupBox_Bandeja) // Añadir en el formulario.
form.Name <- "Form1"
form.StartPosition <- FormStartPosition.CenterScreen
form.Text <- "Visual F# 2017"
groupBox_Bandeja.ResumeLayout(false)
form.ResumeLayout(false)
form.PerformLayout()
//----------------------------------------------------------------------------------

// Abrir la bandeja.
let mensajeA abr = label_Mensaje.Text <- "Abriendo..."
let abr = label_Mensaje.Click.Add(mensajeA)
Application.DoEvents()
let button_Abrir_Click abrir = mciSendString("set CDAudio door open", rt, 127, IntPtr.Zero) |> ignore
let abrir = button_Abrir.Click.Add(button_Abrir_Click)
let mensajeAbierto2 ao = label_Mensaje.Text <- "Abierto."
let ao = label_Mensaje.Click.Add(mensajeAbierto2)

// Cerrar la bandeja.
let button_Cerrar_Click cerrar = mciSendString("set CDAudio door closed", rt, 127, IntPtr.Zero) |> ignore
let cerrar = button_Cerrar.Click.Add(button_Cerrar_Click)

[<STAThread>]
Application.Run(form)

Saludos.

PD: ¿Por qué Microsoft no hizo o hace una buena plantilla para crear formularios Windwos o WPF como se hace con C# y VB .net? Está dedicado a modo consola, pero en Visual, hay que programar todo.
403  Programación / .NET (C#, VB.NET, ASP) / Re: Programas de broma en: 3 Mayo 2018, 23:44 pm
Ya que no será malicioso puedes inyectar tu código en otro proceso que sea común... :D tiempo que no toco el formato PE.

Por ejemplo en vb
http://www.forosdelweb.com/f69/inyectar-exe-otro-exe-670787/

Veo que usas funciones de la API, bien podrías hacerlo en C/C++ así tu broma no dependerá del netframework.

Saludos.

Gracias por la info caballero, pero no entiendo esto por ahora. Me centro primero en lo que estoy haciendo y luego observo lo que cuentas. Haber que ventajas tiene.

Por ahora he hecho esto.
Código
  1. using Microsoft.Win32;
  2. using System;
  3. using System.ComponentModel;
  4. using System.Diagnostics;
  5. using System.Drawing; // A&#241;adir referencia.
  6. using System.Drawing.Printing;
  7. using System.IO;
  8. using System.Runtime.InteropServices;
  9. using System.Text;
  10. using System.Threading;
  11.  
  12. namespace Broma_Consola_06
  13. {
  14.    class Program
  15.    {
  16.        // Importar dll.
  17.        // Bandeja o lector o unidad de disco.
  18.        [DllImport("winmm.dll")]
  19.        public static extern Int32 mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
  20.        int uReturnLength, IntPtr hwndCallback);
  21.  
  22.        public static StringBuilder rt = new StringBuilder(127);
  23.  
  24.        // Intercambio de botones del rat&#243;n.
  25.        [DllImport("user32.dll")]
  26.        static extern bool SwapMouseButton(bool fSwap);
  27.  
  28.        // Leds del teclado.
  29.        [DllImport("user32.dll")]
  30.        internal static extern short GetKeyState(int keyCode);
  31.  
  32.        [DllImport("user32.dll")]
  33.        static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
  34.  
  35.        // Giro pantalla.
  36.        #region Giro pantalla.
  37.        public static class NativeMethods
  38.        {
  39.            // Declaraci&#243;n PInvoke para poder llamar al m&#233;todo EnumDisplaySettings de la API Win32.
  40.            // Recupera los modos de visualizaci&#243;n disponibles.
  41.            [DllImport("user32.dll", CharSet = CharSet.Ansi)]
  42.            private static extern int EnumDisplaySettings(
  43.                string lpszDeviceName,
  44.                int iModeNum,
  45.                ref DEVMODE lpDevMode);
  46.  
  47.            // Declaraci&#243;n PInvoke para poder llamar al m&#233;todo ChangeDisplaySettings de la API Win32.
  48.            // Cambia el modo de visualizaci&#243;n actual.
  49.            [DllImport("user32.dll", CharSet = CharSet.Ansi)]
  50.            public static extern int ChangeDisplaySettings(
  51.                ref DEVMODE lpDevMode,
  52.                int dwFlags);
  53.  
  54.            // Crea un objeto DEVMODE con la informaci&#243;n del modo de visualizaci&#243;n.
  55.            public static DEVMODE CreateDevMode()
  56.            {
  57.                int ENUM_CURRENT_SETTINGS = -1;
  58.                DEVMODE dm = new DEVMODE
  59.                {
  60.                    dmDeviceName = new string(new char[32]),
  61.                    dmFormName = new string(new char[32])
  62.                };
  63.                dm.dmSize = (short)Marshal.SizeOf(dm);
  64.                EnumDisplaySettings(null, ENUM_CURRENT_SETTINGS, ref dm);
  65.                return dm;
  66.            }
  67.  
  68.  
  69.            // Constantes.
  70.            // Modos de visualizaci&#243;n (girado 0/90/180/270 grados).
  71.            public const int DMDO_DEFAULT = 0;
  72.            public const int DMDO_90 = 1;
  73.            public const int DMDO_180 = 2;
  74.            public const int DMDO_270 = 3;
  75.        }
  76.  
  77.        // Mapear la estructura que define el modo de visualizaci&#243;n en user32.dll.
  78.        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  79.        public struct DEVMODE
  80.        {
  81.            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string dmDeviceName;
  82.  
  83.            public readonly short dmSpecVersion;
  84.            public short dmDriverVersion;
  85.            public short dmSize;
  86.            public short dmDriverExtra;
  87.            public int dmFields;
  88.            public int dmPositionX;
  89.            public int dmPositionY;
  90.            public int dmDisplayOrientation;
  91.            public int dmDisplayFixedOutput;
  92.            public short dmColor;
  93.            public short dmDuplex;
  94.            public short dmYResolution;
  95.            public short dmTTOption;
  96.            public short dmCollate;
  97.  
  98.            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string dmFormName;
  99.  
  100.            public short dmLogPixels;
  101.            public short dmBitsPerPel;
  102.            public int dmPelsWidth;
  103.            public int dmPelsHeight;
  104.            public int dmDisplayFlags;
  105.            public int dmDisplayFrequency;
  106.            public int dmICMMethod;
  107.            public int dmICMIntent;
  108.            public int dmMediaType;
  109.            public int dmDitherType;
  110.            public int dmReserved1;
  111.            public int dmReserved2;
  112.            public int dmPanningWidth;
  113.            public int dmPanningHeight;
  114.        }
  115.  
  116.        private static void Swap()
  117.        {
  118.            // Creamos el objeto DEVMODE con la informaci&#243;n del modo de visualizaci&#243;n.
  119.            var dm = NativeMethods.CreateDevMode();
  120.  
  121.            // Establecemos la orientaci&#243;n en funci&#243;n de la actual (girando 180&#186;)
  122.            // a trav&#233;s de la propiedad dmDisplayOrientation.
  123.            var previousDisplayOrientation = dm.dmDisplayOrientation;
  124.            switch (previousDisplayOrientation)
  125.            {
  126.                case NativeMethods.DMDO_DEFAULT:
  127.                    dm.dmDisplayOrientation = NativeMethods.DMDO_180;
  128.                    break;
  129.                case NativeMethods.DMDO_270:
  130.                    dm.dmDisplayOrientation = NativeMethods.DMDO_90;
  131.                    break;
  132.                case NativeMethods.DMDO_180:
  133.                    dm.dmDisplayOrientation = NativeMethods.DMDO_DEFAULT;
  134.                    break;
  135.                case NativeMethods.DMDO_90:
  136.                    dm.dmDisplayOrientation = NativeMethods.DMDO_270;
  137.                    break;
  138.            }
  139.            // Cambia la pantalla al nuevo modo de visualizaci&#243;n.
  140.            //NativeMethods.ChangeDisplaySettings(ref dm, 0);
  141.            NativeMethods.ChangeDisplaySettings(ref dm, 0);
  142.  
  143.            //// A los dos segundos recupera su estado normal.
  144.            //Task.Delay(2000).ContinueWith(t =>
  145.            //{
  146.            //    // Restablece la orientaci&#243;n previa.
  147.            //    dm.dmDisplayOrientation = previousDisplayOrientation;
  148.            //    // Cambia la pantalla al modo anterior.
  149.            //    NativeMethods.ChangeDisplaySettings(ref dm, 0);
  150.            //});
  151.        }
  152.        #endregion
  153.  
  154.        static void Main(string[] args)
  155.        {
  156.            // Root.
  157.            const string userRoot = "HKEY_CURRENT_USER";
  158.            // Clave.
  159.            const string subkey = "Metaconta";
  160.            // FullName.
  161.            const string keyName = userRoot + "\\" + subkey;
  162.            // ValueName.
  163.            const string valueName = "Contador";
  164.  
  165.            // Variables txt.
  166.            string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
  167.  
  168.            // Si no existe la Key, dar&#225; -1.
  169.            int contador = Convert.ToInt32(Registry.GetValue(keyName, valueName, -1) ?? -1);
  170.  
  171.            bool led = true;
  172.  
  173.            // Comprueba si la key, al ser -1 si la key no existe.
  174.            if (contador >= 0)
  175.            {
  176.                // Si el contador es mayor que 0.
  177.                if (contador > 0)
  178.                {
  179.                    // Sobre escribe la key con -1 su valor.
  180.                    Registry.SetValue(keyName, valueName, contador -= 1);
  181.                }
  182.  
  183.                // Cambio giro pantalla a 180&#186;.
  184.                if (contador == 9)
  185.                {
  186.                    Swap();
  187.                }
  188.  
  189.                if (contador == 8)
  190.                {
  191.                    Swap();
  192.                }
  193.  
  194.                // Escribe un nuevo arhivo de texto con su contenido correspondiente.
  195.                if (contador == 7)
  196.                {
  197.                    File.WriteAllText(Path.Combine(path, "Hola.txt"), "Hola amigo.");
  198.                }
  199.  
  200.                // Abrir bandeja del lector.
  201.                if (contador == 6)
  202.                {
  203.                    mciSendString("set CDAudio door open", rt, 127, IntPtr.Zero);
  204.                }
  205.  
  206.                // Intercambiar botones del rat&#243;n (Zurdo).
  207.                if (contador == 5)
  208.                {
  209.                    // Activar modo zurdo.
  210.                    // SwapMouseButton(true); o SwapMouseButton(1);
  211.                    // Para volver a modo diestro.
  212.                    // SwapMouseButton(false); o SwapMouseButton(0);
  213.                    SwapMouseButton(true); // Activar surdo.
  214.                }
  215.  
  216.                // Intercambiar botones del rat&#243;n (Diestro).
  217.                if (contador == 4)
  218.                {
  219.                    SwapMouseButton(false); // Activar .
  220.                }
  221.  
  222.                // Imprimir un folio de la impresora o ficticia.
  223.                if (contador == 3)
  224.                {
  225.                    string amigo = @"Hola amigo.";
  226.                    string folio = @"Solo te he gastado un folio.";
  227.  
  228.                    PrintDocument p = new PrintDocument();
  229.                    p.PrintPage += delegate (object sender1, PrintPageEventArgs e1)
  230.                    {
  231.                        e1.Graphics.DrawString(amigo, new Font("Times New Roman", 100),
  232.                            new SolidBrush(Color.Black), new RectangleF(30, 100,
  233.                            p.DefaultPageSettings.PrintableArea.Width,
  234.                            p.DefaultPageSettings.PrintableArea.Height));
  235.  
  236.                        e1.Graphics.DrawString(folio, new Font("Times New Roman", 12),
  237.                            new SolidBrush(Color.Black), new RectangleF(530, 270,
  238.                            p.DefaultPageSettings.PrintableArea.Width,
  239.                            p.DefaultPageSettings.PrintableArea.Height));
  240.                    };
  241.  
  242.                    try
  243.                    {
  244.                        p.Print();
  245.                    }
  246.                    catch (Exception ex)
  247.                    {
  248.                        throw new Exception("Excepci&#243;n ocurrida durante la impresi&#243;n.", ex);
  249.                    }
  250.                }
  251.  
  252.                // Parpadean los Led del teclado.
  253.                if (contador == 2)
  254.                {
  255.                    int varLed = 0;
  256.                    while (led)
  257.                    {
  258.  
  259.                        PressKeyboardButton(VirtualKeyStates.BloqMayus);
  260.                        Thread.Sleep(100);
  261.                        PressKeyboardButton(VirtualKeyStates.BloqNum);
  262.                        Thread.Sleep(100);
  263.                        PressKeyboardButton(VirtualKeyStates.BloqDespl);
  264.                        Thread.Sleep(100);
  265.  
  266.                        // Al valor indicado, para salir del bucle.
  267.                            if (varLed == 300)
  268.                            {
  269.                                led = false;
  270.                            }
  271.  
  272.                        varLed++;
  273.                    }
  274.  
  275.                    void PressKeyboardButton(VirtualKeyStates keyCode)
  276.                    {
  277.                        const int KEYEVENTF_EXTENDEDKEY = 0x1;
  278.                        const int KEYEVENTF_KEYUP = 0x2;
  279.                        keybd_event((byte)keyCode, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
  280.                        keybd_event((byte)keyCode, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
  281.                    }                    
  282.                }
  283.  
  284.                // Crea archivo bat, borra .exe y .cmd. Fin de la broma.
  285.                if (contador == 1)
  286.                {
  287.                    try
  288.                    {
  289.                        // Variables.
  290.                        string strFileFullName = @"archivo.cmd"; // Nombre del archivo.
  291.                        string ruta = Environment.GetFolderPath(Environment.SpecialFolder.Startup); // Ruta en Inico de Windwos.
  292.                        //string ruta = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); // Ruta en el inicio de Windows.
  293.                        string ficheroAGrabar = Path.Combine(ruta, strFileFullName); // Concatenar ruta.
  294.  
  295.                        // Muestra la ruta en pantalla.
  296.                        Console.WriteLine(ruta); // C:\Users\Usuario\Desktop
  297.  
  298.                        // Si no existe el archivo.
  299.                        if (!File.Exists(ficheroAGrabar))
  300.                        {
  301.                            // Crea el contenido al archivo de texto.
  302.                            File.WriteAllText(ficheroAGrabar, @"@echo off
  303. TIMEOUT /T 1
  304. DEL /S Broma_Consola_06.exe
  305. DEL /S archivo.cmd
  306. EXIT");
  307.                        }
  308.  
  309.                        else // Si existe...
  310.                        {
  311.                            // Codigo a ejecutar si existe...
  312.                            // Console.WriteLine("El archivo existe, as&#237; que no se sustituir&#225;.");
  313.                        }
  314.  
  315.                        // Ejecutar archivo.cmd.
  316.                        ProcessStartInfo psi = new ProcessStartInfo();
  317.                        psi.UseShellExecute = false;
  318.                        psi.CreateNoWindow = true;
  319.                        psi.WindowStyle = ProcessWindowStyle.Hidden;
  320.                        psi.FileName = strFileFullName; // archivo.cmd.
  321.                        Process.Start(psi);
  322.  
  323.                        // Cerrar aplicaci&#243;n C#.
  324.                        Environment.Exit(-1);
  325.                    }
  326.  
  327.                    catch (Win32Exception)
  328.                    {
  329.                        // No mostrar nada.
  330.                        // Cerrar aplicaci&#243;n C#.
  331.                        //Environment.Exit(-1);
  332.                    }
  333.                }
  334.            }
  335.  
  336.            // Entonces.
  337.            else
  338.            {
  339.                // Escribe en el registro el valor.
  340.                // Empieza la cuenta atr&#225;s desde aqu&#237;.
  341.                Registry.SetValue(keyName, valueName, 10);
  342.            }
  343.        }
  344.  
  345.        // Led de los botones del taclado.
  346.        public enum VirtualKeyStates : int
  347.        {
  348.            BloqMayus = 0x14, // 20
  349.            BloqNum = 0x90, //144
  350.            BloqDespl = 0x91, //145  
  351.        }
  352.    }
  353. }
  354.  

Me falta más bromas.

Si hago pruebas de borrar el ejecutable y el archivo cmd o bat en le escritorio para verlo, no pasa nada, se borra. Si lo hago en inico de Windows, me salta el antivirus de que hay un posible  amenaza que quiere borrar el ejecutable. Vaya por Dios. Esto con Windows 10, con Windows 7 y 8 no se si lo detecta.
404  Programación / .NET (C#, VB.NET, ASP) / Re: Programas de broma en: 21 Abril 2018, 19:23 pm
No as intentado usar un rootkit ?

Rootkit Startup Method ( full hidden startup x32 x86 working ) vb.net  ;D





Sí.

Muchísimo.

Por ahora centrado en hacer el programa principal. A parte de eso, estaba aprendiendo también manejar servicios windows que es un rollo que no veas para lo que quiero.

Intentaré seguir la tónica de Visual Basic .net centrado a C#. Todavía no se desprenden del VB 6 ni loco.

La razón por la cual Microsoft descontinuó Visual Basic.

Gracias por el videazo. ;)
405  Programación / .NET (C#, VB.NET, ASP) / Re: Programas de broma en: 18 Abril 2018, 10:36 am
Buenas:

Parece ser que es una broma pesada. En cuanto al icono de Java, nombré eso pro nombrar, puede ser otro. Hay muchos iconos por internet. Hay que intentar una cosa que lo primero que se le ocurra, es no formatear así sin más.

Hay una broma que le llegó a un amigo, salió una barra de formateando disco duro y haciendo mucho ruido. Al final salió un mensaje en castellano que dijo:

Citar
Es una broma.
A la próxima ten mucho cuidado con los archivos que ejectutes.

Mi broma continua cuando al final de repente, aparezca la famosa pantalla azul sobre error de Windows, un segundo o dos, para que no le de tiempo a reiniciar ya, como hacen muchos, al final dirá letra por letra.

Citar
Es una broma.

Se quita la pantalla.

El ordenador del cliente tiene que estar intacto, como si no hubiera ocurrido nada, sano y salvo. Sin infecciones, sin modificaciones, sin huellas en el regedit, como el nombre el ejecutable que se queda guardado ahí, y sin ninguna otra majadería. el ejecutable debe desaparecer, sea desde el inico o en servivios, que es lo que estoy haciendo pruebas ahora mismo para conocerlo a fondo, nada de conectarse a internet, nada de robos de datos o información del usuario como saber que PC usa, aquí solo bromas, sin causar grandes molestias o sustos graves. Por ahora, no lo detecta ningún antivirus.

;)
406  Programación / .NET (C#, VB.NET, ASP) / Re: Programas de broma en: 17 Abril 2018, 11:49 am
Buenas:

No es malicioso ni la rosa. Me he informado bien por Internet. Es broma, peligrosos si infecta, se propaga mientras hace daño por donde pase. En este caso, al final que sigo con la broma, tiene que estar el ordenador en buen estado, tal como lo encontró al principio. Sin pérdidas de datos, sin robo de contraseñas de Web o lo que sea, sin cosas maliciosas. ;)

Ya pondré el programa final cuando lo acabe.

Para escapar, a lo mejor lo pongo en modo servicios para que no se den cuenta. Aquí leyendo un poco el tutorial haber como es.

Gracias por la información.
407  Programación / .NET (C#, VB.NET, ASP) / Re: Programas de broma en: 17 Abril 2018, 02:41 am
Buenas:

Siguiendo la broma. Ahora está la parte de invertir la pantalla, cuando vuelvas a iniciar, se vuelve normal.

El problema que me di cuenta en Windows 10, pueden saber que en inicio hay un programa.



¿No hay otro sitio para esconderlo?

Tendré que usar trucos como , usar el icono de Java. Donde pone anunciante, poner su anuncio. Como pueden ver en Broma_Consola_06, no tiene nada en Anunciante.

¿Cómo se pone algo?

Saludos.
408  Programación / .NET (C#, VB.NET, ASP) / Detectar disco duro externo por USB en: 16 Abril 2018, 23:16 pm
Hola:

Quiero ahcer un programa que al insertar un PenDrive o una disco duro externo por USB, lo detecte y borre todos los datos en su interior. Primero detecta, a los 10 segundos empieza a borrar todo.

Lo que he hecho pruebas que al conectar mi pendrive, es la letra L. Mi idea es tener siempre el programa en StartUp o inicio de Windows para que siempre esté activo, asechando que detecte una unidad L: para ser borrado.

He hecho este programa que solo lee todo lo que hay y se queda ahí. En C#.

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. namespace Detector_PenDrive_HDD_Consola_01
  9. {
  10.    class Program
  11.    {
  12.        static void Main(string[] args)
  13.        {
  14.            // Título de la ventana.
  15.            string titulo = "Detectar alamcenamiento - C# 2017";
  16.            Console.Title = titulo;
  17.  
  18.            // Tamaño ventana consola.
  19.            Console.WindowWidth = 80; // X. Ancho.
  20.            Console.WindowHeight = 40; // Y. Alto.
  21.  
  22.            DriveInfo[] allDrives = DriveInfo.GetDrives();
  23.  
  24.            foreach (DriveInfo d in allDrives)
  25.            {
  26.                Console.WriteLine("Drive {0}", d.Name);
  27.                Console.WriteLine("  Tipo de unidad: {0}", d.DriveType);
  28.                if (d.IsReady == true)
  29.                {
  30.                    Console.WriteLine("  Etiqueta de volumen: {0}", d.VolumeLabel);
  31.                    Console.WriteLine("  Sistema de archivos: {0}", d.DriveFormat);
  32.                    Console.WriteLine(
  33.                        "  Espacio disponible para el usuario actual:{0, 15} bytes",
  34.                        d.AvailableFreeSpace);
  35.  
  36.                    Console.WriteLine(
  37.                        "  Espacio total disponible:          {0, 15} bytes",
  38.                        d.TotalFreeSpace);
  39.  
  40.                    Console.WriteLine(
  41.                        "  Tamaño total de la unidad:            {0, 15} bytes ",
  42.                        d.TotalSize);
  43.                }
  44.            }
  45.  
  46.            // Pulse cualquier tecla para salir.
  47.            Console.ReadKey();
  48.        }
  49.    }
  50. }

Si el programa está ejecutado, y introduces el pendrive o disco duro externo por USB, parace que necesita un plug & play. Esto parece complicado.

¿Alguna idea?

Saludos.
409  Programación / Programación C/C++ / Re: ¿Cómo añadir dos botones al formulario? en: 10 Abril 2018, 21:04 pm
Buenas:

Ya funciona al 100 %. Solo falta pulir algunas cosas como iniciar el formulario en el centro de la pantalla y cambiar el tamaño del texto de la etiqueta STATIC.

Dejo el código completo aquí por si alguien lo necesita o solo le pica la curiosidad.

Código
  1. #include "stdafx.h"
  2. #include "Bandeja_Form_Win32_cpp.h"
  3. #include "mmsystem.h" // No olvidar.
  4.  
  5. #define MAX_LOADSTRING 100
  6. #define IDC_BUTTON_1 201 // No olvidar.
  7. #define IDC_BUTTON_2 202 // No olvidar.
  8. #define IDC_STATIC_1 303 // No olvidar.
  9.  
  10. // Variables globales:
  11. HINSTANCE hInst;                                // Instancia actual
  12. WCHAR szTitle[MAX_LOADSTRING];                  // Texto de la barra de título
  13. WCHAR szWindowClass[MAX_LOADSTRING];            // nombre de clase de la ventana principal
  14.  
  15. // Declaraciones de funciones adelantadas incluidas en este módulo de código:
  16. ATOM                MyRegisterClass(HINSTANCE hInstance);
  17. BOOL                InitInstance(HINSTANCE, int);
  18. LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
  19. INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
  20.  
  21. int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
  22.                     _In_opt_ HINSTANCE hPrevInstance,
  23.                     _In_ LPWSTR    lpCmdLine,
  24.                     _In_ int       nCmdShow)
  25. {
  26.    UNREFERENCED_PARAMETER(hPrevInstance);
  27.    UNREFERENCED_PARAMETER(lpCmdLine);
  28.  
  29.    // TODO: colocar código aquí.
  30.  
  31.    // Inicializar cadenas globales
  32.    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
  33.    LoadStringW(hInstance, IDC_BANDEJAFORMWIN32CPP, szWindowClass, MAX_LOADSTRING);
  34.    MyRegisterClass(hInstance);
  35.  
  36.    // Realizar la inicialización de la aplicación:
  37.    if (!InitInstance (hInstance, nCmdShow))
  38.    {
  39.        return FALSE;
  40.    }
  41.  
  42.    HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_BANDEJAFORMWIN32CPP));
  43.  
  44.    MSG msg;
  45.  
  46.    // Bucle principal de mensajes:
  47.    while (GetMessage(&msg, nullptr, 0, 0))
  48.    {
  49.        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
  50.        {
  51.            TranslateMessage(&msg);
  52.            DispatchMessage(&msg);
  53.        }
  54.    }
  55.  
  56.    return (int) msg.wParam;
  57. }
  58.  
  59.  
  60.  
  61. //
  62. //  FUNCIÓN: MyRegisterClass()
  63. //
  64. //  PROPÓSITO: registrar la clase de ventana.
  65. //
  66. ATOM MyRegisterClass(HINSTANCE hInstance)
  67. {
  68.    WNDCLASSEXW wcex;
  69.  
  70.    wcex.cbSize = sizeof(WNDCLASSEX);
  71.  
  72.    wcex.style          = CS_HREDRAW | CS_VREDRAW;
  73.    wcex.lpfnWndProc    = WndProc;
  74.    wcex.cbClsExtra     = 0;
  75.    wcex.cbWndExtra     = 0;
  76.    wcex.hInstance      = hInstance;
  77.    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_BANDEJAFORMWIN32CPP));
  78.    wcex.hCursor        = LoadCursor(nullptr, IDC_ARROW);
  79.    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
  80.    wcex.lpszMenuName   = MAKEINTRESOURCEW(IDC_BANDEJAFORMWIN32CPP);
  81.    wcex.lpszClassName  = szWindowClass;
  82.    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
  83.  
  84.    return RegisterClassExW(&wcex);
  85. }
  86.  
  87. //
  88. //   FUNCIÓN: InitInstance(HINSTANCE, int)
  89. //
  90. //   PROPÓSITO: guardar el identificador de instancia y crear la ventana principal
  91. //
  92. //   COMENTARIOS:
  93. //
  94. //        En esta función, se guarda el identificador de instancia en una variable común y
  95. //        se crea y muestra la ventana principal del programa.
  96. //
  97. BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
  98. {
  99.   hInst = hInstance; // Almacenar identificador de instancia en una variable global
  100.  
  101.   // ################################################################### Begin.
  102.   // Redimensionar formulario a 300 x 300.
  103.   HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
  104.      CW_USEDEFAULT, CW_USEDEFAULT, 300, 300, nullptr, nullptr, hInstance, nullptr);
  105.   // #################################################################### End.
  106.  
  107.   if (!hWnd)
  108.   {
  109.      return FALSE;
  110.   }
  111.  
  112.   ShowWindow(hWnd, nCmdShow);
  113.   UpdateWindow(hWnd);
  114.  
  115.   return TRUE;
  116. }
  117.  
  118. //
  119. //  FUNCIÓN: WndProc(HWND, UINT, WPARAM, LPARAM)
  120. //
  121. //  PROPÓSITO:  procesar mensajes de la ventana principal.
  122. //
  123. //  WM_COMMAND  - procesar el menú de aplicaciones
  124. //  WM_PAINT    - Pintar la ventana principal
  125. //  WM_DESTROY  - publicar un mensaje de salida y volver
  126. //
  127. //
  128. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  129. {
  130.    switch (message)
  131.    {
  132. // ################################################################### Begin.
  133. // Crear botones Abrir, Cerrar y mostrar mensajes.
  134. case WM_CREATE:
  135. {
  136. HWND btnOK = CreateWindowW(
  137. L"BUTTON", // Clase del control.
  138. L"Abrir", // Etiqueta del botón.
  139. WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE, // Estilo del control. La clase button puede ser checkbox, radio, etc.
  140. 45, 135, // Posición respecto del client area del parent.
  141. 75, 23, // Dimensiones del control.
  142. hWnd, // --> Este es el handle de la ventana principal.
  143. (HMENU)201, // Este es el identificador del control. De modo predefinido 1 = IDOK, 2 = IDCANCEL
  144. hInst,
  145. nullptr);
  146.  
  147. HWND btnOK2 = CreateWindowW(
  148. L"BUTTON", // Clase del control.
  149. L"Cerrar", // Etiqueta del botón.
  150. WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE, // Estilo del control. La clase button puede ser checkbox, radio, etc.
  151. 165, 135, // Posición respecto del client area del parent.
  152. 75, 23, // Dimensiones del control.
  153. hWnd, // --> Este es el handle de la ventana principal.
  154. (HMENU)202, // Este es el identificador del control. De modo predefinido 1 = IDOK, 2 = IDCANCEL
  155. hInst,
  156. nullptr);
  157.  
  158. // Label o etiqueta.
  159. HWND edit = CreateWindowW(
  160. L"STATIC", // Clase del control.
  161. L"Hola.", // Etiqueta del botón.
  162. WS_CHILD | SS_SIMPLE | WS_VISIBLE, // Estilo del control. La clase button puede ser checkbox, radio, etc.
  163. 125, 55, // Posición respecto del client area del parent.
  164. 75, 23, // Dimensiones del control.
  165. hWnd, // --> Este es el handle de la ventana principal.
  166. (HMENU)303, // Este es el identificador del control. De modo predefinido 1 = IDOK, 2 = IDCANCEL
  167. hInst,
  168. nullptr);
  169. }
  170.  
  171. break;
  172. // #################################################################### End.
  173.  
  174.    case WM_COMMAND:
  175.        {
  176.            int wmId = LOWORD(wParam);
  177.            // Analizar las selecciones de menú:
  178.            switch (wmId)
  179.            {
  180. // #################################################################### Begin.
  181. case IDC_BUTTON_1:
  182. // MessageBox(hWnd, L"Botón 1 pulsado", L"Ejemplo", MB_OK | MB_ICONINFORMATION);
  183. // Mostrar mensaje.
  184. SetWindowText(GetDlgItem(hWnd, IDC_STATIC_1), L"Abriendo...  ");
  185.  
  186. // Abrir bandeja del lector.
  187. mciSendString(L"set CDAudio door open", nullptr, 0, nullptr);
  188.  
  189. // Mostrar mensaje Abierto. Que es cuando ya finalizó.
  190. SetWindowText(GetDlgItem(hWnd, IDC_STATIC_1), L"Abierto.     ");
  191. break;
  192. case IDC_BUTTON_2:
  193. // Mostrar mensaje.
  194. SetWindowText(GetDlgItem(hWnd, IDC_STATIC_1), L"Cerrando...  ");
  195. // Cerrar bandeja del lector.
  196. mciSendString(L"set CDAudio door closed", nullptr, 0, nullptr);
  197. // Mostrar mensaje.
  198. SetWindowText(GetDlgItem(hWnd, IDC_STATIC_1), L"Cerrado.     ");
  199. break;
  200. // #################################################################### End.
  201.            case IDM_ABOUT:
  202.                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
  203.                break;
  204.            case IDM_EXIT:
  205.                DestroyWindow(hWnd);
  206.                break;
  207.            default:
  208.                return DefWindowProc(hWnd, message, wParam, lParam);
  209.            }
  210.        }
  211.        break;
  212.    case WM_PAINT:
  213.        {
  214.            PAINTSTRUCT ps;
  215.            HDC hdc = BeginPaint(hWnd, &ps);
  216.            // TODO: Agregar cualquier código de dibujo que use hDC aquí...
  217.            EndPaint(hWnd, &ps);
  218.        }
  219.        break;
  220.    case WM_DESTROY:
  221.        PostQuitMessage(0);
  222.        break;
  223.    default:
  224.        return DefWindowProc(hWnd, message, wParam, lParam);
  225.    }
  226.    return 0;
  227. }
  228.  
  229. // Controlador de mensajes del cuadro Acerca de.
  230. INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  231. {
  232.    UNREFERENCED_PARAMETER(lParam);
  233.    switch (message)
  234.    {
  235.    case WM_INITDIALOG:
  236.        return (INT_PTR)TRUE;
  237.  
  238.    case WM_COMMAND:
  239.        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
  240.        {
  241.            EndDialog(hDlg, LOWORD(wParam));
  242.            return (INT_PTR)TRUE;
  243.        }
  244.        break;
  245.    }
  246.    return (INT_PTR)FALSE;
  247. }

Saludos camaradas. ;)
410  Programación / Programación C/C++ / Re: ¿Cómo añadir dos botones al formulario? en: 10 Abril 2018, 16:33 pm
Gracias.

He puesto este código. Lee los mensajes si o si de forma muy correcta. Probé este código de abajo para abrir la bandeja y da error al compilar.
Código:
				// #################################################################### Begin.
case IDC_BUTTON_1:
// MessageBox(hWnd, L"Botón 1 pulsado", L"Ejemplo", MB_OK | MB_ICONINFORMATION);
// Mostrar mensaje.
SetWindowText(GetDlgItem(hWnd, IDC_STATIC_1), L"Abriendo...  ");

// Abrir bandeja del lector.
mciSendString("set CDAudio door open", nullptr, 0, nullptr);

// Mostrar mensaje Abierto. Que es cuando ya finalizó.
SetWindowText(GetDlgItem(hWnd, IDC_STATIC_1), L"Abierto.     ");
break;
case IDC_BUTTON_2:
// Mostrar mensaje.
SetWindowText(GetDlgItem(hWnd, IDC_STATIC_1), L"Cerrando...  ");
// Cerrar bandeja del lector.
// mciSendString("set CDAudio closed open", nullptr, 0, nullptr);
// Mostrar mensaje.
SetWindowText(GetDlgItem(hWnd, IDC_STATIC_1), L"Cerrado.     ");
break;
// #################################################################### End.

Errores:
Gravedad   Código   Descripción   Proyecto   Archivo   Línea   Estado suprimido
Error (activo)   E0167   un argumento de tipo "const char *" no es compatible con un parámetro de tipo "LPCWSTR"   Bandeja_Form_Win32_cpp   c:\Users\usuario\Documents\Visual Studio 2017\Projects\Bandeja_Form_Win32_cpp\Bandeja_Form_Win32_cpp\Bandeja_Form_Win32_cpp.cpp   201   


Gravedad   Código   Descripción   Proyecto   Archivo   Línea   Estado suprimido
Error   C2664   'MCIERROR mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND)': el argumento 1 no puede convertirse de 'const char [22]' a 'LPCWSTR'   Bandeja_Form_Win32_cpp   c:\users\usuario\documents\visual studio 2017\projects\bandeja_form_win32_cpp\bandeja_form_win32_cpp\bandeja_form_win32_cpp.cpp   201
Páginas: 1 ... 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [41] 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 ... 255
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines