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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Temas
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 66
141  Programación / Programación C/C++ / [SOLUCIONADO] ¿Cómo añadir dos botones al formulario? en: 7 Abril 2018, 17:49 pm
Hola:

He creado un formulario con Windows Form (Win32). Quiero añadir en él dos botones. Por ahora he hecho esto.

Paso 1:


Paso 2:


Pado 3:


Se me genera códigos pero no se ve el formulario. Lo que demuestra se un engorro programar así hoy en día, pero hay empresas que si programan así y enseñan en algunas universidades les gusten a los alumnos o no.

Paso 4:


Aquí lo dejo el formulario como si fuese por defeto 300x300 pero en realidad es muy grande para mi gusto.

Quiero hacer dos cosas. Poner el tamaño del formulario a 300 x 300 y introducir 2 botones. Quiero hacer.

Un botón se llama: Abrir y el otro Cerrar.

¿Cómo se hace?

Saludos.

PD: La verdad, no sabía que fuera tan coñazo, pesado, complicado en hacer lo que estoy pidiendo.
142  Programación / Programación C/C++ / Corregir este error con Win32 en: 7 Abril 2018, 12:04 pm
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.
Citar
Gravedad   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
  1. #include "stdafx.h"
  2. #include "Windows.h"
  3. #include "iostream"
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. // Título de la ventana.
  10. SetConsoleTitle(L"Consola C++ Win32 2017");
  11.  
  12. // Variable.
  13. char entrada[] = "\0"; // Guarda A, a, C, y c tipo string que introduces desde la consola.
  14.  
  15. while (true)
  16. {
  17. // Muestra en pantalla textos.
  18. cout << "Control bandeja del lector: " << endl << endl;
  19. cout << "A - Abrir bandeja." << endl;
  20. cout << "C - Cerrar bandeja." << endl;
  21. cout << "==========================" << endl;
  22.  
  23. cin >> entrada; // Aquí introduces letras A, a, C, y c.
  24.  
  25. cout << "\n" << endl;
  26.  
  27. // Abrir bandeja.
  28. if ((entrada[0] == 'a') || (entrada[0] == 'A'))
  29. {
  30. cout << "Abriendo..." << endl << endl; // Muestra en pantalla textos.
  31. mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
  32. cout << "Abierto." << endl << endl; // Muestra en pantalla textos.
  33. }
  34. // Cerrar bandeja.
  35. else if ((entrada[0] == 'c') || (entrada[0] == 'C'))
  36. {
  37. cout << "Cerrando..." << endl << endl; // Muestra en pantalla textos.
  38. mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
  39. cout << "Cerrado." << endl << endl; // Muestra en pantalla textos.
  40. }
  41. // Si haz pulsado otro caracter distinto de A, C, a, y c aparece
  42. else
  43. {
  44. cout << "Solo pulsar A o C." << endl << endl; // este mensaje.
  45.  
  46. }
  47. }
  48. return EXIT_SUCCESS;
  49. }
  50.  

Antes me funcionaba, actualizo Visual studio y pasa esto.

