Publié par Maxence le sam, 25/08/2012 - 09:49
Lorsque vous êtes en train de déboguer un complément Revit dans Visual Studio, la fenêtre de sortie est polluée par plein de messages en provenance des espaces de nom System.Windows.Media.Animation et System.Windows.Data. Il devient alors très difficile de retrouver les messages laissés par votre application et la fenêtre de sortie en devient presque inutilisable.
Publié par Maxence le ven, 03/08/2012 - 18:49
Here's a little sample code to detect if AutoCAD is running. If it does, it displays the full path of the active drawing.
The code use COM (out of process).
VB.NET
Imports System.Runtime.InteropServices
Module Module1
Sub Main()
Try
Dim acad = Marshal.GetActiveObject("AutoCAD.Application")
Dim activeDocument = acad.ActiveDocument
MsgBox("Le chemin complet du document actif est : " & activeDocument.FullName)
Catch ex As COMException
Const MK_E_UNAVAILABLE As Integer = &H800401E3
If ex.ErrorCode = MK_E_UNAVAILABLE Then
MsgBox("AutoCAD n'est pas en cours d'exécution.")
Else
Throw
End If
End Try
End Sub
End Module
Publié par Maxence le jeu, 02/08/2012 - 16:19
Voici un petit exemple de code qui permet de détecter si AutoCAD est en cours d'exécution. Si c'est le cas, il affiche le chemin complet du dessin ouvert.
Le code utilise COM (out of process).
VB.NET
Imports System.Runtime.InteropServices
Module Module1
Sub Main()
Try
Dim acad = Marshal.GetActiveObject("AutoCAD.Application")
Dim activeDocument = acad.ActiveDocument
MsgBox("Le chemin complet du document actif est : " & activeDocument.FullName)
Catch ex As COMException
Const MK_E_UNAVAILABLE As Integer = &H800401E3
If ex.ErrorCode = MK_E_UNAVAILABLE Then
MsgBox("AutoCAD n'est pas en cours d'exécution.")
Else
Throw
End If
End Try
End Sub
End Module
Publié par Maxence le dim, 10/06/2012 - 16:14

The virus Flame is a lot of attention right now. A striking feature here is that it specifically targets AutoCAD DWG files. This suggests that this complex malware was designed by a state eager to seize some secrets documented through drawings.
Publié par Maxence le jeu, 19/01/2012 - 14:06
Pour lancer le script cmd.bat dans l’évènement pré-build ou post-build uniquement en configuration Debug :
IF /I "$(ConfigurationName)" == "Debug" cmd.bat
Publié par Maxence le lun, 16/01/2012 - 17:01
Comme vous le savez sans doute, un programme écrit avec la plateforme .NET est compilé en Common Intermediate Language (CIL) qui peut être facilement décompilé avec un programme comme l'excellent DotPeek de JetBrains.
Pour protéger votre propriété intellectuelle, vous pouvez utiliser un obfuscateur qui complique le code généré par le compilateur. Le plus connu des programmes du genre est Dotfuscator, mais à l'usage il se révèle peu pratique.
Publié par Maxence le mar, 10/08/2010 - 10:37
La base de registre Windows ne dispose pas d'un type de donnée adapté aux objets date. On peut évidemment utiliser un type chaîne de caractère, mais on peut aussi utiliser un type entier qui est plus compact. Les objets DateTime peuvent être converti en long (entier 64 bits signé) à l'aide de la méthode ToBinary. La méthode FromBinary réalise la conversion dans le sens inverse. L'entier obtenu peut ensuite être enregistré dans le registre sous la forme d'une valeur QWORD (entier 64 bits).
using Microsoft.Win32;
RegistryKey rkcu = Registry.CurrentUser;
RegistryKey rk = rkcu.CreateSubKey(@"Software\Société\Produit");
// Ecrit la valeur dans le registre
rk.SetValue("Date", DateTime.Now.ToBinary(), RegistryValueKind.QWord);
// Lit la valeur depuis le registre
DateTime d = null;
object oDate = rk.GetValue("Date");
if (oDate != null) d = DateTime.FromBinary((long)oDate);
Publié par Maxence le jeu, 29/07/2010 - 12:31
.NET dispose d'une fonctionnalité qui permet d'exécuter du code sous un autre nom d'utilisateur que celui qui a lancé le programme à l'origine (une sorte de RUNAS). C'est un peu compliqué à utiliser car il faut notamment P/Invoker des fonctions de l'API Windows.
Voici un portage du code C# originellement publié par Michiel van Otegem en VB.NET. Cette classe permet de simplifier le basculement de contexte.
Publié par Maxence le jeu, 15/07/2010 - 10:42
Avec .NET, on peut obtenir la version de Windows avec le code suivant :
Dim osVersion As String = Environment.OSVersion.VersionString
Publié par Maxence le jeu, 04/03/2010 - 19:56
Il faut passer la propriété DrawMode de la ListBox à OwnerDrawFixed et ajouter le code suivant dans l'événement OnDraw :
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
e.DrawFocusRectangle();
ListBox lb = sender as ListBox;
// Calcule les dimensions du texte
SizeF stringSize = new SizeF();
stringSize = e.Graphics.MeasureString(lb.Items[e.Index].ToString(), e.Font);
e.Graphics.DrawString(
lb.Items[e.Index].ToString(),
e.Font,
new SolidBrush(e.ForeColor),
new PointF(e.Bounds.Right - stringSize.Width, e.Bounds.Y)
);
}
Si ça peut faire gagner 5 minutes à quelqu'un...
Pages