Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Conseils d'utilisation] fr.comp.os.ms-windows.programmation

1 view
Skip to first unread message

L'equipe fr-chartes

unread,
Dec 2, 2021, 1:27:37 AM12/2/21
to
Archive-Name: fr/chartes/comp.os.ms-windows.programmation

Version : 18/07/2006
Note: ces conseils d'utilisation, auparavant maintenus par Xavier Humbert
et Corinne Villemin Gacon (merci à eux) ont été mis à jour par
fr-chartes. Si vous désirez en devenir le mainteneur, merci de contacter
fr-chartes @ fr-chartes (point) org.


==========================================================================
== CONSEILS D'UTILISATION DU GROUPE fr.comp.os.ms-windows.programmation ==
==========================================================================


---------------------------------------------------------
Nom : fr.comp.os.ms-windows.programmation
Statut : Non modéré
Description : Programmation sous MS-Windows
Date de création : 22/08/1997 (*)
---------------------------------------------------------

1 - Charte du groupe :
----------------------

Les articles postés dans le groupe devraient remplir les conditions
suivantes :

- être spécifiques à l'environnement Microsoft Windows.
- traiter de questions relatives à la programmation, entendue au
sens large du terme.

Les sujets peuvent porter : sur un langage particulier (C, C+
Pascal, Java, etc), sur les outils de développement utilisés, sur
les "frameworks" (Microsoft MFC, Borland OWL,...), sur les conditions
de travail des développeurs (documentation, rapports avec Microsoft
et les éditeurs, etc...), et tout autre sujet lié à la mise en oeuvre
d'un développement logiciel sur Microsoft Windows.

Le groupe s'adresse aux programmeurs de tous niveaux, du débutant au
programmeur confirmé.

D'autre part, il est rappelé que ce forum est
francophone, que l'usage exclusif de la langue anglaise est considéré
comme inconvenant. Cependant un texte, par exemple en provenance de
Microsoft pourra être cité, à condition d'être accompagné d'un résumé
en français.


2 - Conseils d'utilisation :
----------------------------

2.1 - Rédaction des articles :

Dans la mesure où existent un groupe généraliste sur Microsoft
Windows (fr.comp.os.ms-windows) et un groupe concernant les serveurs
tournant sous ces systèmes (fr.comp.os.ms-windows.serveurs), vous
pouvez y effectuer un postage croisé (crosspost) dans la mesure où
votre message peut avoir un rapport avec ces aspects, mais le suivi
(champ Followup-To de votre lecteur de news) devra pointer vers
fr.comp.os.ms-windows.programmation.

De la même façon, on a observé de façon sporadique, des
postages croisés avec les groupes microsoft.*, sans suivi-à
(Followup-To:) sur le groupe fr.comp.os.ms-windows.programmation.

2.2 - Erreurs fréquemment commises :

La hiérarchie fr.* préconise, à l'exception de tout autre encodage,
le texte ASCII, en 8 bits, ISO-8859-1 ou 8859-15 (dit aussi Latin).
En particulier, il est fortement déconseillé de poster en HTML, en
"Quoted-Printable" ou en MIME/multipart. On évitera également
d'ajouter des "vcards".

Reportez vous à la documentation de votre logiciel de news pour le
réglage de ces options.

Il est inutile de préciser que les $$$, !!!SEX!!!, et autres "spams"
sont fortement interdits, seront de toutes façons annulés, et que
leurs auteurs seront méprisés.

2.3 - Une précision utile :

Si un problème vous semble être lié à votre environnement matériel,
n'hésitez pas à le décrire très précisément : modèle d'UC, processeur,
fréquence, disques IDE ou SCSI (nombre, modèle de la carte SCSI),
cartes son, etc.

3 - Conclusion :
----------------

Pour obtenir plus de renseignements sur les "Conseils d'utilisation",
vous pouvez vous reporter au message intitulé "A propos des Conseils
d'utilisation" posté dans fr.usenet.reponses et fr.bienvenue.
Pour toutes autres informations et/ou pour débuter sur Usenet, vous
devriez consulter ces deux groupes et visiter le site web qui a été
mis en place à <http://www.usenet-fr.net/> .

Nous espérons que ces informations et conseils contribueront à la
qualité des échanges dans les forums de discussion, dans l'intérêt
et pour le plaisir de tous les lecteurs et auteurs.

--

La présente publication des documents de fr.usenet.reponses fait suite à
la panne du robot MaintFAQ. Ce document n'a pas été mis à jour depuis.
Si vous souhaitez maintenir ce document, contactez-moi à jo...@matabio.net.