Saludos.
143  Programación / .NET (C#, VB.NET, ASP) / Quitar rastros en: 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.
Citar
Equipo\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
  1. using System;
  2. using System.ComponentModel;
  3. using System.Diagnostics;
  4. using System.IO;
  5.  
  6. namespace Bat_desde_CS_Consola_02
  7. {
  8.    class Program
  9.    {
  10.        static void Main(string[] args)
  11.        {
  12.            try
  13.            {
  14.                // Variables.
  15.                string strFileFullName = @"archivo.cmd"; // Nombre del archivo.
  16.                string ruta = Environment.GetFolderPath(Environment.SpecialFolder.Startup); // Ruta en Inico de Windwos.
  17.                //string ruta = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); // Ruta en el escritorio.
  18.                string ficheroAGrabar = Path.Combine(ruta, strFileFullName); // Concatenar ruta.
  19.  
  20.                // Muestra la ruta en pantalla.
  21.                Console.WriteLine(ruta); // C:\Users\Usuario\Desktop
  22.  
  23.                // Si no existe el archivo.
  24.                if (!File.Exists(ficheroAGrabar))
  25.                {
  26.                    // Crea el contenido al archivo de texto.
  27.                    File.WriteAllText(ficheroAGrabar, @"@echo off
  28. TIMEOUT /T 1
  29. DEL /S Bat_desde_CS_Consola_02.exe
  30. DEL /S archivo.cmd
  31. EXIT");
  32.                }
  33.  
  34.                else // Si existe...
  35.                {
  36.                    // Codigo a ejecutar si existe...
  37.                    Console.WriteLine("El archivo existe, así que no se sustituirá.");
  38.                }
  39.  
  40.                // Ejecutar archivo.cmd.
  41.                ProcessStartInfo psi = new ProcessStartInfo();
  42.                psi.UseShellExecute = false;
  43.                psi.CreateNoWindow = true;
  44.                psi.WindowStyle = ProcessWindowStyle.Hidden;
  45.                psi.FileName = strFileFullName; // archivo.cmd.
  46.                Process.Start(psi);
  47.  
  48.                // Cerrar aplicación C#.
  49.                Environment.Exit(-1);
  50.            }
  51.  
  52.            catch (Win32Exception)
  53.            {
  54.                // No mostrar nada.
  55.                // Cerrar aplicación C#.
  56.                Environment.Exit(-1);
  57.            }
  58.        }
  59.    }
  60. }

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.
144  Programación / .NET (C#, VB.NET, ASP) / Cifrar variables o textos de forma sencilla. en: 29 Marzo 2018, 08:47 am
Buenas gente:

Hice un ejemplo con este código.
Código
  1. using System;
  2.  
  3. namespace Encriptar_variable_Consola_01
  4. {
  5.    class Program
  6.    {
  7.        static void Main(string[] args)
  8.        {
  9.            Console.Title = "Ocultar variable"; // Título de la pantalla.
  10.  
  11.            string variable = "Esto es una prueba.";
  12.  
  13.            Console.WriteLine(variable);
  14.            Console.WriteLine("Otra prueba.");
  15.  
  16.            Console.ReadKey(); // Pulse cualquier tecla para salir.
  17.        }
  18.    }
  19. }

Mirando el ejecutable en el editor hexadecimal. Si encuentra los valores de las variables como indica la captura.


Uso Visual Studio 2017 Community. No quiero usar técnica de obfuscación, no se si esta versión la incluye. Quiero saber si existe la manera de camuflar esas variables.

Mi idea era usar algo parecido a esto en XOR ^10 con otro programa que haré a parte.

Código
  1.    for (int i = 0; i < variable.Length; i++)
  2.    {
  3.        variable[i] = (byte)(variable[i] ^ 10);
  4.    }

El código de ejemplo de una variable tipo array desordenarlo.

Luego copio y pego el resultado ya codificado en la variable que es el que estoy usando ahora. En este caso uso una variable tipo string.

Tengo que hacer de alguna manera, al ejecutar el programa, lea las variables codificadas y las vuelva a poner bien para que se lea en cristiano, luego lo guarda en otra variable y Console.WriteLine lo muestra.

Espero que se entienda lo que quiero decir o lo explico de otra manera.

¿Alguna ocurrencia?

Saludos.
145  Programación / .NET (C#, VB.NET, ASP) / Imprimir una hoja con C# en: 27 Marzo 2018, 21:46 pm
Buenas:

Quiero imprimir un folio, una hoja con la consola en C#, no con Windows Form.
Aquí hay un ejemplo pero es con Windows Form en el cual no me interesa.
https://msdn.microsoft.com/es-es/library/system.drawing.printing.printersettings%28v=vs.110%29.aspx?cs-save-lang=1&cs-lang=csharp&f=255&MSPPError=-2147217396#code-snippet-2

He modificado el código así un poco.
Código
  1. using System;
  2. using System.IO;
  3.  
  4.  
  5. namespace Impresora_Consola_01
  6. {
  7.    class Program
  8.    {
  9.        static void Main(string[] args)
  10.        {
  11.            void Printing(string printer)
  12.            {
  13.                try
  14.                {
  15.                    streamToPrint = new StreamReader(@"Hola amigo.");
  16.                    try
  17.                    {
  18.                        printFont = new Font("Arial", 10);
  19.                        PrintDocument pd = new PrintDocument();
  20.                        pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
  21.                        // Specify the printer to use.
  22.                        pd.PrinterSettings.PrinterName = printer;
  23.  
  24.                        if (pd.PrinterSettings.IsValid)
  25.                        {
  26.                            pd.Print();
  27.                        }
  28.                        else
  29.                        {
  30.                            Console.WriteLine("Printer is invalid.");
  31.                        }
  32.                    }
  33.                    finally
  34.                    {
  35.                        streamToPrint.Close();
  36.                    }
  37.                }
  38.                catch (Exception ex)
  39.                {
  40.                    Console.WriteLine(ex.Message);
  41.                }
  42.            }
  43.        }
  44.    }
  45. }
  46.  

Cuando ejecutes el ejecutable, lo que tiene que hacer, buscar una impresora que tenga dispuesta, y imprima solo un folio. El mensaje que imprime una hoja es este:

Citar
Hola amigo.

Solo te he gastado un folio.

¿Es posible hacer en modo consola o tiene que ser si o si con Windows Form?

Saludos.
146  Programación / .NET (C#, VB.NET, ASP) / Programas de broma en: 22 Marzo 2018, 17:29 pm
Hola:

Estaba urgando con C# haciendo archivo de bromas. La idea principal es, que al ejecutar esta aplicación hecha en modo consola, no muestre la pantalla en negro, que no muestre nada, solo que al ejecutarlo tres veces, la primera vez crea un archivo  de texto llamado Archivo.txt que contiene el valor número 3, si llega a 0, crea otro arhivo llamado Hola.txt y en su interior, el contenido escrito esto, Hola amigo.

Los archivos se crean en el escritorio como ejemplo.

Aquí un ejemplo:
Código
  1. using System;
  2. using System.IO;
  3.  
  4. namespace Broma_Consola_02
  5. {
  6.    class Program
  7.    {
  8.        static void Main(string[] args)
  9.        {
  10.            // Variables.
  11.            string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
  12.            string nombreArchivo = "Archivo.txt";
  13.  
  14.            // Comprueba si existe el archivo en dicha ruta.
  15.            if (File.Exists(Path.Combine(path, nombreArchivo)))
  16.            {
  17.                // Variable del contador.
  18.                int contador;
  19.  
  20.                // Lee el fichero.
  21.                if (Int32.TryParse(File.ReadAllText(Path.Combine(path, nombreArchivo)), out contador))
  22.                {
  23.                    // Si el contador es mayor que 0.
  24.                    if (contador > 0)
  25.                    {
  26.                        // Sobre escribe el archivo con -1 su valor.
  27.                        File.WriteAllText(Path.Combine(path, nombreArchivo), $"{contador -= 1}");
  28.                    }
  29.  
  30.                    // Si el contador es igual a 0.
  31.                    if (contador == 0)
  32.                    {
  33.                        // Escribe un nuevo arhivo de texto con su contenido correspondiente.
  34.                        File.WriteAllText(Path.Combine(path, "Hola.txt"), "Hola amigo.");
  35.                    }
  36.                }
  37.  
  38.                // Entonces.
  39.                else
  40.                {
  41.                    Console.WriteLine("El archivo contiene un valor no esperado.");
  42.                }
  43.            }
  44.  
  45.            // Entonces.
  46.            else
  47.            {
  48.                // Escribe el archivo con el valor 3 en Archivo.txt.
  49.                File.WriteAllText(Path.Combine(path, nombreArchivo), "3");
  50.            }
  51.  
  52.            //Console.ReadKey(); // Pulse cualquier tecla para salir.
  53.        }
  54.    }
  55. }

Mi idea es que este ejecutable esté sea como sea, en el inicio de Windows, es decir, que al iniciar Windows, te resta un valor en el archivo txt hasta llegar a 0. Cuando llegues a 0, al iniciar el Windows, se abre también en el inicio el archivo Hola.txt con el mensaje, Hola amigo.

Aquí abajo lo puse como escritorio, al dinal sustituye Desktop (escritorio)
Código
  1. string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
a Startup (Inicio).
Código
  1. string path = Environment.GetFolderPath(Environment.SpecialFolder.Startup);

El que quiere poner otra ubicación, aquí hay una lista.

¿Qué técnica, o ideas, usarían para poder poner este ejecutable en el inicio?

Salu2.
147  Programación / .NET (C#, VB.NET, ASP) / Cambiar atributo archivo en: 11 Marzo 2018, 15:05 pm
Hola:

Tengo este archivo de texto llamado Hola.txt, creado con C#. Sus atributos son estos.


El código para crear este archivo de texto es el siguiente.

Código
  1. using System;
  2. using System.IO; // No olvidar.
  3.  
  4. namespace Crear_txt_Consola_02_cs
  5. {
  6.    class Program
  7.    {
  8.        static void Main(string[] args)
  9.        {
  10.            // Título de la ventana.
  11.            Console.Title = "Crear archivo txt Consola 02 C#";
  12.  
  13.            // Tamaño ventana consola.
  14.            Console.WindowWidth = 55; // X. Ancho.
  15.            Console.WindowHeight = 18; // Y. Alto.
  16.  
  17.            /* Creo que te estás complicando innecesariamente. Si tienes la ruta y el fichero,
  18.              * no hay más que juntar la ruta con el fichero (poniendo la "\" entre medias igual
  19.              * que si fueses a escribir la ruta a mano en el explorador de Windows). Es una simple
  20.              * concatenación de strings:
  21.              */
  22.  
  23.            /*
  24.              string strFileName = @"Hola.txt"; // Nombre del archivo.
  25.              string ruta = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); // Ruta.
  26.              string ficheroAGrabar = ruta + @"\" + strFileName;
  27.             */
  28.  
  29.            // Variables.
  30.            string strFileFullName = @"Hola.txt"; // Nombre del archivo.
  31.            string ruta = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); // Ruta.
  32.            string ficheroAGrabar = Path.Combine(ruta, strFileFullName); // Concatenar ruta.
  33.  
  34.            // Muestra la ruta en pantalla.
  35.            Console.WriteLine(ruta); // C:\Users\Usuario\Desktop
  36.  
  37.            // Si no existe el archivo.
  38.            if (!File.Exists(ficheroAGrabar))
  39.            {
  40.                // Crea el contenido al archivo de texto.
  41.                File.WriteAllText(ficheroAGrabar, "Hola Mundo.");
  42.            }
  43.  
  44.            else // Si existe...
  45.            {
  46.                // Codigo a ejecutar si existe...
  47.                Console.WriteLine("El archivo existe, así que no se sustituirá.");
  48.  
  49.                // Pulse cualquier tecla para salir.
  50.                Console.ReadKey();
  51.            }
  52.        }
  53.    }
  54. }

¿Existe hacer de alguna manera, cambiar los datos de los atributos como fecha y hora indicada en la imagen de arriba?

No quiero que se sepa cuando se creó el archivo. O poner otra fecha muy al pasado.

Saludos.
148  Programación / Scripting / Crear funciones en est script en: 28 Noviembre 2017, 09:57 am
Hola:

Estoy usando desde ISE con PowerShell este código. Lo que hace ahora es crear un formulario Windows Form en el cual abre y cierra la bandeja del lector del disco.

Código:
$MemDef = @"
[DllImport("winmm.dll", CharSet = CharSet.Ansi)]
   public static extern int mciSendStringA(
   string lpstrCommand,
   string lpstrReturnString,
   int uReturnLength,
   IntPtr hwndCallback);
"@

$winnm = Add-Type -memberDefinition $MemDef -ErrorAction 'SilentlyContinue' -passthru -name mciSendString
function Set-CDAudioDoor {
 Param(
  [ValidateSet("open", "closed")][String[]]$Mode = 'open'
 )
 $winnm::mciSendStringA("set cdaudio door $mode", $null, 0,0)}

 [void][reflection.assembly]::loadwithpartialname("System.Windows.Forms")
[void][reflection.assembly]::loadwithpartialname("System.Drawing")


$Form = New-Object system.Windows.Forms.Form
$Form.Text = "PowerShell 2017"
$Form.TopMost = $true
$Form.Width = 300
$Form.Height = 300
$Form.StartPosition = "CenterScreen"



$button_Abrir = New-Object system.windows.Forms.Button
$button_Abrir.Text = "Abrir"
$button_Abrir.Width = 75
$button_Abrir.Height = 23
$button_Abrir.location = new-object system.drawing.point(40, 150)
$button_Abrir.Font = "Microsoft Sans Serif,10"
$Form.controls.Add($button_Abrir)


$button_Cerrar = New-Object system.windows.Forms.Button
$button_Cerrar.Text = "Cerrar"
$button_Cerrar.Width = 75
$button_Cerrar.Height = 23
$button_Cerrar.location = new-object system.drawing.point(174, 150)
$button_Cerrar.Font = "Microsoft Sans Serif,10"
$Form.controls.Add($button_Cerrar)




$label_Mensaje = New-Object system.windows.Forms.Label
$label_Mensaje.Text = "?"
$label_Mensaje.AutoSize = $true
$label_Mensaje.Width = 25
$label_Mensaje.Height = 10
$label_Mensaje.location = new-object system.drawing.point(54,26)
$label_Mensaje.Font = "Microsoft Sans Serif,36,style=Bold"
$Form.controls.Add($label_Mensaje)

# Abrir  bandeja.
$label_Mensaje.Text = "Abriendo..."
$button_Abrir.Add_Click({Set-CDAudioDoor open})
$label_Mensaje.Text = "Abierto."

# Cerrar bandeja.
$label_Mensaje.Text = "Cerrando..."
$button_Cerrar.Add_Click({Set-CDAudioDoor closed})
$label_Mensaje.Text = "Cerrado."

[void]$Form.ShowDialog()
$Form.Dispose() 

Al ejecutar este Script, muestra esta imagen.


Com podrás observar, siempre se ejecuta una detrás otra esta instrucción de mensajes.
Código:
$label_Mensaje.Text = "Cerrado."

Mi idea es, que al pulsar el botón Abrir, aparezca el mensaje "Abrriendo...", se abre la bandeja del todo, sale otro mensaje, "Abierto.", lo mismo al pulsar el botón Cerrar.

¿En que fallo?

Saludos.
149  Programación / Java / Otro estilo en Java en: 22 Noviembre 2017, 23:52 pm
Hola:

Aquí hay un código hecho en Java usando WMPlayer.OCX.7. Quiero usar en Java mciSendString(L"Set CDAudio Door Open Wait", 0, 0, 0);
Es para abrir y cerrar la bandeja.

Código
  1. /**
  2.  
  3.  *
  4.  
  5.  */
  6.  
  7. package com.sabado;
  8.  
  9.  
  10.  
  11. import java.io.File;
  12.  
  13. import java.io.FileWriter;
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21. /**
  22.  
  23.  * -.-
  24.  
  25.  *
  26.  
  27.  */
  28.  
  29. public class Unidad {
  30.  
  31.  
  32.  
  33. /**
  34.  
  35. * @param args
  36.  
  37. */
  38.  
  39. public static void main(String[] args) {
  40.  
  41. // TODO Auto-generated method stub
  42.  
  43. //mostramos mensajes antes de abrir las bandejas de CD DVD
  44.  
  45. javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)
  46.  
  47.               null, "Pulsa OK para abrir las bandejas de los " +
  48.  
  49.       "lectores/grabadores de CD/DVD del equipo.", "Abrir CD/DVD",
  50.  
  51.               javax.swing.JOptionPane.DEFAULT_OPTION);
  52.  
  53.    Unidad.abrirBandejaCDDVD();
  54.  
  55.  
  56.  
  57. //mostramos mensaje antes de cerrar las bandejas de CD DVD
  58.  
  59. javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)
  60.  
  61.         null, "Pulsa OK para cerrar las bandejas de los " +
  62.  
  63.       "lectores/grabadores de CD/DVD del equipo.", "Cerrar CD/DVD",
  64.  
  65.         javax.swing.JOptionPane.DEFAULT_OPTION);
  66.  
  67.    Unidad.cerrarBandejaCDDVD();
  68.  
  69.  
  70.  
  71. }
  72.  
  73.  
  74.  
  75. public static void abrirBandejaCDDVD ()
  76.  
  77.  {
  78.  
  79.  
  80.  
  81.  try
  82.  
  83.  {
  84.  
  85.        File file = File.createTempFile("abrirbandejacd",".vbs");
  86.  
  87.        file.deleteOnExit();
  88.  
  89.        FileWriter fw = new java.io.FileWriter(file);
  90.  
  91.        String vbs = "Set objPlayer = CreateObject(\"WMPlayer.OCX.7\") \n"
  92.  
  93.                   + "Set collCDROM = objPlayer.cdromCollection \n"
  94.  
  95.                   + "if collCDROM.Count >= 1 then \n"
  96.  
  97.                   + "For i = 0 to collCDROM.Count - 1 \n"
  98.  
  99.   + "collCDROM.Item(i).Eject \n"
  100.  
  101.   + "Next \n"
  102.  
  103.   + "End If \n";
  104.  
  105.        fw.write(vbs);
  106.  
  107.        fw.close();
  108.  
  109.        Runtime.getRuntime().exec("wscript " + file.getPath()).waitFor();
  110.  
  111.    }
  112.  
  113.    catch(Exception e)
  114.  
  115. {
  116.  
  117.        e.printStackTrace();
  118.  
  119.    }
  120.  
  121.  }
  122.  
  123.  
  124.  
  125. public static void cerrarBandejaCDDVD()
  126.  
  127.  {
  128.  
  129.    try
  130.  
  131.    {
  132.  
  133.        File file = File.createTempFile("cerrarbandejacd",".vbs");
  134.  
  135.        file.deleteOnExit();
  136.  
  137.        FileWriter fw = new FileWriter(file);
  138.  
  139.        //para cerrar las bandejas de CD hay que ejecutar "eject" dos veces
  140.  
  141.        String vbs = "Set objPlayer = CreateObject(\"WMPlayer.OCX.7\") \n"
  142.  
  143.                   + "Set collCDROM = objPlayer.cdromCollection \n"
  144.  
  145.                   + "if collCDROM.Count >= 1 then \n"
  146.  
  147.                   + "For i = 0 to collCDROM.Count - 1 \n"
  148.  
  149.   + "collCDROM.Item(i).Eject \n"
  150.  
  151.   + "collCDROM.Item(i).Eject \n"
  152.  
  153.   + "Next \n"
  154.  
  155.   + "End If \n";
  156.  
  157.        fw.write(vbs);
  158.  
  159.        fw.close();
  160.  
  161.        Runtime.getRuntime().exec("wscript " + file.getPath()).waitFor();
  162.  
  163.    }
  164.  
  165.    catch(Exception e)
  166.  
  167. {
  168.  
  169.        e.printStackTrace();
  170.  
  171.    }
  172.  
  173.  }
  174.  
  175. }

¿Algún ejemplo usando mciSendString en Java?

Lo pregunto porque el de arriba es mucho código para lo que hay que hacer, abrir y cerrar la bandeja.

Un ejemplo en C++ se hace en menos líneas de códigos, por ejemplo este indicado abajo.

Paso 1:


Paso 2:


Paso3:
Escribir Winmm.lib.


Paso 4:


Sólo se necesita tres includes.

Código
  1. #include "stdafx.h"
  2. #include "Windows.h"
  3. #include "iostream"
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. // Título de la ventana.
  10. SetConsoleTitle(L"Consola C++ Win32 2017");
  11.  
  12. // Variable.
  13. char entrada[] = "\0"; // Guarda A, a, C, y c tipo string que introduces desde la consola.
  14.  
  15. while (true)
  16. {
  17. // Muestra en pantalla textos.
  18. cout << "Control bandeja del lector: " << endl << endl;
  19. cout << "A - Abrir bandeja." << endl;
  20. cout << "C - Cerrar bandeja." << endl;
  21. cout << "==========================" << endl;
  22.  
  23. cin >> entrada; // Aquí introduces letras A, a, C, y c.
  24.  
  25. cout << "\n" << endl;
  26.  
  27. // Abrir bandeja.
  28. if ((entrada[0] == 'a') || (entrada[0] == 'A'))
  29. {
  30. cout << "Abriendo..." << endl << endl; // Muestra en pantalla textos.
  31. mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
  32. cout << "Abierto." << endl << endl; // Muestra en pantalla textos.
  33. }
  34. // Cerrar bandeja.
  35. else if ((entrada[0] == 'c') || (entrada[0] == 'C'))
  36. {
  37. cout << "Cerrando..." << endl << endl; // Muestra en pantalla textos.
  38. mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
  39. cout << "Cerrado." << endl << endl; // Muestra en pantalla textos.
  40. }
  41. // Si haz pulsado otro caracter distinto de A, C, a, y c aparece
  42. else
  43. {
  44. cout << "Solo pulsar A o C." << endl << endl; // este mensaje.
  45.  
  46. }
  47. }
  48. return EXIT_SUCCESS;
  49. }

Saludos.
150  Programación / Scripting / Crear formulario de estos lenguajes en: 19 Noviembre 2017, 11:08 am
Hola:

Antes pensaba que PowerShell solo era línea de comandos, el sustituto del CMD de Windows se puede decir. He descubierto hoy que se puede crear formulario tal como lo hace Windows Form de Visual C# o Visual Basic .net.

Aquí hay un editor de formularios para hacerlo más rápido por vía Web y te genera el código para probarlo en el Power Shell.
https://poshgui.com/#

Aquí encuentras más enalces.
# http://tianit.cloudapp.net/blog/index.php/2015/11/04/crear-formularios-con-powershell/

Por ejemplo, abajo un formalario creado en visual solo con códigos de PowerShell.


Mi pregunta es.

¿Se puede crear también formularios con el lenguaje Visual F#?


Por todas partes se llama Visual F#, pero solo he visto códigos en modo consola.

Saludos.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 66
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines