Articles avec le tag « Développement Windows »
87 articles portant le tag « Développement Windows », du plus récent au plus ancien.
-
L'API du pool de threads Win32 — de la concurrence sans créer de threads, via CreateThreadpoolWork
Vous semez des appels CreateThread partout dans votre code natif ? Cet article explique l'API du pool de threads Win32 refondue sous Vista — les quatre objet...
-
Tubes nommés en pratique — l'IPC standard de Windows, de la conception à la sécurité
Guide pratique des tubes nommés, mécanisme standard de communication inter-processus sous Windows. Cet article organise, à partir des sources primaires, le c...
-
Les applications qui cassent à la reprise de veille — comment fonctionnent les événements d'alimentation Windows et comment construire des applications métier qui y survivent
Vous avez ouvert le portable et les connexions de l'application métier étaient mortes — la cause est une conception qui n'a jamais tenu compte de la veille. ...
-
DllMain et le verrou du chargeur — la vraie raison pour laquelle on vous dit de « ne rien faire dans l'initialisation d'une DLL »
Pourquoi il ne faut pas appeler LoadLibrary ni synchroniser avec d'autres threads depuis DllMain. En s'appuyant sur les sources primaires, cet article expliq...
-
Ce qu'est vraiment « Ne répond pas » — comment Windows décide qu'une application est bloquée, et comment concevoir des applications qui ne le sont pas
Le « Ne répond pas » de Windows est un mécanisme dans lequel l'OS juge qu'une fenêtre n'a pas récupéré de message pendant 5 secondes et la remplace par une f...
-
Comment fonctionnent le presse-papiers et le glisser-déposer — traiter correctement le transfert de données OLE dans les applications métier
Coller un tableau Excel et la mise en forme se défait ; fermer l'application source et vous ne pouvez plus coller — les deux viennent du presse-papiers qui p...
-
WPR/WPA en pratique — Introduction à l'investigation des performances à l'échelle du système pour « tout le PC est lent »
Les problèmes de performance tels que « tout le PC est lent » ou « le démarrage est lent », que le Gestionnaire des tâches ne permet pas de suivre, s'investi...
-
L'arrêt de Windows vu depuis l'application — survivre correctement aux notifications de fermeture, aux redémarrages et aux coupures d'alimentation
Un redémarrage nocturne de Windows Update a corrompu des données de mesure — ce type d'accident se prévient par conception. Cet article couvre, à partir des ...
-
Comment fonctionne la compatibilité des applications Windows — mode de compatibilité, shims et Compatibility Administrator
Pourquoi cocher le mode de compatibilité fait redémarrer une ancienne application. Cet article explique les shims (hooks d'API), les shims représentatifs, le...
-
L'intégration au shell Windows aujourd'hui ── menus contextuels, associations de fichiers et ce qui a changé sous Windows 11
Pourquoi le menu contextuel de Windows 11 se cache derrière « Afficher plus d'options » : des bases extension → ProgID → verb aux précautions des extensions ...
-
Lire les codes d'erreur Windows — la structure à trois couches Win32, HRESULT et NTSTATUS
Quand 0x80004005 apparaît, décomposez-le avant de chercher. Cet article présente la structure à trois couches des erreurs Win32, HRESULT et NTSTATUS, le moti...
-
Que représente réellement la « mémoire utilisée » sous Windows ── Bien lire Working Set, Private Bytes, Commit et le fichier d'échange
La « mémoire » du Gestionnaire des tâches, Working Set, Private Bytes et Commit ne représentent pas la même valeur. Cet article explique la relation entre mé...
-
Utiliser WMI/CIM depuis C# et PowerShell — Guide pratique pour la récupération d'informations matérielles, la surveillance des processus et l'interrogation à distance
La récupération du numéro de série d'un PC, la surveillance de l'espace disque libre et la détection du démarrage de processus reposent classiquement sur WMI...
-
Comment gérer les périphériques USB dans une application Windows — Choisir entre COM virtuel, HID, WinUSB et SDK dédié
Ce guide compare quatre méthodes pour piloter un équipement ou un périphérique USB depuis une application Windows : le port COM virtuel, HID, WinUSB et les S...
-
La conception des codes dans les systèmes métier — Comment définir les codes produit et client, et la clé de contrôle
Un guide pratique pour définir le système de codes des systèmes métier — codes produit, codes client, etc. Il couvre le tableau de décision entre codes signi...
-
La gestion d'incident ne s'arrête pas au rétablissement — Un modèle de postmortem (prévention de la récurrence) pour les petites équipes de développement
Traiter un incident comme terminé une fois corrigé et les excuses présentées garantit que vous le reproduirez. Cet article traduit le postmortem « blameless ...
-
Introduction à l'ADR (Architecture Decision Record) — la méthode minimale pour conserver « pourquoi on a choisi cette conception » sur un petit projet
Le code ne dit jamais pourquoi il a été écrit ainsi. Nous expliquons comment utiliser l'ADR (Architecture Decision Record) — un fichier Markdown par décision...
-
Versionner le schéma de base de données d'une application métier — pratiques de migration pour éviter que « chaque client ait une base différente »
Guide pratique pour versionner le schéma de base de données d'applications métier dont les bases sont dispersées chez chaque client. Implémentation C# de PRA...
-
CI/CD pratique pour les applications WinForms / WPF — Automatiser du build à la signature et à la distribution avec GitHub Actions
Guide pratique pour mettre en place le CI/CD des applications WinForms / WPF avec GitHub Actions. Couvre un YAML minimal de build+tests sur windows-latest, l...
-
Quand votre application Windows maison est signalée comme un virus — gérer les faux positifs de Microsoft Defender et composer avec l'impact sur les performances
Nous détaillons la marche à suivre officielle lorsque Microsoft Defender signale à tort une application Windows développée en interne comme malveillante : le...
-
Veille, mise en veille prolongée, Modern Standby et applications longue durée — concevoir pour éviter « ça s'était arrêté pendant la nuit »
Pourquoi une application Windows censée tourner en continu se retrouve « arrêtée quand on la consulte le matin » : différences entre la veille S3 classique, ...
-
Les applications métier fonctionnent-elles sous Windows on Arm ? — La réalité de l'émulation x64 (Prism) et des DLL/COM natifs
Une réponse, destinée aux développeurs et aux services informatiques, à la question « notre application métier fonctionnera-t-elle sous Windows on Arm ? ». C...
-
Quand vous héritez d'un système sans code source ni documentation — Procédure pratique pour l'exploiter et le maintenir sans interruption
Ce guide présente la procédure pratique pour démarrer l'exploitation et la maintenance d'un système métier sans code source ni cahier des charges. Il couvre ...
-
MAX_PATH et les pièges des chemins et noms de fichiers Windows — la limite de 260 caractères, les noms réservés, les points de fin et la casse
Un tour d'horizon des limites de chemins et de noms de fichiers à l'origine du classique bug « fichier introuvable ». Cet article couvre le détail de MAX_PAT...
-
Les pièges des lecteurs réseau et des chemins UNC — Travailler avec un serveur de fichiers (dossier partagé) depuis une application métier
Cet article recense les problèmes classiques rencontrés lorsqu'une application métier écrit dans un dossier partagé ou le surveille : pourquoi une lettre de ...
-
Icônes de la zone de notification et notifications toast dans les applications Windows — les pièges de NotifyIcon et comment choisir la bonne AppNotification
Un guide pratique pour maintenir une application Windows métier résidente dans la zone de notification (system tray) et avertir l'utilisateur par des notific...
-
Jusqu'à quand les applications VB6 continueront-elles de fonctionner ? — état du support du runtime et démarche concrète vers une migration .NET
Jusqu'à quand les applications VB6 continueront-elles de fonctionner ? Cet article clarifie l'asymétrie entre la politique de support du runtime VB6 (toujour...
-
Ère japonaise, jours fériés et dates de clôture dans les applications métier — conception résiliente aux changements d'ère, JapaneseCalendar et calcul des jours ouvrés en pratique
Afficher « Reiwa 8 » sur un bordereau, calculer des jours ouvrés en excluant les jours fériés, régler un paiement à la fin du mois suivant une clôture le 20 ...
-
Guide pratique de Process Monitor (ProcMon) — identifier en 10 minutes un « paramètre non pris en compte » ou un ACCESS DENIED
« J'ai corrigé le fichier de configuration, mais rien ne change » ; « ça marchait hier, mais ça ne démarre plus aujourd'hui » — avant de toucher au code sour...
-
Migrer une application Windows vers le Web : les cas à éviter — tableau de décision et la solution réaliste du « fractionnement »
Les demandes de migration d'applications Windows internes vers le Web se multiplient, mais pour les applications reposant sur l'intégration d'appareils, le t...
-
Internationalisation des applications WinForms/WPF : resx, assemblies satellites et changement de culture en pratique
Un guide pratique pour internationaliser une application de bureau Windows : la différence entre CurrentCulture et CurrentUICulture, le fonctionnement des re...
-
Le CSV n'est pas « juste du texte » ── La pratique du CSV dans les applications métier C# (encodage des caractères, compatibilité Excel, protection contre l'injection)
Ce guide fait le point, du point de vue de la pratique, sur les incidents classiques des entrées/sorties CSV dans les applications métier - analyse maison vi...
-
N'enfermez pas HttpClient dans un using — la communication HTTP en C# pour applications métier (modèles de création, délais d'expiration, tentatives)
Instancier HttpClient à chaque appel avec using épuise les sockets, et le rendre static l'empêche de suivre les changements de DNS — cet article détaille ces...
-
Identifier précisément les lenteurs avec PerfView et dotnet-trace — Introduction pratique à l'analyse des performances .NET
Lorsqu'une application métier est « lente », « sature le processeur » ou « se fige parfois », quel outil utiliser et que faut-il observer ? Cet article expli...
-
Introduction au journal des événements Windows et à ETW — placer les journaux de votre application métier sur les mécanismes standard de l'OS
Votre application métier Windows repose-t-elle seulement sur les journaux de fichiers ? Le journal des événements et ETW sont visibles à une autre couche : c...
-
Au-delà de appsettings.json — guide pratique de la gestion de configuration dans les applications métier Windows (environnements, secrets et emplacements d'écriture)
Guide pratique de la configuration des applications métier Windows : superposition de appsettings.json, choix entre IConfiguration et IOptions/IOptionsSnapsh...
-
Impression et sortie PDF dans les applications métier Windows — choisir entre System.Drawing.Printing, WPF et bibliothèques de rapports
Organise l'impression WinForms avec PrintDocument, l'impression WPF FlowDocument/FixedDocument et les options de sortie PDF dans une table de décision par be...
-
Prolonger la durée de vie et migrer les applications métier VB6 / Access — Tableau de décision entre conserver, envelopper et remplacer
Comment décider de conserver telle quelle une application VB6 ou une application métier Microsoft Access, de prolonger sa durée de vie en n'enveloppant qu'un...
-
Empêcher les lancements multiples d'une application Windows — Mutex nommé et activation de la fenêtre existante lors d'un second lancement
Cet article détaille comment implémenter la prévention des lancements multiples d'une application Windows métier à l'aide d'un Mutex nommé. Il explique le pi...
-
Appeler les API Win32 en toute sécurité depuis C# — Guide pratique de P/Invoke (DllImport / LibraryImport / CsWin32)
Un tour d'horizon pratique des points essentiels pour appeler des API Win32 depuis C# via P/Invoke : différences entre DllImport et LibraryImport, génération...
-
Externalisation et développement sur mesure d'une application Windows : ce qu'il faut clarifier avant de se lancer
Avant de confier l'externalisation ou le développement sur mesure d'une application Windows, voici les points à clarifier : révision d'un logiciel existant, ...
-
Pourquoi Windows est devenu ce qu'il est aujourd'hui : l'évolution de Windows vue par un développeur
Un panorama des évolutions de Windows 95 à Windows 11, non pas comme une simple frise visuelle, mais du point de vue d'un développeur d'applications Windows ...
-
L'étrange amour d'un développeur, ou : comment j'ai appris à ne plus m'en faire et à aimer Windows
Windows est contraignant. Mais cette contrainte est aussi celle d'un système d'exploitation qui porte depuis des décennies le poids d'activités professionnel...
-
Pourquoi Windows affiche « Windows a protégé votre PC »
Pourquoi le message SmartScreen apparaît lors de la distribution d'une application Windows : signature de code, certificats EV/OV, Azure Artifact Signing, MS...
-
Pièges d'enregistrement et de bitness dans le développement COM/OCX/ActiveX
COM, OCX et ActiveX : nous passons en revue, d'un point de vue pratique, les pièges liés au 32 bits/64 bits, à Visual Studio 2022, à regsvr32/Regasm, aux dro...
-
Qu'est-ce que ClickOnce ? - Fonctionnement, mises à jour, et les cas où c'est adapté ou non, du point de vue de la pratique
Présentation de ClickOnce, la technologie de déploiement utilisée pour les applications de bureau .NET sous Windows - manifestes, mises à jour, cache, signat...
-
Accélérer la validation des applications avec Windows Sandbox
Comment utiliser Windows Sandbox pour isoler les problèmes de privilèges administrateur, reproduire des anomalies dans un environnement propre et simuler des...
-
Conception de la sécurité des mises à jour automatiques - Pourquoi HTTPS seul ne suffit pas
Nous traitons la mise à jour automatique comme une frontière de confiance, et passons en revue, d'un point de vue pratique, les métadonnées signées, la vérif...
-
Exigences minimales pour un logger maison, avec une checklist de tests d'intégration
Pour rendre fiables les journaux de diagnostic d'une application maison, nous détaillons le format UTF-8 JSON Lines, les champs obligatoires, le flush, la ro...
-
Où tracer la frontière entre tests unitaires et tests d'intégration
Nous clarifions la frontière entre tests unitaires et tests d'intégration selon les axes de la logique pure, des formats, du câblage, des différences d'envir...
-
Comment fonctionne la résolution des noms de DLL sous Windows - Ordre de recherche et SxS
Où LoadLibrary va-t-il réellement chercher ? Parcourez l'ordre de recherche des DLL sous Windows, les Known DLLs, les API sets et les manifestes SxS, ainsi q...
-
Quand Windows exige-t-il réellement des privilèges administrateur - UAC, zones protégées et comment le déterminer par conception
Un panorama pratique des situations où Windows exige des privilèges administrateur, du point de vue de l'UAC, des zones protégées, des services, des pilotes ...
-
Qu'est-ce que VBA ? - Ses contraintes, son avenir, quand le remplacer et des schémas de migration réalistes
Cet article présente les bases et les limites de VBA, son avenir, les cas où il faut le remplacer, et une démarche réaliste pour migrer progressivement les m...
-
Pièges des applications de communication série — de la reconnexion à la conception des journaux
Un tour d'horizon pratique des pièges à éviter dans les applications de communication série pour l'intégration d'équipements et le contrôle d'instruments : t...
-
Concevoir la conservation des journaux et des dumps lors du crash d'une application Windows
Comment combiner journalisation habituelle, marqueur de crash final, WER LocalDumps et processus de surveillance pour conserver, même quand une application W...
-
Conception UX des applications Windows - Priorités selon l'environnement d'utilisation
Ce qu'il faut prioriser dans la conception UX d'une application Windows, organisé sous forme de tableau de décision couvrant B2C vs B2B, les méthodes de sais...
-
Comment choisir entre WinForms, WPF et WinUI - Tableau de décision pratique
Nous examinons comment choisir entre WinForms, WPF et WinUI, du point de vue du nouveau développement, des actifs existants, de la distribution, de l'express...
-
Pièges de la mémoire partagée et bonnes pratiques concrètes
Nous passons en revue les pièges de la mémoire partagée en usage réel, ainsi que la conception qui réduit le taux d'incidents : synchronisation, visibilité, ...
-
Introduction aux profils utilisateur Windows - AppData et NTUSER.DAT
Les bases du profil utilisateur Windows, l'usage d'AppData, les profils local, itinérant, obligatoire (Mandatory) et temporaire (Temporary), la redirection d...
-
Qu'est-ce que Reg-Free COM - Utiliser COM sans enregistrement
Un panorama des bases de Reg-Free COM, du rôle des contextes d'activation et des manifestes, de ses avantages, de ses limites, et des critères de décision po...
-
Comment créer une sortie de rapports Excel - COM / Open XML / Modèles
La conception d'une sortie de rapports Excel change considérablement selon que l'on automatise Excel lui-même, que l'on génère directement des fichiers xlsx,...
-
Comment incruster une image et du texte dans les images d'une vidéo MP4 avec Media Foundation
Comment incruster une image et du texte dans chaque image d'une vidéo MP4 avec Media Foundation pour produire un nouveau MP4, en structurant la réflexion aut...
-
Introduction à la collecte des dumps de crash Windows - WER/ProcDump/WinDbg
Pour traquer les crashs d'applications Windows difficiles à reproduire, nous passons en revue l'utilisation de WER LocalDumps, ProcDump, MiniDumpWriteDump et...
-
Pourquoi préférer l'attente sur événement à Sleep(1) sous Windows
Sous Windows, la précision des attentes courtes avec délai (timed wait) est limitée par la granularité de l'horloge système et par l'ordonnancement. Si vous ...
-
Un tableau de décision pour choisir entre arrêt et poursuite après une exception inattendue
Lorsqu'une exception inattendue survient, faut-il arrêter l'application ou la laisser continuer ? Cet article organise la décision sous l'angle de la corrupt...
-
Comment isoler concrètement, dans une application Windows, « uniquement les opérations nécessitant des privilèges administrateur »
Comment concevoir une application Windows qui garde son UI en asInvoker tout en isolant dans un helper EXE les seuls traitements nécessitant des privilèges a...
-
Stocker les secrets des applications Windows - Éviter les configurations en clair avec DPAPI
Pour éviter de stocker en clair, dans un fichier de configuration, les informations de connexion et les jetons API d'une application Windows, cet article pré...
-
Liste de vérification avant de migrer de .NET Framework vers .NET
Liste de vérification pratique à passer en revue avant de migrer de .NET Framework vers .NET : type de projet, technologies non prises en charge, dépendances...
-
Comment convertir du YUV en RGB avec Media Foundation
Comment convertir des trames YUV en RGB avec Media Foundation : la conversion automatique du Source Reader vers RGB32, ou la conversion manuelle de NV12/YUY2...
-
Guide des paramètres avancés de la carte réseau (NIC) sous Windows - RSS/LSO/EEE/Wake on LAN
Un guide pratique des paramètres avancés de la carte réseau (NIC) sous Windows. Nous expliquons ce qui change réellement lorsque l'on modifie Jumbo Packet, S...
-
Extraire une image fixe d'un MP4 à un instant précis avec Media Foundation
Comment récupérer, avec le Source Reader, la frame la plus proche d'un instant donné dans un MP4, corriger le stride et l'octet alpha du RGB32, puis l'enregi...
-
Liste de contrôle minimale de sécurité pour le développement d'applications Windows
Pour les applications métier WPF / WinForms / WinUI / C++ / C#, cet article organise sous forme de liste de contrôle les bases concernant les privilèges, la ...
-
Qu'est-ce que COM / ActiveX / OCX ? - Différences et relations expliquées ensemble
Un guide pratique sur ce qu'est COM, ce qu'est ActiveX et ce qu'est OCX - leurs différences et relations, le lien avec OLE, où on les rencontre, et comment l...
-
Appeler une DLL C# Native AOT depuis C/C++
Nous faisons le point sur la publication d'une bibliothèque de classes C# en DLL native avec Native AOT, et sur l'appel depuis C/C++ des points d'entrée marq...
-
Pourquoi utiliser le Generic Host .NET et BackgroundService dans une application de bureau
Comment utiliser le Generic Host et BackgroundService pour organiser le démarrage, le traitement périodique, l'arrêt, la journalisation, la configuration et ...
-
Comment traiter ActiveX / OCX aujourd'hui - Tableau de décision conserver / envelopper / remplacer
Lorsque vous rencontrez ActiveX / OCX, comment choisir entre conserver, envelopper et remplacer, en couvrant le 32 bits / 64 bits, l'enregistrement, les dépe...
-
Construire un socle de test des cas anormaux Windows avec Application Verifier
Ce qu'est Application Verifier, expliqué avec la construction d'un socle de test des cas anormaux Windows à l'aide de Handles, Heaps, Low Resource Simulation...
-
Enquête sur les plantages après un fonctionnement de longue durée d'une caméra industrielle - La fuite de handles (partie 1)
Comment analyser un plantage soudain d'une application Windows après un fonctionnement de longue durée : à travers le cas d'une application de pilotage de ca...
-
Pourquoi les retransmissions TCP bloquent la communication d'une caméra industrielle, et comment isoler la cause
Comment isoler la cause quand la communication d'une caméra industrielle se bloque pendant plusieurs secondes à cause de retransmissions TCP : paquets perdus...
-
Guide pratique de FileSystemWatcher - Gérer les événements manqués et les doublons
Nous faisons le point sur l'utilisation de FileSystemWatcher et ses pièges : événements manqués, notifications en double, pièges de la détection d'achèvement...
-
Introduction à Media Foundation - Comprendre l'API à travers le prisme COM
Nous expliquons ce qu'est Media Foundation, ainsi que le vocabulaire de base des API multimédias Windows - COM, HRESULT, IMFSourceReader, MFT - dans l'ordre ...
-
Guide pratique pour se rapprocher autant que possible du temps réel souple sur un Windows ordinaire
Nous organisons la façon de stabiliser le traitement périodique et à faible latence sur un Windows ordinaire, en abordant la résolution des minuteurs, les pr...
-
Les bases du contrôle d'exclusion pour l'intégration par fichiers - bonnes pratiques de verrouillage de fichiers et de claim atomique
Nous faisons le point sur le contrôle d'exclusion pour l'intégration par fichiers sous l'angle du verrouillage de fichiers, du claim atomique, du couple temp...
-
Appeler une DLL native depuis C# : wrapper C++/CLI vs P/Invoke
Lorsqu'on utilise une DLL native depuis C#, cet article distingue les cas où P/Invoke suffit de ceux où un wrapper C++/CLI est pertinent, selon des critères ...
-
Les fondamentaux STA/MTA de COM - modèles de threads et comment éviter les blocages
Pourquoi les threads UI sont en STA, comment fonctionne le marshaling entre Apartments, et pourquoi les appels COM se bloquent sans boucle de messages - avec...
-
Un exemple concret de pont COM pour appeler une DLL 64 bits depuis une application 32 bits
Lorsqu'une application 32 bits ne peut pas appeler directement une DLL 64 bits, un pont COM permet de relier les deux. Nous détaillons la démarche, avec les ...
-
Qu'est-ce que COM ? - Pourquoi la conception de COM sous Windows est encore magnifique
Nous expliquons ce qu'est COM du point de vue de la conception des interfaces de Windows COM, d'IUnknown, des GUID et de la compatibilité binaire, et pourquo...