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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Controlando estados de los mensajes
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Controlando estados de los mensajes  (Leído 3,049 veces)
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
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.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Controlando estados de los mensajes
« Respuesta #1 en: 4 Mayo 2018, 08:32 am »

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.

El hecho de que Visual Studio no provea un diseñador gráfico o visual designer para F# es algo que deja ver entre lineas que dicho lenguaje no ha sido creado con la intención de ser aplicado de esa forma, dicho de otro modo: no le estás dando el uso apropiado que se le debería dar a F#. Por lo general F# se suele utilizar en forma de scripts para la elaboración de algoritmos aritméticos complejos que acabarcan aplicaciones de ámbito científico o financiero, más que otra cosa.

Simplemente, te estás complicando la vida de forma totálmente innecesaria escribiendo decenas de lineas de código (que se irán multiplicando por cientos) para construir los elementos de la interfaz de usuario con F#, cuando lo más sensato sería crear la interfaz de usuario con C# bajo tu tecnología favorita (Windows Forms o WPF) y simplemente añadir una referencia a una librería desarrollada en F#, o añadir un script en F# a tu proyecto de C# para ejecutarlo con F# Interactive (fsi.exe), como prefieras.

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?

Volvemos a lo mismo... lee:


Saludos.


« Última modificación: 4 Mayo 2018, 19:15 pm por Eleкtro » En línea

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Controlando estados de los mensajes
« Respuesta #2 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&#241;adir refrencias.
  4. open System.Drawing // A&#241;adir referencias.
  5. open System.Runtime.InteropServices
  6.  
  7. // Importar librer&#237;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.
« Última modificación: 4 Mayo 2018, 15:01 pm por Meta » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: Controlando estados de los mensajes
« Respuesta #3 en: 4 Mayo 2018, 20:42 pm »

Opino como Elektro.

...pero también opino que cada uno es libre de perder el tiempo como quiera, y si eso es lo que te gusta, allá tú...

Ser capaz de abrir la bandeja de la unidad óptica en 25 lenguajes de programación, es una manera estúpida (pero genuina) de perder el tiempo, porque al final todas ellas, acabarán llamando a la misma función del driver que controla la unidad...

En línea

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: Controlando estados de los mensajes
« Respuesta #4 en: 5 Mayo 2018, 00:58 am »

Perder el tiempo, como me dijo una amiga psicoterapeuta, simplemente es experiencia.
En mi caso probando de todo un poco. ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Controlando Un Ciber
Hacking
1nfectØ 9 5,612 Último mensaje 9 Agosto 2011, 19:20 pm
por MauroMasciar
Controlando la memoria RAM en Firefox
Software
madpitbull_99 9 4,909 Último mensaje 21 Septiembre 2011, 20:56 pm
por xm1488
Programa en C controlando bluetooth
Hacking Mobile
patosick 0 3,087 Último mensaje 12 Enero 2012, 18:18 pm
por patosick
Controlando Pc remotamente ??
Hacking
TrashAmbishion 6 4,503 Último mensaje 19 Agosto 2015, 15:40 pm
por tonydemora
Cómo ver Estados de WhatsApp o leer mensajes en Facebook Messenger en secreto
Noticias
wolfbcn 0 1,901 Último mensaje 28 Febrero 2017, 20:55 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines