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

#561
Programación C/C++ / Cambiar título de consola
4 Febrero 2016, 22:51 PM
Hola:

Usando el Dev C++ con un hola mundo. En el título de la ventana quiero que me diga el nombre del programa. El programa es hecho en modo consola.

He buscado por google y me dice cambiar el color, pero eso es dentro del programa, no quiero cambiar colores, solo el nombre o título.

Espero que se entienda lo que quiero decir. También hay que ver si en consola es posible hacerlo en Dev C++, en C# se hace así:

Código (csharp) [Seleccionar]
Console.title = "Título o nombre del programa";

Estamos en C++ Win32 en modo consola.

Saludos.
#562
Hola:

Tengo un código que encontré sobre el puerto serie, recibir y enviar datos hechos en C++.
Código (cpp) [Seleccionar]
// Comunicación a través del puerto serie
// usando el API de Windows
// Modo consola.
// (C) Enero de 2013, Salvador Pozo Coronado
// Con Clase: http://www.conclase.net
// salvador@conclase.net

#include <iostream>
#include <cstring>
#include <windows.h>

using namespace std;

// Tipos de datos:
typedef struct
{
    char Puerto[5];
    int Baudios;
    int BitsDatos;
    int BitsStop;
    char Paridad[25];
} tipoOpciones;

bool ocupado;
// Prototipos:
HANDLE InicioComunicacion(tipoOpciones*);
bool FinComunicacion(HANDLE);
DWORD Hilo(LPDWORD lpdwParam);
void EscribirSerie(HANDLE, char *);

int main(int argc, char *argv[])
{
    bool salir=false;
    DWORD id;
    char cad[80];
    tipoOpciones Ops;         // Opciones
    HANDLE idComDev;
    HANDLE hHilo;             // Hilo del puerto serie

    ocupado = true;
    // Inicializar opciones del puerto serie:
    strcpy(Ops.Puerto, "COM4");
    Ops.Baudios = 115200;
    Ops.BitsDatos = 8;
    Ops.BitsStop = 2;
    strcpy(Ops.Paridad, "Sin paridad");

    // No se ha establecido comunicación:
    idComDev = InicioComunicacion(&Ops);
    if(idComDev == INVALID_HANDLE_VALUE) {
        cout << "Inicialización puerto serie" << endl;
        cout << "ERROR: No se puede acceder al puerto serie." << endl;
        return 1;
    }
    // Lanzar hilo de lectura del puerto serie:
    hHilo = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Hilo, (LPDWORD)&idComDev, 0, &id);
    if(!hHilo) cout << "Error" << endl;
    // Bucle principal:
    ocupado = false;
    while(!salir) {
        // Leer un comando:
        cin.getline(cad, 80);
        // Si es "salir", abandonar el bucle:
        if(!strcmp(cad, "salir")) salir = true;
        else {
            // Si no, enviar cadena por el puerto serie:
            strcat(cad, "\r");
            EscribirSerie(idComDev, cad);
        }
    }
    // Liberar hilo:
    CloseHandle(hHilo);
    // Liberar puerto serie:
    FinComunicacion(idComDev);
    return 0;
}

// Iniciar el puerto serie:
HANDLE InicioComunicacion(tipoOpciones *Ops)
{
    bool fSuccess;
    HANDLE idComDev;
    DCB dcb;                  // Puerto serie

    // Abrir el fichero asociado al puerto:
    idComDev = CreateFile(Ops->Puerto, GENERIC_READ | GENERIC_WRITE,
        0, NULL, OPEN_EXISTING, 0, NULL);
    if(idComDev == INVALID_HANDLE_VALUE) {
        cout << "ERROR: CreateFile. Inicialización puerto serie" << endl;
        return INVALID_HANDLE_VALUE;
    }
    PurgeComm(idComDev, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);

    // Leer estructura de control del puerto serie, cdb:
    fSuccess = GetCommState(idComDev, &dcb);
    if(!fSuccess) {
        cout << "ERROR: GetCommState. Inicialización puerto serie" << endl;
        // Cerrar el puerto, regresar con 0.
        CloseHandle(idComDev);
        return INVALID_HANDLE_VALUE;
    }

    // Modificar el dcb según las opciones definidas:
    dcb.BaudRate = Ops->Baudios;
    dcb.ByteSize = Ops->BitsDatos;

    if(!strcmp(Ops->Paridad, "Sin paridad")) dcb.Parity = NOPARITY;
    if(!strcmp(Ops->Paridad, "Paridad par")) dcb.Parity = EVENPARITY;
    if(!strcmp(Ops->Paridad, "Paridad impar")) dcb.Parity = ODDPARITY;

    switch(Ops->BitsStop) {
        case 1:
            dcb.StopBits = ONESTOPBIT;
            break;
        case 2:
            dcb.StopBits = TWOSTOPBITS;
            break;
    }

    // Modificar la estructura de control del puerto serie:
    fSuccess = SetCommState(idComDev, &dcb);
    if(!fSuccess) {
        cout << "ERROR: SetCommStatus. Inicialización puerto serie" << endl;
        // Cerrar el puerto, regresar con 0.
        CloseHandle(idComDev);
        return INVALID_HANDLE_VALUE;
    }

    //// ASIGNAR TIMOUTS!!!

    return idComDev;
}

// Finalizar comunicación por puerto serie:
bool FinComunicacion(HANDLE idComDev)
{
    // Cerrar el puerto serie:
    CloseHandle(idComDev);
    return true;
}

// Hilo de escucha del puerto serie:
DWORD Hilo(LPDWORD lpdwParam)
{
    DWORD leidos;
    COMSTAT cs;
    char *cad;
    DWORD dwCommEvent;
    HANDLE idComDev = *((HANDLE*)lpdwParam);

    if(!SetCommMask(idComDev, EV_RXCHAR)) {
        cout << "Error al iniciar captura de evento" << endl;
        return 0;
    }
    do {
        if(WaitCommEvent(idComDev, &dwCommEvent, NULL)) {
            SetCommMask(idComDev, EV_RXCHAR);
            while(ocupado);
            ocupado = true;
            if(dwCommEvent & EV_RXCHAR) {
                ClearCommError(idComDev, &leidos, &cs);
                leidos=0;
                cout << "Detectados " << cs.cbInQue << " caracteres" << endl;
                /* Leer buffer desde puerto serie */
                if(cs.cbInQue) {
                    cad = new char[cs.cbInQue+3]; // Caracteres en buffer, más retorno de línea, más nulo
                    ReadFile(idComDev, cad, cs.cbInQue, &leidos, NULL);
                    cad[leidos] = '\n'; // Terminar cadena con salto de línea y nulo
                    cad[leidos+1] = '\r';
                    cad[leidos+2] = 0;
                    cout << cad;
                    delete[] cad;
                }
            } else {
                cout << "Evento: EV_BREAK o EV_ERR" << endl;
                 ClearCommBreak(idComDev);
            }
            ocupado = false;
        } else {
            cout << "Error en WaitCommEvent" << endl;
            ClearCommError(idComDev, NULL, NULL);
        }
        Sleep(10);
    } while(true);
    return 0;
}

void EscribirSerie(HANDLE idComDev, char *buf)
{
    char oBuffer[256];  /* Buffer de salida */
    DWORD iBytesWritten;

    iBytesWritten = 0;
    strcpy(oBuffer, buf);
    while(ocupado);
    ocupado = true;
    WriteFile(idComDev, oBuffer, strlen(oBuffer), &iBytesWritten, NULL);
    ocupado = false;
}


Fuente:
http://articulos.conclase.net/?tema=comunicacion&art=serie&pag=000

Por supuesto, debo modificarlo. Creo una interfaz MFC del C++ bajo Visual Studio Community 2015 indicado en este documento a partir de la página 30.