Dominique Vaufreydaz

unread,
Dec 2, 2021, 1:27:57 AM12/2/21
to
Archive-Name: fr/comp/os/faq-winprog

-------- Préambule ------------

Voici une petite mise à jour de la FAQ. J'ai rajouté une bibliographie
faite conjointement par plusieurs contributeurs et mise en forme
par AMcD. Qu'ils en soient remerciés.

En vous remerciant. Bonne lecture et bonne programmation.

Doms.
-------------------------------


Le présent document est un brouillon de début de FAQ pour le forum
"fr.comp.os.ms-windows.programmation". Il ne s'agit pas d'une traduction
des FAQ de forums anglophones, mais d'un résumé des questions les plus
fréquemment posées sur ce forum, ainsi que les réponses données sur ce même
forum.
J'ai mis quelques questions dont je n'ai pas la réponse sous la main. Je
chercherai (un jour, peut-être !), mais si quelqu'un veut m'aider, il est
le bienvenu ;-)
Je ne garantis pas la validité des réponses fournies ; je me suis contenté
de recopier des réponses trouvées sur ce forum. Certaines peuvent être
fausses ou obsolètes.


Préambule : MSDN / WIN32.HLP

Pour pouvoir programmer sous Windows, il me paraît indispensable d'avoir
une référence exhaustive de l'API Win32 (Windows 32 bits). Le moyen
habituel d'obtenir cette référence est de télécharger le fichier WIN32.HLP
(s'il n'est pas fourni avec votre compilateur), ou de vous procurer le MSDN
(Microsoft Development Network) sur CD-ROM ; consultable également en ligne
: http://msdn.microsoft.com .

WIN32.HLP : http://www.cs.virginia.edu/~lcc-win32/
Sous forme de .CHI et .CHM :
ftp://ftp.microsoft.com/developr/PlatformSDK/jan2000/common/help/

Il existe aussi "WindowsNT Win32 API Super Bible",
auteur : Richard J. Simon.
éditeur : "Waite Group Press"

Dans le présent document, la réponse à beaucoup de questions consiste en
un simple nom de fonction (exemple : "RasDial"). C'est à chacun de faire
l'effort d'aller voir dans la documentation comment se servir de la
fonction citée.

Dernier point : je ne parlerai pas ici des MFC (Microsoft Foundation
Class), et ce, pour trois raisons :
1/ Je n'y connais rien
2/ C'est limite hors-sujet AMHA (mais ça se discute)
3/ Quelqu'un l'a fait à ma place : http://LaFaqMfc.com/ :-)

PS : un autre bon site : http://www.codeguru.com/



Sommaire :

[1] Questions d'ordre général
[2] Multimédia : son, vidéo, lecteur de CD
[3] Modem / internet
[4] Ecran et affichages
[5] Clavier / souris / scanner
[6] Gestion des processus
[7] Suis-je hors-sujet?
[8] Fichiers : gestion, formats
[9] Base de registre
[10] Divers
[11] Bibliographie


[1] Questions d'ordre général

* KB Q123456 : que es aquo ?

C'est une référence à la Knowledge Base de Microsoft.
Histoire de faire court : <http://www.edulang.com/kb.php>,
taper le numéro de la question dans la boîte d'édition.

* Ouvrages de référence
Cf la liste à Arnold : <http://minilien.com/?sP7rTO1nVT> ou
<//groups.google.com/groups?as_umsgid=3d4f1b42$0$11805$7a62...@news.cl">http://groups.google.com/groups?as_umsgid=3d4f1b42$0$11805$7a62...@news.cl
ub-internet.fr>

* Quel langage/compilateur choisir?

* Compilateurs C++ gratuits

