Como escribir un programa C# que hace llamadas al Sistema de Windows y sus apis
Para este ejemplo he decido usar el API GetTickCount() que devuelve un valor entero y no lleva datos entrada.
Su prototipo es:
Int GetTickCount(void) y se encuentra almacenada en Kernel32.dll, Esta api nos regresa un entero con los milisegundo que ha estado encendida nuestra PC.
La importación de la api se hace en una sola lÃnea, el resto de código es simple programación objetos.
Declararemos una Clase, crearemos sus métodos para explotar el api, hacemos una instancia de la clase (un objeto) y lo usamos para acceder a los métodos y solo como practica usamos el constructor y destructor para advertir que el objeto ha iniciado y cuando ha sido destruido.
Para incluir el API requerimos saber en que DLL esta y luego importar su prototipo, requerimos declarar en el using System.Runtime.InteropServices;
Y lo importamos de esta manera.
[DllImport (“Kernel32.dll”)] public static extern int GetTickCount();
Y con eso hemos incluido el api como un método estático de nuestra clase y esta listo para usarse.
[DllImport (“archivo.dll�)] sirve para indicar en donde se encuentra el api que usaremos
Extern sirve para indicar a C# que el código del método esta externo a la clase, de hecho en kernel32.dll
La importación de código es útil para explotar recursos en el sistema operativo, sin embargo al hacer uso de este tipo de recursos hemos amarrado el programa a la plataforma que provee el recurso, asà que nuestro programa ha perdido portabilidad pero ha ganado capacidades en el entorno Windows de Microsoft.
El código es el siguiente:
using System;
using System.Runtime.InteropServices;
namespace CSCallback
{
class MainClass
{
[DllImport (“Kernel32.dll”)] public static extern int GetTickCount();
public MainClass ()
{
Console.WriteLine (“\nObjeto de la clase (” + this.ToString () + “) Construido.”);
Console.WriteLine (“\nEste programa accesa al Kernel.Dll y usa la API GetTickCount\n\nTiempo con la computadora en linea:\n”);
}
public int segundos ()
{
return GetTickCount() / 1000;
}
public int minutos ()
{
return GetTickCount() / 60000;
}
public int horas()
{
return (GetTickCount() / 60000) / 60;
}
public int dias()
{
return (GetTickCount() / 60000) / 60 /24;
}
~MainClass()
{
Console.WriteLine (“\nObjeto Destruido\n”);
}
public static void Main(string[] args)
{
MainClass cpuenlinea = new MainClass ();
Console.WriteLine (“Segundos: {0}\nMinutos: {1}\nHoras: {2}\nDias: {3}\n”,cpuenlinea.segundos() ,cpuenlinea.minutos(),cpuenlinea.horas(),cpuenlinea.dias());
Console.WriteLine (“Preciona Enter para terminar”);
Console.ReadLine ();
}
}
}
Reescribà el mismo programa usando Windows.Form por si alguno lo desea usar como un programa de colección o “Cosas curiosas�, el programa incluye en si mismo su código en C#
Descargar los programas compilados y su codigo fuente – > AQUI
GRACIAS POR TU APLICACION, SENCILLAPERO INTERESANTE.
ME ES NECESARIO HACER UN PROGRAMA QUE REPRODUSCA SONIDOS EN C#, MI PROBLEMA ES QUE NO SE COMO PUEDA HACERLO… ALGUNA SUGERENCIA??
MI CORREO ES BETO_BCS@HOTMAIL.COM
GRACIAS!