Voici une petite mise =E0 jour de la FAQ. J'ai rajout=E9 une =
bibliographie
faite conjointement par plusieurs contributeurs et mise en forme
par AMcD. Qu'ils en soient remerci=E9s.
En vous remerciant. Bonne lecture et bonne programmation.
Doms.
-------------------------------
Le pr=E9sent document est un brouillon de d=E9but 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=E9sum=E9 des questions les =
plus
fr=E9quemment pos=E9es sur ce forum, ainsi que les r=E9ponses donn=E9es =
sur ce m=EAme
forum.
J'ai mis quelques questions dont je n'ai pas la r=E9ponse sous la main. =
Je
chercherai (un jour, peut-=EAtre !), mais si quelqu'un veut m'aider, il =
est
le bienvenu ;-)
Je ne garantis pas la validit=E9 des r=E9ponses fournies ; je me suis =
content=E9
de recopier des r=E9ponses trouv=E9es sur ce forum. Certaines peuvent =
=EAtre
fausses ou obsol=E8tes.
Pr=E9ambule : MSDN / WIN32.HLP
Pour pouvoir programmer sous Windows, il me para=EEt indispensable =
d'avoir
une r=E9f=E9rence exhaustive de l'API Win32 (Windows 32 bits). Le moyen
habituel d'obtenir cette r=E9f=E9rence est de t=E9l=E9charger 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 =E9galement 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.
=E9diteur : "Waite Group Press"
Dans le pr=E9sent document, la r=E9ponse =E0 beaucoup de questions =
consiste en
un simple nom de fonction (exemple : "RasDial"). C'est =E0 chacun de =
faire
l'effort d'aller voir dans la documentation comment se servir de la
fonction cit=E9e.
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 =E7a se discute)
3/ Quelqu'un l'a fait =E0 ma place : http://LaFaqMfc.com/ :-)
PS : un autre bon site : http://www.codeguru.com/
Sommaire :
[1] Questions d'ordre g=E9n=E9ral
[2] Multim=E9dia : son, vid=E9o, 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=E9n=E9ral
* KB Q123456 : que es aquo ?
C'est une r=E9f=E9rence =E0 la Knowledge Base de Microsoft.
Histoire de faire court : <http://www.edulang.com/kb.php>,
taper le num=E9ro de la question dans la bo=EEte d'=E9dition.
* Ouvrages de r=E9f=E9rence
Cf la liste =E0 Arnold : <http://minilien.com/?sP7rTO1nVT> ou
<//groups.google.com/groups?as_umsgid=3D3d4f1b42$0$11805$7a628cd7@news.cl=
">http://groups.google.com/groups?as_umsgid=3D3d4f1b42$0$1180
5$7a628cd7@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=E9dia : son, vid=E9o, 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=FBr pour le contraire)
http://support.microsoft.com/support/kb/articles/Q168/1/80.ASP
* Lire un son : sndPlaySound
* Lire/enregistrer un son, une vid=E9o, ... : le plus simple est =
d'utiliser
les fonctions MCI. Cela qui veut se lancer l=E0-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
=E0 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=E8mes de connexion (=E0 internet)
Pour se connecter : RasDial
Pour savoir si on est connect=E9 : RasEnumConnections
Petite pr=E9cision d'apr=E8s hyronn@club-internet.fr :
RasEnumConnections doit conna=EEtre la taille (stock=E9 dans dwSize) de =
la
structure RASCONN pass=E9e comme argument... Logiquement, en C(++), on
utiliserait
RASCONN rasConn;
rasConn.dwSize=3D sizeof (RASCONN);
Seulement, cette op=E9ration d=E9clenche une erreur "Invalid Buffer" =
sous
Windows95/98. Il faut donc mettre
const int RASCONN_dwSize=3D 412;
rasConn.dwSize=3D RASCONN_dwSize;
et tout fonctionne. Il semblerait que cette erreur ne soit pr=E9sente =
que sous
Win95/98. L'utilisation de cette technique n'alt=E8re en rien le
fonctionnement du programme sous WinNT/2000
Pour =EAtre averti d'une connexion/d=E9connexion : =
RasConnectionNotification
De mani=E8re g=E9n=E9rale, les fonctions de l'API Win32 se rapportant =
=E0 la
connexion par modem commencent par "Ras".
Pour se d=E9connecter [code fourni par "R=E9gent" <regent@yahoo.fr>] :
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 =3D 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=E8s r=E9cente [27/03/1997] est disponible =E0 :
http://members.xoom.com/lelez/Tapi.zip
Pour la t=E9l=E9copie, voir aussi
http://msdn.microsoft.com/library/psdk/fax/mfaxportal_88x1.htm
[4] Ecran
* Conna=EEtre la taille de l'=E9cran :
GetSystemMetrics (voir aussi le message WM_DISPLAYCHANGE)
* Faire des fen=EAtres non rectangulaires : SetWindowRgn.
NB : C'est sans doute faisable directement avec les MFC ou les OWL, mais
c'est beaucoup plus d=E9licat.
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=F4ne dans la "traybar" (en bas =E0 droite =E0 c=F4t=E9 =
de l'horloge)
Shell_NotifyIcon
* Mettre une fen=EAtre au premier plan ou =E0 l'arri=E8re-plan : =
SetWindowPos
* Afficher des JPEG : cf interface IStream (OleLoadPicture(), Render())
* Changer la r=E9solution de l'=E9cran ou enlever la barre de t=E2che
pour se mettre en plein =E9cran : http://micromeg.free.fr/HowTo.html
* Comment placer une ic=F4ne dans le systray (zone de la barre de =
t=E2che o=F9
se trouve l'heure, le volume sonore...) :
http://micromeg.free.fr/HowTo.html
* Tout sur les =E9conomiseurs d'=E9cran : http://www.wischik.com/scr/
* Comment mettre le curseur =E0 un endroit donn=E9 de l'=E9cran dans un =
programme
console ?
* Intercepter des =E9v=E9nements souris/clavier : il faut cr=E9er un =
hook local
(pour intercepter les messages =E0 l'int=E9rieur d'une application) ou =
syst=E8me
(pour intercepter tous les messages envoy=E9s =E0 toutes les =
applications).
cf SetWindowsHookEx
[R=E9ponse =E0 =E9toffer]
* Piloter un scanner : http://www.twain.org/
[6] Gestion de processus
* Comment tuer un processus en connaissant uniquement le HWND de la =
fen=EAtre
principale de l'application?
[Merci Christian Astor!]
Pour passer du hWnd au hProcess pour le killer:
- GetWindowThreadProcessId(hWnd, nProcessId);
- hProcess =3D OpenProcess( PROCESS_ALL_ACCESS, FALSE, nProcessId );
- TerminateProcess( hProcess, 99 );
- CloseHandle(hProcess);
* Comment d=E9tecter si mon application tourne d=E9j=E0 pour ne pas =
lancer une
deuxi=E8me 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=EAtre principale d'une application dont on a le
"process id" (par exemple lanc=E9e avec CreateProcess) ? Comment =
terminer une
application ?
http://support.microsoft.com/support/kb/articles/Q178/8/93.ASP
[7] Suis-je hors-sujet?
Comment cr=E9er 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
=E0 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=E9placement, ...) avec =
en
option une fen=EAtre indiquant l'avancement de l'op=E9ration.
Sinon, on peut utiliser la m=E9thode habituelle de recherche dans l'API =
Win32 :
Cr=E9ation de raccourcis (dans le menu d=E9marrer ou ailleurs) :
Utiliser les interfaces IShellLink et IPersistFile.
Un exemple de mon cru =E0 http://www.chez.com/nospam/CreationLiens.cpp
Comment trouver le nom r=E9el d'un r=E9pertoire sp=E9cial, comme le =
"menu
d=E9marrer", le r=E9pertoire 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 (=E0 la
"MESDOC~1") : GetShortPathName [API Win32]
Comment ouvrir une boite de s=E9lection de r=E9pertoire pour que
l'utilisateur puisse choisir un r=E9pertoire -- Bo=EEte de dialogue =
"choix d'un
r=E9pertoire" (SHBrowseForFolder) :
http://codeguru.earthweb.com/mfc/comments/2820.shtml
http://micromeg.free.fr/HowTo.html
Tout sur les formats de fichiers (fichiers de donn=E9es, 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=E9cutable qui s'auto-d=E9truit :
http://www.microsoft.com/msj/defaultframe.asp?page=3D/msj/0198/win320198.=
htm
[9] Base de registre
Ajouter/supprimer/modifier des cl=E9s : RegCreateKey, RegCreateKeyEx,
RegDeleteKey, RegFlushKey, RegOpenKey, RegOpenKeyEx, RegSetValue,
RegSetValueEx et toutes les fonctions de l'API commen=E7ant par Reg.
Param=E8tres de REGEDIT.EXE
<http://groups.google.com/groups?oi=3Ddjq&selm=3Dan_559631632>
[10] Divers
Cr=E9ation d'un AUTORUN.INF :
<http://groups.google.com/groups?oi=3Ddjq&selm=3Dan_612302829>
En gros, pour lancer un ex=E9cutable, la structure de l'AUTORUN.INF est
celle-ci :
[AUTORUN]
run=3Dmachin.exe
icon=3Dicone.ico (facultatif)
Pour lancer autre chose, remplacer run=3Dmachin.exe par
shellexecute=3Dmachin.truc
Acc=E9der au port s=E9rie : CreateFile [API Win32]
cf aussi http://msdn.microsoft.com/library/techart/msdn_serial.htm
Et enfin (roulement de tambour...) la "pol=E9mique" de
fr.comp.os.ms-windows.programmation : peut-on programmer =
_s=E9rieusement_
sous Windows sans savoir lire l'anglais?
R=E9ponse la plus objective que j'aie r=E9ussi =E0 trouver : Rien =
n'indique que
c'est impossible, mais =E0 ma connaissance personne n'a encore r=E9ussi. =
La
question est donc ouverte ;-)
[11] Bibliographie
AMcD a =E9crit :
Bon, voici une petite bibliographie actualis=E9e 2005 pour le codeur =
Windows
Win32/Net. Merci =E0 Aur=E9lien, Arnaud, Olivier, etc.
[Programmation G=E9n=E9rale]
- Programming Windows, The Definitive Guide to the Win 32 API (5th Ed), =
par
Charles Petzold (1998)
[Programmation Avanc=E9e]
- 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=E8me]
- 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=E9curit=E9, 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=E9seau]
- 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=E9s que des ouvrages encore trouvables.
- Certains existent en fran=E7ais.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Rakotomandimby Mihamina
Dominique Vaufreydaz wrote:
-------- 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.
[...]
Bonjour, c'est mon newsreader qui est mal réglé ou bien il y a un problème avec les caractères accentués?
-- Miroir de logiciels libres http://www.etud-orleans.fr
Dominique Vaufreydaz wrote:
-------- 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.
[...]
Bonjour, c'est mon newsreader qui est mal réglé ou bien il y a un
problème avec les caractères accentués?
--
Miroir de logiciels libres http://www.etud-orleans.fr
-------- 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.
[...]
Bonjour, c'est mon newsreader qui est mal réglé ou bien il y a un problème avec les caractères accentués?
-- Miroir de logiciels libres http://www.etud-orleans.fr
Yalbrieux
Bonjour,
Je confirme qu'il y a un problème avec les accentuées.
Yves
Bonjour,
Je confirme qu'il y a un problème avec les accentuées.