En el MFC de Visual Studio, hay que incluir dos botones y un richTextBox.


Imagen, Arduino debe recibir datos desde el puerto serie y enviar que ha sido recibido.


Solo quiero que con MFC sea capaz de apagar y encender un Led, tal como lo hago con otro lenguaje, C#, Visual Basic pero este MFC de C++ me cuesta muchísimo.
[youtube=640,360]https://www.youtube.com/watch?v=Ra2PBfLFuHk[/youtube]

Si les pica la curiosidad, el código de Arduino es este.
/*
* Electrónica PIC.
*
* Ejemplo:
* Encender y apagar un Led con Arduino y Visual Studio 2015.
*/

int pinLed =  13;   // Declaramos la variable pin del Led.
char caracter;
String comando;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  pinMode(pinLed, OUTPUT);  // Inicializa el pin del Led 1 como salida.
  /* Voy leyendo carácter a carácter lo que se recibe por el canal
   *  serie (mientras llegue algún dato allí), y los voy concatenando
   *  uno tras otro en una cadena. En la práctica, si usamos el
   *  "Serial monitor" el bucle while acabará cuando pulsemos Enter.
   *  El delay es conveniente para no saturar el canal serie y que la
   *  concatenación se haga de forma ordenada.
   */
  while (Serial.available() > 0)
  {
    caracter= Serial.read();
    comando.concat(caracter);
    delay(10);
  }

  /* Unavez ya tengo la cadena "acabada", compruebo su valor y hago
   * que la placa Arduino reaccione según sea este. Aquí podríamos
   * hacer lo que quiesiéramos: si el comando es "tal", enciende
   * un Led, si es cual, mueve un motor... y así.
   */
  if (comando.equals("ON") == true)  // Led_ON.
  {
        digitalWrite(pinLed, HIGH); // Enciende el Led.
        Serial.println("Led 13 encendido.");
  }
       
  if (comando.equals("OFF") == true) // Led_OFF.
  {
        digitalWrite(pinLed, LOW); // Apaga el Led.
        Serial.println("Led 13 apagado.");
  }
 
  // Limpiamos la cadena para volver a recibir el siguiente comando.
  comando="";
}


En resumen,  a partir del código de C++ para consola, adaptarlo a modo Visual MFC C++, solo enviar ON y OFF y recibir datos de respuesta.

Espero resolver este problema de una vez. C++ me vuelve loco.

Un cordial saludos.
#563
Programación C/C++ / Re: Agregar Interfaz a C++
4 Febrero 2016, 20:34 PM
Hola:

Crear una interfaz gráfica con C++.
Hice un tutorial con tres formas de hacerlo.

Ver visor.

Ver PDF.

Espero que te ayude.

Saludos.
#564
Cita de: crack81 en 23 Enero 2016, 20:51 PM
Hola no se muy bien cual es tu  falla pero mira este codigo
para optimizar un poco y ver mas facil lo que andas buscado

Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.NetworkInformation; // No olvidar.

namespace Leer_MAC
{
class Program
{
static void Main(string[] args)
{
Console.Title = "En busca del MAC";

var macAddr =
(
from nic in NetworkInterface.GetAllNetworkInterfaces()
select nic.GetPhysicalAddress().ToString()
).ToArray();

Console.WriteLine("numero de direcciones "+macAddr.Count());

foreach(var address in macAddr){
Console.WriteLine(address);
}

Console.ReadLine();

}
}
}


Tu resultado es este. Buen trabajo todo simplificado.


Muy bueno que lo has hecho simple.
Por lo que se ve, el primer MAC que detecta es el físico. De alguna manera quiero guardar en una variable el primer MAC, que es el físico que se está usando en mi caso de mi ordenador. Lo puse marcado en rojo porque no quiero ponerlo en público.

Si son todas las MAC, pues todas. Lo que quiero hacer es guardar en un archivo binario dicha más en un archivo.txt, también lo podemos llamar archivo.bin para hacer más exacto.

