Blog sur les technos .net
Puisque ces mystères me dépassent, feignons d'en être l'organisateur.

How to get twain capabilites in using MSG_GET

By TheGrandBlack
private bool InitApplication()
{
CloseDataSource();
if (m_applicationId.Id == IntPtr.Zero)
{
Init(m_hwnd);
if (m_applicationId.Id == IntPtr.Zero)
return false;
}
return true;
}

public object GetCapability(TwCap p_capabilityValue)
{
if (!InitApplication())
return null;
TwainRC v_rc = TwainInterop.DSMident(m_applicationId,
IntPtr.Zero,
TwainDG.Control, TwDAT.Identity,
TwainMSG.OpenDS,
m_dataSource);

if (v_rc != TwainRC.Success)
return null;

using (TwainCapability v_cap = new TwainCapability(p_capabilityValue))
{
v_cap.m_conType = (ushort)TwOn.DontCare16;
v_cap.m_handle = IntPtr.Zero;
try
{
v_rc = TwainInterop.DScap(
m_applicationId,
m_dataSource,
TwainDG.Control,
TwDAT.Capability,
TwainMSG.MSG_GET,
v_cap);

if (v_rc == TwainRC.Success)
{
if (v_cap.m_handle != IntPtr.Zero)
{
IntPtr v_pv = WinInterop.GlobalLock(v_cap.m_handle);
try
{
switch (v_cap.m_conType)
{
case (ushort)TwOn.Enumeration:
TwEnumeration v_enum =
(TwEnumeration)Marshal.PtrToStructure(v_pv, typeof(TwEnumeration));
return v_enum;
case (ushort)TwOn.Range:
TwRange v_range =
(TwRange)Marshal.PtrToStructure(v_pv, typeof(TwRange));
return v_range;
case (ushort)TwOn.One:
TwOneValue v_one =
(TwOneValue)Marshal.PtrToStructure(v_pv, typeof(TwOneValue));
return v_one;
case (ushort)TwOn.Array:
TwArray v_array =
(TwArray)Marshal.PtrToStructure(v_pv, typeof(TwArray));
return v_array;
default:
break;
}
}
finally
{
WinInterop.GlobalUnlock(v_cap.m_handle);
WinInterop.GlobalFree(v_cap.m_handle);
}
}
}
}
finally
{
CloseDataSource();
}
return null;
}
}
 

Software Factory: The Guidance Automation Toolkit (GAT) for Visual Studio 2005

By TheGrandBlack
Visual Studio 2005 really is a dream environment for any serious .NET Solution Architect or Developer. The built-in designers, the great new CLR and the language extensions, super new controls etc. make designing and developing complex applications less of a hassle. And as you may have derived from some of my previous posts, I also really dig automation of mundane tasks such as daily builds, build verification tests and of course coding and documentation of Data Access Layers, collections and the like. Enter Microsoft's Software Factories initiative.
A Software Factory, basically, is any automated process that generates software; be it code, a model, a spec, whatever. Software factories make the process of designing and building software less error-prone, faster and easier, freeing us up to focus on the interesting bits. And one of the absolutely coolest new things in this area is Microsoft's GAT.[...]
 

[Management .net] Du nouveau dans la gestion des traces de vos applications .net

By TheGrandBlack

.NET incorporait déja un mécanisme tres puissant afin de pouvoir tracer ( logger, faire des messages de log ) vos applications; Vous pouviez implémenter un log, en utilisant System.Diagnostics et cela via l'objet l'objet Trace, on pouvait écrire des logs; ces messages etaient ensuite relayer par des listeners et suivant ces listeners on pouvait écrire soit vers des fichiers textes, des fichiers XML, l'eventLog de Windows etc ...
On pouvait définir le niveau de trace, par exemple en développement définir un niveau tres haut de maniere à avoir toutes les traces et en production fixer un niveau tres bas afin de ne retenir que les erreurs de l'application.
L'appel a l'instruction permettant de logger etait conditionner par deux directives de compilation DEBUG & TRACE ce qui faisait qu'une partie des instructions de log etait supprimer lors de compilation en mode production.
Malheureusement ces classes du FrameWork 1.0 et 1.1 ne permettaient pas de catégoriser les messages sortant;
Dans mon architecture .net 1.0 & 1.0 j'avais du mettre en place une nouvelle classe appelée TraceManager dont le but etait de catégoriser les messages sortant :
- Information
- Warning.
- Error
- Debug.

J'avais aussi implémenter 3 Listeners :
- XML, EventLog ( plus complet ), SQL dans ces listeners on prenait en compte la possibilité de tracer un objet .net en utilisant la sérialisation et en tracant aussi les informations de la pile ( ligne, application etc ... )

Dans la future version de .net ( .net 2.0, Whidbey 2005 VS.NET ) les mécanismes de traces ont evolués. La catégorisation est maintenant pris en compte en utilisant une énumération TraceEventType, vous pouvez aussi invoquer directement la méthode adéquate mySource.TraceInformation ; le tracages des informations de l'application et de la pile aussi;
Je vous invite à découvrir à partir du blog BCLTeam's WebLog

Il existe des briques permettant de tracer les applications .net ( Log4Net, Logging Block de Microsoft, etc ...
 

Encore une Media-Box UPnP : la D-LINK DSM-320RD

By TheGrandBlack


Une evolution de la platine D-LINK afin de distribuer le multimédia dans la maison ( ou le bureau ) avec lecteur CD/DVD.

Cette platine relativement complète, comprend un lecteur de carte multi-formats : (SD, Memory Stick, MMC, et Compact Flash Type I/II (pour vos photos).

D'autre part, la DSM-320RD supporte le standard Windows Media Connect et les "droits" Windows Media DRM (!!!). Deux types de connexions sont disponibles : Ethernet et WiFi 802.11g !















Elu produt de l'année 2005/2006 par EISA
 

Nouveautés : Apple invente la souris à 2 boutons et à molette

By TheGrandBlack

Que dis-je 2 boutons, non 4 boutons; C'est à croire que Apple n'a pas fini d'inventer l'informatique.
Apres le choix du fondeur Intel pour ses nouveaux ordinateurs, voila que Apple copie la souris du PC; La souris est quasi identique à celle du PC mais avec un design Mac.
Découvrez la souris qui a réinventé la roue ( Roulette ) : La Mighty Mouse

Ce que l'histoire ( le site ) ne dit pas c'est que cette souris est réclamée depuis fort longtemps par les utilisateurs de Mac.

Apple a quand même tenu à déposer un brevet pour cette souris. Brevet qui concerne le déplacement de la souris ou plus exactement le déplacement tout azimuts.