viernes, junio 20, 2008

Navegando el FileSystem desde Desktop a traves de RAPI

A continuación dejo un codigo para poder tomar los directorios y archivos de un dispositivo con WINCE desde una aplicación desktop, por medio de la RAPI.


[Flags]
enum FAF:int
{
FAF_ATTRIBUTES = 0x01,
FAF_CREATION_TIME = 0x02,
FAF_LASTACCESS_TIME = 0x04,
FAF_LASTWRITE_TIME = 0x08,
FAF_SIZE_HIGH = 0x10,
FAF_SIZE_LOW = 0x20,
FAF_OID = 0x40,
FAF_NAME = 0x80,
//FAF_ATTRIB_CHILDREN = 0x80,
//FAF_ATTRIB_NO_HIDDEN = &H2000,
//FAF_FOLDERS_ONLY = &H4000,
//FAF_NO_HIDDEN_SYS_ROMMODULES = &H8000,
//FAF_GETTARGET = &H10000
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
class CE_FIND_DATA
{
int dwFileAttributes;
int ftCreationTimeLo, ftCreationTimeHi, ftLastAccessTimeLo, ftLastAccessTimeHi;
int ftLastWriteTimeLo, ftLastWriteTimeHi, nFileSizeLo, nFileSizeHi;
int dwOID;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
string cFileName;
public override string ToString()
{
return cFileName;
}
}

public bool FindAllFiles(string szPath)
{
IntPtr pData;
int cData;
bool bresult;
Create a NEW ceFindData Structure
CeFindData[] myCeFindDataS = new CeFindData[1];
bresult = CeFindAllFiles(szPath, (int)FAF.FAF_ATTRIBUTES | (int)FAF.FAF_NAME, out cData, out pData);
if (bresult)
{
IntPtr p = pData;
for (int i=0; i< cData ;i++)
{
CE_FIND_DATA fd;
fd = (CE_FIND_DATA) Marshal.PtrToStructure(p, typeof(CE_FIND_DATA));
p = new IntPtr(p.ToInt32() + Marshal.SizeOf(typeof(CE_FIND_DATA)));
}
}
return bresult;
}

lunes, junio 09, 2008

30 días de .Net Compact Framework

Chris Craft en su blog, todos los días durante un mes, ira agregando una aplicacion escrita en .Net Compact Framework. Para demostrar que es facil escribir aplicaciones en NetCF. Hasta el momento ya creo las siguientes aplicaciones:

image image image image
Minutes to Midnight Countdown Bluetooth Manager GPS Compass Mileage Tracker
image image image image
Mobile Capture Pocket PasswordGen Mobile FX What will be next?

miércoles, junio 04, 2008

Generando una dll para Compact Framework con CodeDom

Un integrante de mi equipo de desarrollo ( Javier ), ayer logro descubrir que parametros había que ponerle a CompilerParameters, para que después el CSharpCodeProvider genere una dll de .Net Compact Framework.
A continuación dejo el código:

using System;
using System.Text;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using Microsoft.Win32;
using System.IO;
using System.CodeDom;

public partial class CompactAssembly
{

public static void CreateTestDll()
{
StringBuilder sb = new StringBuilder("");

sb.Append("namespace CSCodeEvaler{ \n");
sb.Append("public class CSCodeEvaler{ \n");
sb.Append("public object EvalCode(){\n");
sb.Append("return 1; \n");
sb.Append("} \n");
sb.Append("} \n");
sb.Append("}\n");
CompactAssembly.CompileCompactAssembly(sb.ToString(), "CodeDomGenerated.dll");
}

public static bool CompileCompactAssembly(string codeToCompile, string outAssemblyName)
{
CodeDomProvider csp = new Microsoft.CSharp.CSharpCodeProvider();
CompilerParameters cp = new CompilerParameters();
cp.OutputAssembly = outAssemblyName;
cp.GenerateExecutable = false;
cp.GenerateInMemory = false;
cp.CompilerOptions = @"/noconfig /nostdlib";
cp.ReferencedAssemblies.Add(Path.Combine(@"C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE", "mscorlib.dll"));
CompilerResults cr = csp.CompileAssemblyFromSource(cp, codeToCompile);
return cr.Errors.Count == 0;
}
}

martes, junio 03, 2008

Microsoft Project Code Named Velocity - CTP1

Microsoft ha sacado a la luz su proyecto en nombre clave Velocity y en su
versión preliminar CTP1. Velocity es una plataforma que permite trabajar con
datos distribuidos en memoria caché dentro de aplicaciones .NET que requieren un
acceso a datos muy rápido en velocidad, escalado y con alta disponibilidad.
La descarga en inglés apenas ocupa 2.5 Mb y la podréis encontrar en este enlace. Dentro de la página de descarga, recomiendo mirar los comentarios acerca de ASP.NET y Velocity. ;-)
También podréis acceder al blog oficial de Velocity en este otro enlace, aunque aún no hay ni una sola entrada. De forma adicional, hay ya disponible un foro técnico y de discusión sobre Velocity en este enlace, aunque al igual que el anterior, no hay aún publicada ninguna información.
Como pode ver, se trata de un proyecto muy muy nuevo, hecho público apenas hace unas horas.
Espero que os resulte interesante.

Fuente: Jorge Serrano - MVP Visual Developer - Visual Basic