Primer ejemplo archivo de texto y binario. Me da error.
Código (csharp,37) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Net.NetworkInformation; // No olvidar.
using System.IO;

namespace Leer_MAC_2
{
   class Program
   {
       static void Main(string[] args)
       {
           Console.Title = "Leer MAC 2";
           var macAddr =
   (
       from nic in NetworkInterface.GetAllNetworkInterfaces()
       select nic.GetPhysicalAddress().ToString()
   ).ToArray();

           // Para escribir datos en un archivo.
           StreamWriter Texto = new StreamWriter("Archivo.txt");
           Console.WriteLine("numero de direcciones " + macAddr.Count());

           foreach (var address in macAddr)
           {
               Texto.Write(address);
               Console.WriteLine(address);
           }

           Texto.Close(); // Cerrar archivo.

           FileStream Archivo = new FileStream("Archivo.txt", FileMode.Append);
           BinaryWriter Binario = new BinaryWriter(Archivo); // Escribe en bibario.
           Binario.Write(macAddr); // Error aquí.
           Archivo.Close(); // Cierra archivo binario.
           Console.ReadKey(); // Pulse cualquier tecla para salir.
       }
   }
}


Mi idea es guardar la MAC o todas las MAC obtenidas en un archivo de texto o binario. En este ejemplo hace de las dos cosas para que podamos ver los ejemplos.

A lo mejor es prferible usar primero solo archivo de texto plano para ver si se puede guardar bien los datos. Luego con otro ejemplo se guarda en binario para que nadie sepa que hay dentro de ese archivo, por ejemplo, su MAC.

Le envío este programa y crea un archivo, en el cual pediré por e-mail el archivo.txt o el archivo.bin para luego leerlo en mi casa con otro programa.

Antes, debo acabar bien este programa.
Me dice este error.
CitarGravedad   Código   Descripción   Proyecto   Archivo   Línea
Error   CS1503   Argumento 1: no se puede convertir de 'string[]' a 'bool'   Leer_MAC_2   c:\users\usuario\documents\visual studio 2015\Projects\Leer_MAC_2\Leer_MAC_2\Program.cs   37

Sin usar el archivo binario, me muestra estos valores.
CitarXXXXXXXXXXXX0A002700000000000000000000E000000000000000E000000000000000E0

Donde la XXXXXXXXXXXX es mi MAC en este caso. Los demás son otros MAC virtuales.

Sólo falta hacer lo mismo en binario.

Saludos.
#565
Hola:

Muchas gracias, me ha servido, es este tal como indicaste.

https://msdn.microsoft.com/es-es/library/y72ewk2b.aspx

Saludos.
#566
Hola:

Estoy con WPF de VB 2015. Este es la interfaz.



La parte de programación es esta:
Código (vbnet,28) [Seleccionar]
Imports System.IO.Ports ' No olvidar.
Imports System.Text ' No olvidar.