LCC-Win32 : http://www.cs.virginia.edu/~lcc-win32/
Borland C++ 5.5 : http://www.borland.fr/download/compilateurs/
[voir aussi
http://www.geocities.com/SiliconValley/Campus/5642/owlnext.html ]
Dev-C++ 4 : http://www.bloodshed.net/devcpp.html

[2] Multimédia : son, vidéo, lecteur de CD

* Ouvrir/fermer le tiroir du lecteur de CD :

DeviceIOControl(...,IOCTL_STORAGE_EJECT_MEDIA,.....)
mciSendString("set cdaudio door open", lpszReturn, sizeof(lpszReturn),
NULL); (closed bien sûr pour le contraire)
http://support.microsoft.com/support/kb/articles/Q168/1/80.ASP

* Lire un son : sndPlaySound

* Lire/enregistrer un son, une vidéo, ... : le plus simple est d'utiliser
les fonctions MCI. Cela qui veut se lancer là-dedans doit commencer par
lire le fichier MMEDIA.HLP [Multimedia API Reference], normalement fourni
avec votre compilateur. Sinon, une version datant du 25/3/97 est disponible
à http://members.xoom.com/lelez/Mmedia.zip

[3] Modem / internet

* Envoi d'e-mails :
Utiliser MAPI (ou Simple MAPI). Cf MAPI.HLP ou la MSDN
Voir aussi Blat : http://www.interlog.com/~tcharron/blat.html

* Problèmes de connexion (à internet)

Pour se connecter : RasDial
Pour savoir si on est connecté : RasEnumConnections

Petite précision d'après hyr...@club-internet.fr :

RasEnumConnections doit connaître la taille (stocké dans dwSize) de la
structure RASCONN passée comme argument... Logiquement, en C(++), on
utiliserait
RASCONN rasConn;
rasConn.dwSize= sizeof (RASCONN);
Seulement, cette opération déclenche une erreur "Invalid Buffer" sous
Windows95/98. Il faut donc mettre
const int RASCONN_dwSize= 412;
rasConn.dwSize= RASCONN_dwSize;
et tout fonctionne. Il semblerait que cette erreur ne soit présente que sous
Win95/98. L'utilisation de cette technique n'altère en rien le
fonctionnement du programme sous WinNT/2000


Pour être averti d'une connexion/déconnexion : RasConnectionNotification
De manière générale, les fonctions de l'API Win32 se rapportant à la
connexion par modem commencent par "Ras".

Pour se déconnecter [code fourni par "Régent" <reg...@yahoo.fr>] :

en C++
---------
#include <ras.h>

VOID Disconnect ()
{
RASCONN rc;
DWORD cConnections;
rc.dwSize = sizeof (rc);
RasEnumConnections (&rc, &rc.dwSize, &cConnections);
RasHangUp (rc.hrasconn);
}

en VB :
---------

Type RASCONN
dwsize As Long
hRascon As Long
szentryname As String * 256
szdevicetype As String * 16
szdevicename As String * 32
End Type

Declare Function RasEnumConnections Lib "RasApi32.dll" Alias
"RasEnumConnectionsA" (lpRasCon As Any, lpcb As Long, lpcConnection As Long)
As Long
Declare Function RasHangup Lib "RasApi32.dll" Alias "RasHangUpA" (ByVal
hRascon As Long) As Long

Sub Disconnect ()
Dim RC As RASCONN
RC.dwsize = Len(RC) + 100
RasEnumConnections RC, RC.dwsize, 0&
RasHangup RC.hRascon
End Sub


* Gestion du modem hors internet :

Il faut utiliser TAPI (Telephony Application Programming Interface) - cf
TAPI.HLP. Si ce fichier n'est pas fourni avec votre compilateur, une copie
pas très récente [27/03/1997] est disponible à :
http://members.xoom.com/lelez/Tapi.zip

Pour la télécopie, voir aussi
http://msdn.microsoft.com/library/psdk/fax/mfaxportal_88x1.htm


[4] Ecran

* Connaître la taille de l'écran :

GetSystemMetrics (voir aussi le message WM_DISPLAYCHANGE)

* Faire des fenêtres non rectangulaires : SetWindowRgn.
NB : C'est sans doute faisable directement avec les MFC ou les OWL, mais
c'est beaucoup plus délicat.
Pour les fenetres avec des bordures et des couleurs speciales il faut
traiter les messages Non Client WM_NC*.
voir aussi http://micromeg.free.fr/HowTo.html

* Mettre une icône dans la "traybar" (en bas à droite à côté de l'horloge)
Shell_NotifyIcon

* Mettre une fenêtre au premier plan ou à l'arrière-plan : SetWindowPos

* Afficher des JPEG : cf interface IStream (OleLoadPicture(), Render())

* Changer la résolution de l'écran ou enlever la barre de tâche
pour se mettre en plein écran : http://micromeg.free.fr/HowTo.html

* Comment placer une icône dans le systray (zone de la barre de tâche où
se trouve l'heure, le volume sonore...) :
http://micromeg.free.fr/HowTo.html

* Tout sur les économiseurs d'écran : http://www.wischik.com/scr/

* Comment mettre le curseur à un endroit donné de l'écran dans un programme
console ?

void GotoXY (int X, int Y)
{
HANDLE hStdOut;
COORD coPos;
coPos.X = X; coPos.Y = Y;
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
if (hStdOut != INVALID_HANDLE_VALUE)
SetConsoleCursorPosition(hStdOut,coPos);
}

[5] Clavier/souris

* Simuler un événement souris/clavier :

mouse_event / keybd_event (API Win32)

* Intercepter des événements souris/clavier : il faut créer un hook local
(pour intercepter les messages à l'intérieur d'une application) ou système
(pour intercepter tous les messages envoyés à toutes les applications).
cf SetWindowsHookEx
[Réponse à étoffer]

* Piloter un scanner : http://www.twain.org/


[6] Gestion de processus

* Comment tuer un processus en connaissant uniquement le HWND de la fenêtre
principale de l'application?

[Merci Christian Astor!]
Pour passer du hWnd au hProcess pour le killer:
- GetWindowThreadProcessId(hWnd, nProcessId);
- hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, nProcessId );
- TerminateProcess( hProcess, 99 );
- CloseHandle(hProcess);

* Lister les processus :

CreateToolhelp32Snapshot()
Process32First()
Process32Next()
<http://groups.google.com/groups?oi=djq&selm=an_650031009>

* Comment détecter si mon application tourne déjà pour ne pas lancer une
deuxième session en Win32?
cf CreateMutex [API Win32]
http://www8.zdnet.com/pcmag/issues/1515/pcmg0084.htm
http://micromeg.free.fr/HowTo.html

Comment lancer une application et attendre qu'elle se termine?
http://micromeg.free.fr/HowTo.html

Comment retrouver la fenêtre principale d'une application dont on a le
"process id" (par exemple lancée avec CreateProcess) ? Comment terminer une
application ?
http://support.microsoft.com/support/kb/articles/Q178/8/93.ASP

[7] Suis-je hors-sujet?

Comment créer un site web? Comment faire telle ou telle chose sur un site web?

cf le forum fr.comp.infosystemes.www.auteurs

Comment faire telle ou telle chose sous Windows 95/98/2K/NT?

Si votre question ne concerne pas explicitement la programmation, elle est
hors-sujet sur ce forum.
Il y a des chances pour que les forums fr.comp.os.ms-windows.win95 et
fr.comp.os.ms-windows.winnt soient plus accueillants ; attention toutefois
à bien lire leur FAQ avant de poster.
Pour plus d'informations : fr.bienvenue ou
http://www.citeweb.net/aminaute/forums/tablefr.html



[8] Fichiers : gestion, formats

SHFileOperation fait pas mal de trucs (copie, déplacement, ...) avec en
option une fenêtre indiquant l'avancement de l'opération.
Sinon, on peut utiliser la méthode habituelle de recherche dans l'API Win32 :

français -> anglais -> API
Déplacer fichier -> Move file -> MoveFile (ou MoveFileEx)
Copier fichier -> Copy file -> CopyFile (ou CopyFileEx)
Effacer fichier -> Delete file -> DeleteFile
etc...


Création de raccourcis (dans le menu démarrer ou ailleurs) :
Utiliser les interfaces IShellLink et IPersistFile.
Un exemple de mon cru à http://www.chez.com/nospam/CreationLiens.cpp

Comment trouver le nom réel d'un répertoire spécial, comme le "menu
démarrer", le répertoire des polices...
http://micromeg.free.fr/HowTo.html
Un exemple : http://www.chez.com/nospam/CreationLiens.cpp

Comment trouver le nom court (ou "nom MS-DOS") d'un fichier (à la
"MESDOC~1") : GetShortPathName [API Win32]

Comment ouvrir une boite de sélection de répertoire pour que
l'utilisateur puisse choisir un répertoire -- Boîte de dialogue "choix d'un
répertoire" (SHBrowseForFolder) :
http://codeguru.earthweb.com/mfc/comments/2820.shtml
http://micromeg.free.fr/HowTo.html

Tout sur les formats de fichiers (fichiers de données, images, sons, etc...)
http://www.wotsit.org/
http://www.dcs.ed.ac.uk/home/mxr/gfx/
http://fileformat.virtualave.net/
Pour les fichiers "de base" (BMP, WAV, ...) voir aussi WIN32.HLP

Exécutable qui s'auto-détruit :
http://www.microsoft.com/msj/defaultframe.asp?page=/msj/0198/win320198.htm


[9] Base de registre

Ajouter/supprimer/modifier des clés : RegCreateKey, RegCreateKeyEx,
RegDeleteKey, RegFlushKey, RegOpenKey, RegOpenKeyEx, RegSetValue,
RegSetValueEx et toutes les fonctions de l'API commençant par Reg.

Paramètres de REGEDIT.EXE
<http://groups.google.com/groups?oi=djq&selm=an_559631632>


[10] Divers

Création d'un AUTORUN.INF :
<http://groups.google.com/groups?oi=djq&selm=an_612302829>

En gros, pour lancer un exécutable, la structure de l'AUTORUN.INF est
celle-ci :
[AUTORUN]
run=machin.exe
icon=icone.ico (facultatif)

Pour lancer autre chose, remplacer run=machin.exe par
shellexecute=machin.truc


Mélanger code 16 bits / 32 bits :
http://support.microsoft.com/support/kb/articles/Q155/7/63.ASP

Accéder au port série : CreateFile [API Win32]
cf aussi http://msdn.microsoft.com/library/techart/msdn_serial.htm

Et enfin (roulement de tambour...) la "polémique" de
fr.comp.os.ms-windows.programmation : peut-on programmer _sérieusement_
sous Windows sans savoir lire l'anglais?
Réponse la plus objective que j'aie réussi à trouver : Rien n'indique que
c'est impossible, mais à ma connaissance personne n'a encore réussi. La
question est donc ouverte ;-)