Class MainWindow
    ' Utilizaremos un string como buffer de recepción.
    Dim Recibidos As String
    ' Creamos un objeto sdel puerto serie.
    Dim serialPort1 As New SerialPort()

    Private Sub Form_Principal_Loaded(sender As Object, e As RoutedEventArgs) Handles Form_Principal.Loaded
        ' Configuramos el puerto serie.
        serialPort1.BaudRate = 115200 ' Baudios, tiene que ser el mismo que Arduino UNO.
        serialPort1.PortName = "COM4" ' Elegimos el COM4 igual que Arduino en mi caso.
        serialPort1.Parity = Parity.None ' Nada de paridad.
        serialPort1.DataBits = 8 ' 8 bits.
        serialPort1.StopBits = StopBits.Two ' Funciona mejor con 2 bits de Stop.

        ' Abrir puerto mientras se ejecute la aplicación.
        If Not serialPort1.IsOpen Then
            Try
                serialPort1.Open()
            Catch ex As System.Exception
                MessageBox.Show(ex.ToString())

            End Try
        End If
        ' Ejecutar la función Recepción por disparo del evento ¡DataReived!
        serialPort1.DataReceived += Recepcion
    End Sub

    Private Sub Recepcion(sender As Object, e As SerialDataReceivedEventArgs)
        ' Acumular los caracteres recibidos a nuestro "buffer" (string).
        Recibidos += serialPort1.ReadExisting()

        ' Invocar o llamar al proceso de tramas.
        Me.Dispatcher.Invoke(AddressOf Actualizar)
    End Sub

    ' Procesar los datos recibidos en el buffer y extraer tramas completas.
    Private Sub Actualizar()
        Dim doc = New FlowDocument()
        doc.Blocks.Add(New Paragraph(New Run(Recibidos)))

        Select Case Recibidos
            Case "ON"
                image.Source = (New BitmapImage(New Uri("Led rojo encendido.png", UriKind.Relative)))
                label_Leyendo.Content = "Encendido."
                Rectangulo.Fill = New SolidColorBrush(Colors.Green)
                Recibidos = "" ' Limpiar.
                Exit Select

            Case "OFF"
                image.Source = (New BitmapImage(New Uri("Led rojo apagado.png", UriKind.Relative)))
                label_Leyendo.Content = "Apagado."
                Rectangulo.Fill = New SolidColorBrush(Colors.Red)
                Recibidos = "" ' Limpiar.
                Exit Select
        End Select
    End Sub

    ' Desde que cierres el programa, cierra el puerto.
    Private Sub Form_Principal_Closing(sender As Object, e As ComponentModel.CancelEventArgs) Handles Form_Principal.Closing
        If serialPort1.IsOpen Then ' ¿El puerto está abierto?
            serialPort1.Close() ' Cerrar puerto.
        End If
    End Sub
End Class


Gravedad    Código    Descripción    Proyecto    Archivo    Línea
Error    BC32022    'Public Event DataReceived As SerialDataReceivedEventHandler' es un evento y no se puede llamar directamente. Use una instrucción 'RaiseEvent' para generar un evento.    Entrada_Arduino_WPF_1_VB    C:\Users\Usuario\Documents\Visual Studio 2015\Projects\Entrada_Arduino_WPF_1_VB\Entrada_Arduino_WPF_1_VB\MainWindow.xaml.vb    28

Gravedad    Código    Descripción    Proyecto    Archivo    Línea
Error    BC30455    No se especificó un argumento para el parámetro 'e' de 'Private Sub Recepcion(sender As Object, e As SerialDataReceivedEventArgs)'.    Entrada_Arduino_WPF_1_VB    C:\Users\Usuario\Documents\Visual Studio 2015\Projects\Entrada_Arduino_WPF_1_VB\Entrada_Arduino_WPF_1_VB\MainWindow.xaml.vb    28

El programa completo se trada de recibir tramas de bytes por el puerto serie.

¿Alguna solución al problema?

Saludos.

PD: Uso Visual Studio Community 2015.
#567
Hola:

Viendo esta noticia.
[youtube=640,360]https://www.youtube.com/watch?v=-jwYuZDKydE[/youtube]

Tengo un sobre mesa, un Raspberry Pi 2 y un portatil con Windows y tiene webcam integrada, todo conectado desde el router.

Quiero hacer pruebas de hackear sea como sea mi propia webcam del portatil y sacar fotos y vídeos.

Si alguien sabe esto y lo ha hecho. Puede expresar sus experiencias de todo tipo.

Saludos.
#568
Hola:

Código (csharp,57) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Net.NetworkInformation; // No olvidar.

namespace Leer_MAC
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "En busca del MAC";

            string Nombre_HostName = null;
            string Nombre_Dominio = null;
            string MAC = null;

            IPGlobalProperties Propiedades_PC = IPGlobalProperties.GetIPGlobalProperties();
            NetworkInterface[] Interfaz_red = NetworkInterface.GetAllNetworkInterfaces();
            Console.WriteLine("Información de interfaz para {0}.{1}     ",
                    Propiedades_PC.HostName, Propiedades_PC.DomainName);
            if ((Interfaz_red == null) || (Interfaz_red.Length < 1))
            {
                Console.WriteLine("  No hay interfaces de red encontrados.");
                return;
            }

            Console.WriteLine("  Número de interfaces .................... : {0}", Interfaz_red.Length);
            foreach (NetworkInterface Adaptador in Interfaz_red)
            {
                IPInterfaceProperties Propiedades = Adaptador.GetIPProperties(); //  .GetIPInterfaceProperties();
                Console.WriteLine();
                Console.WriteLine(Adaptador.Description);
                Console.WriteLine(String.Empty.PadLeft(Adaptador.Description.Length, '='));
                Console.WriteLine("  Tipo interfaz ........................... : {0}", Adaptador.NetworkInterfaceType);
                Console.Write("  Dirección física ........................ : ");
                PhysicalAddress Direccion = Adaptador.GetPhysicalAddress();
                byte[] bytes = Direccion.GetAddressBytes();
                // Variable que tendra la dirección visible
                string direccion_MAC = string.Empty;
                // Recorrer todos los bytes de la dirección.
                for (int i = 0; i < bytes.Length; i++)
                {
                    // Muestra la dirección física en hexadecimal.
                    direccion_MAC += bytes[i].ToString("X2");
                    Console.Write("{0}", bytes[i].ToString("X2"));
                    // Inserte un guión después de cada bocado, a menos que estemos al final de la dirección.
                    if (i != bytes.Length - 1)
                    {
                        // Agregar un separador, por formato.
                        direccion_MAC += "-";
                        Console.Write("-");
                    }
                    MAC = direccion_MAC;
                }
                Console.WriteLine();
            }

            // Guarda el nombre del hostname en la variable Nombre_HostName.
            Nombre_HostName = Propiedades_PC.HostName;

            // Guarda el nombre del dominio si lo tiene.
            Nombre_Dominio = Propiedades_PC.DomainName;


            // Guarda la MAC recibida con sus - en la varible MAC.
            //MAC = direccion_MAC;

            Console.WriteLine();
            Console.WriteLine(@"Nombre del HostName: {0}", Nombre_HostName);
            Console.WriteLine(@"Nombre del domninio: {0}", Nombre_Dominio);
            Console.WriteLine(@"MAC es: {0}", MAC);
            Console.ReadKey(); // Pulsa cualquier tecla y sale.
        }
    }
}


¿Hay alguna forma de tener ese MAC y guardarla en una variable general tipo string?

Me detecta todos los MAC tanto físico y virtuales. Solo me interesa el físico. Eso si, he logrado sacar la MAC pero solo me muestra el último llamado Tunnel.

Mira que llevo tiempo con esto y no me sale ni aquí ni pekín.

Saludos.
#569
Hola:

Me falla este programa, quiero coger la MAC de este formato que genera en la primera tarjeta de red física (04-B2-AF-EE-E2-34-6A-8C).

Al complicar, me dale este error.
Código (csharp,41) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Net.NetworkInformation; // No olvidar.