[11] Bibliographie

AMcD a écrit :
Bon, voici une petite bibliographie actualisée 2005 pour le codeur Windows
Win32/Net. Merci à Aurélien, Arnaud, Olivier, etc.

[Programmation Générale]

- Programming Windows, The Definitive Guide to the Win 32 API (5th Ed), par
Charles Petzold (1998)

[Programmation Avancée]

- Multithreading Applications in Win32, par Jim Beveridge (1996)
- Win32 Programming, par Brent Rector (1997)
- Multithreaded Programming with Win32, par Thuan Pham (1998)
- Programming Applications for Microsoft Windows (4th Ed), par Jeffrey
Richter (2000)

[Programmation Système]

- Undocumented Windows NT, par Prasad Dabak (1999)
- Win32 System Services, par Marshall Brain (2000)
- Windows NT/2000 Native API Reference, par Gary Nebbett (2000)
- Undocumented Windows 2000 Secrets, par Sven Schreiber (2001)
- Win32 System Programming (3rd Ed), par Jonhson Hart (2004)
- Windows Internal (4th Ed), par David Solomon et Mark Russinovich (2005)

[Sécurité, Debugging]

- Programming Windows Security, par Keith Brown (2000)
- Debugging Applications, par John Robbins (2000)
- Programming Server-Side Applications for Microsoft Windows 2000, par
Jeffrey Richter (2000)
- Writing Secure Code (2nd Ed), par Michael Howard (2002)
- Microsoft Windows Security Resource Kit, par Ben Smith (2003)
- Microsoft Windows XP Inside Out (2nd Ed), par Ed Bott (2004)