namespace Leer_MAC
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "En busca del MAC";

            string Nombre_HostName = null;
            string Nombre_Dominio = null;
            string MAC = null;

            IPGlobalProperties Propiedades_PC = IPGlobalProperties.GetIPGlobalProperties();
            NetworkInterface[] Interfaz_red = NetworkInterface.GetAllNetworkInterfaces();
            Console.WriteLine("Información de interfaz para {0}.{1}     ",
                    Propiedades_PC.HostName, Propiedades_PC.DomainName);
            if ((Interfaz_red == null) || (Interfaz_red.Length < 1))
            {
                Console.WriteLine("  No hay interfaces de red encontrados.");
                return;
            }

            Console.WriteLine("  Número de interfaces .................... : {0}", Interfaz_red.Length);
            foreach (NetworkInterface Adaptador in Interfaz_red)
            {
                IPInterfaceProperties Propiedades = Adaptador.GetIPProperties(); //  .GetIPInterfaceProperties();
                Console.WriteLine();
                Console.WriteLine(Adaptador.Description);
                Console.WriteLine(String.Empty.PadLeft(Adaptador.Description.Length, '='));
                Console.WriteLine("  Tipo interfaz ........................... : {0}", Adaptador.NetworkInterfaceType);
                Console.Write("  Dirección física ........................ : ");
                PhysicalAddress Direccion = Adaptador.GetPhysicalAddress();
                byte[] bytes = Direccion.GetAddressBytes();
                for (int i = 0; i < bytes.Length; i++)
                {
                    // Muestra la dirección física en hexadecimal.
                    Console.Write("{0}", bytes[i].ToString("X2"));
                    // Inserte un guión después de cada bocado, a menos que estemos al final de la dirección.
                    if (i != bytes.Length - 1)
                    {
                        Console.Write("-");
                    }
                }
                Console.WriteLine();
            }

            // Guarda el nombre del hostname en la variable Nombre_HostName.
            Nombre_HostName = Propiedades_PC.HostName;

            // Guarda el nombre del dominio si lo tiene.
            Nombre_Dominio = Propiedades_PC.DomainName;


            // Guarda la MAC recibida con sus - en la varible MAC.
            MAC = Encoding.UTF8.GetString(bytes);

            Console.WriteLine();
            Console.WriteLine(@"Nombre del HostName: {0}", Nombre_HostName);
            Console.WriteLine(@"Nombre del domninio: {0}", Nombre_Dominio);
            Console.WriteLine(@"MAC es: {0}", MAC);
            Console.ReadKey(); // Pulsa cualquier tecla y sale.
        }
    }
}


CitarGravedad   Código   Descripción   Proyecto   Archivo   Línea
Error   CS0103   El nombre 'bytes' no existe en el contexto actual   Leer_MAC   C:\Users\Usuario\Documents\Visual Studio 2015\Projects\Leer_MAC\Leer_MAC\Program.cs   65

Buscando el cambio de tipo de Byte[] a string no me ha funcionado. En esta web ayuda como se hace.
http://www.convertdatatypes.com/Convert-Byte-Array-to-string-in-CSharp.html

¿Alguna idea?

Saludos.
#570
Lo que me han contado y gracias los consejos, este es otra forma.



  •     Crea un nuevo proyecto de formularios (el clásico)
        Ve a Proyecto > Propiedades de WindowsAplicattion1 (o como se llame el proyecto)
        Ve a Configuración
        En donde dice "setting" escribes "licencia" y le das enter
        En la misma columna, donde dice "String" le das click y lo cambias por "Double"
        En la misma columna, donde dice "Usuario" lo dejás así
        En la misma columna, donde hay un espacio vació, le pones 10
        Haces click en "Guardar Todo" (ya sabes donde está)
        Vuelves al formulario y le das doble click en lo gris
        Ahora, en la ventana de código, borras todo el contenido y escribes:

Código (vbnet) [Seleccionar]
Public Class Form1
    Sub Form1_Load (sender as object, e as EventArgs) handles MyBase.Load

If My.Settings.licencia = 0 Then
            MsgBox("TIENES QUE COMPRARME EL PROGRAMA (NO TE LO REGALE)")

            END
        Else
            My.Settings.licencia = My.Settings.licencia - 1
            MsgBox("Te quedan " & My.Settings.licencia & " arranques en este programa. Tendrás que comprame el programa.")
        End If

end sub

end class


Listo. Cada ves que se ejecute tu programa se le restará un arranque al por defecto que le asignamos 10, si le quedan 0 se muestra un menssaje y se cierra tu programa, NO SE BORRA PERO TAMPOCO SE EJECUTA. Debería de ser una solución. Salu2.