[Drivers]

- The Windows 2000 Device Driver Book, par Art Baker (1999)
- Developing Windows NT Device Drivers, par Edward Dekker (2000)
- Programming the Microsoft Windows Driver Model (2nd Ed), par Walter Oney
(2002)

[Graphisme]

- Windows Graphics Programming : Win32 GDI and DirectDraw, par Feng Yuan
(2000)
- Introduction to 3D Game Programming with DirectX 9.0, par Franl Luna
(2003)
- Graphics Programming with GDI+ & DirectX, par Alex Polyakov (2005)

[Réseau]

- Network Programming for Microsoft Windows, par Anthony Jones (1999)

[ATL, COM, COM+, DCOM]

- Essential COM, par Don Box (1997)
- Learning DCOM, par Thuan Thai (1999)
- Understanding COM+, par David Platt (1999)
- ATL Internals, par Brent Rector (1999)
- Understanding DCOM, par William Rubin (1998)

[.NET]

- Programming Microsoft .NET, par Jeff Prosise (2002)
- Applied Microsoft .NET Framework Programming, par Jeffrey Richter (2002)
- Introducing Microsoft .Net, par David Platt (2003)
- Programming .NET Components, par Juval Lowy (2003)
- Inside Microsoft Visual Studio .NET 2003, par Marc Young (2003)

[C#]

- Programming Windows with C#, par Charles Petzold (2001)
- Microsoft Visual C# .NET Language Reference, par Microsoft (2002)
- Programming C# (3rd Ed), par Jesse Liberty (2003)

Notes.

- Ne sont mentionnés que des ouvrages encore trouvables.
- Certains existent en français.



--
Document publié par MaintDoc depuis le 2008-04-07.
Responsable(s) : Dominique Vaufreydaz.
0 new messages