CRÉATION ET APPLICATION MANIFEST EN UNE SEULE LIGNE [MODULE DE CLASSE]

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 24 nov. 2005 à 19:16
Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 - 25 avril 2010 à 12:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34784-creation-et-application-manifest-en-une-seule-ligne-module-de-classe

Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 1
25 avril 2010 à 12:48
Ton test de la version de windows peut être amélioré de cette façon par exemple :

'dans les déclarations :
Private Const win95 As String = "Windows 95"
Private Const win98 As String = "Windows 98"
Private Const win2000 As String = "Windows 200"
Private Const XP As String = "XP"
Private Const Vista As String = "Vista"
Private Const win2003 As String = "Windows 2003"
Private Const Seven As String = "Seven"

Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type

'-> retourne des infos sur la plateforme système
'changé ton api avec celle-là
Private Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As Integer

'la fonction public ou privée pour récupérer la version de windows
'et préciser si c'est au moins windows XP avec AtLeastXP
Public Function GetVersionWin(Optional ByRef AtLeastXP As Boolean) As String
Dim osinfo As OSVERSIONINFO
Dim retvalue As Integer
osinfo.dwOSVersionInfoSize = 148
osinfo.szCSDVersion = Space$(128)
retvalue = GetVersionExA(osinfo)
With osinfo
Select Case .dwMajorVersion
Case 4
Select Case .dwMinorVersion Case 0: GetVersionWin win95: AtLeastXP False Case 10: GetVersionWin win98 : AtLeastXP False
End Select
Case 5
Select Case .dwMinorVersion Case 0: GetVersionWin win2000: AtLeastXP False Case 1: GetVersionWin XP: AtLeastXP True Case 2: GetVersionWin win2003: AtLeastXP True
End Select
Case 6
Select Case .dwMinorVersion Case 0: GetVersionWin Vista: AtLeastXP True Case 1: GetVersionWin Seven: AtLeastXP True
End Select Case Else: GetVersionWin "Failed": AtLeastXP False
End Select
End With
End Function

'et changer le contenus de ta fonction avec ça :
Private Function IsWindowsXP() As Boolean
[...]
Call GetVersionWin(IsWindowsXP)

Concernant ma question précédent, en attendant de trouver mieux, j'applique une astuce trouvé dans le forum : je remplace le texte des objets dont leurs couleurs ne change pas par un label coloré
Philippe734 Messages postés 308 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 juin 2015 1
25 avril 2010 à 12:14
Super source je vais enfin pouvoir me passer d'un fichier stylewindows.res

En revanche, comment faire pour que la couleur changée des checkbox, option et des frames fonctionne ? car si on les mets dans une autre couleur que celle du style de windows alors leurs couleurs ne sera pas prise en charge et sera celle du style de windows.
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
5 mars 2007 à 18:21
C'est ici que j'ai appris à mettre systématiquement une PictureBox dans chaque Frame ;)

@+
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
5 mars 2007 à 18:19
Vraiment sympa, j'avais jamais vu cette source !
Voilà quelque chose qui résoud tous mes problèmes, merci bien et bravo ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 sept. 2006 à 14:49
CheckBox, OptionButtons, et boutons doivent bénéficier de PictureBoxes
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 sept. 2006 à 14:15
Non, je n'ai pas MacAfee (n'a jamais été installé sur ce disque après le dernier formatage).

Je tourne avec mon ami Nod32 2.5 ;)
@+
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
13 sept. 2006 à 14:11
SP2... non, il a bon dos mais pas à ce point ^^
dans le doute je mettrai désormais aussi les checkbox dans des picturebox.
as-tu MacAfee? plus qu'étrange mais je viens de tomber sur un topic disant que c'est un bug en rapport avec cet anti-virus...
http://forum.pcsoft.fr/post.awp?id=92734&from=0&forum=pcsoft.fr.windev&gmt=P0100
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 sept. 2006 à 13:33
Salut, en fait je ne me rappelais plus que c'était les optionbutton qui étaient concernées.... mais c'est bien mes checkboxes qui bugent. Je viens en effet de voir que tu avais mis une PictureBox sous les Optionbutton, mais j'ai du faire de même sous les checkboxes pour que çà marche correctement.

J'ai XP Edition Famailiale SP2, et v'là un screenshot du problème (obtenu avec ton exemple) : http://www.enregistrersous.com/images/fcb4fce1d8f2996966a81808e45f726c.png

Bizarre que Microsoft ne mensionne pas ce problème avec les checkboxes.

Merci, @+ (de rien pour la note, c'est mérité ^^)
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
13 sept. 2006 à 13:01
salut,
pas de PictureBox dans l'exemple puisque la CheckBox n'en a pas besoin.
il y en a juste une pour l'OptionButton.
ce "bug connu" ne concerne que l'OptionButton. jamais eu ce problème (noiceur) avec la CheckBox et la MSDN n'en parle pas non plus...
en lançant mon exemple (compilé) tu as ce souci? testé sur XP Pro SP1, quelqu'un aurait une autre config et le même souci?
là je ne vois pas trop...

merci du comm & note ;)
++
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 sept. 2006 à 12:32
Nickel, marche très bien, super bien commenté.

Une question : les checkboxes ne marchent pas bien avec un *.manifest (contrôles tout noir). Je sais qu'il existe l'astuce de les faire contenir dans une PictureBox, mais ce n'est pas le cas dans l'exemple fourni, et le problème ne ressort pas dans le screenshot effectué.
C'est normal, tu as une autre astuce ?

Merci, 10/10, @+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 juin 2006 à 13:30
certes, j'oubliais l'execution en mode compatible...
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
18 juin 2006 à 10:47
je parle de la compatibilité de l'exe. ("executer ce programme en mode de compatibilité de : W2000").
s'il faut refaire un code derrière alors que ma classe le fait déjà avec la création du manifest (avec l'instanciation de InitCommonControls), aucun intérêt.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 juin 2006 à 08:10
compilé, ca change rien derrière....

faut appeler InitCommonControls....

qui n'a de toute facon aucun effet sous Win2K.... mia sun test de l'OS est toujours possible
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
18 juin 2006 à 05:02
un manifest compilé ne teste pas la compatibilité W2K !
j'ai pas mal cherché avant de poster cette source, personne sur CS (pas cherché ailleurs) n'a fait ni ce test de compatibilité, ni de classe/module aussi facile à intégrer.
faut pas voir le mal partout ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 juin 2006 à 22:37
le "mieux" étant de compiler le manifest dans les ressources de l'executable... quand c'est encore possible
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
17 juin 2006 à 20:10
Bon OK ! Pas de problème. Je parerai avec un raccourci.

I'm BAD ! Là par contre, le BAD de Mickael Jackson, c'est le terme qui ME convient.

Désolé et merci pour l'info.

@ +
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
17 juin 2006 à 20:06
merci ;)
beh non, pas dans system32 ni ailleurs puisque le appli.exe.manifest doit impérativement être dans le même rep que l'appli.

pas de cours :p, mais y'a toujours le forum ;)
encore merci de tes encouragements (et du 'bade' ^^)
++
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
17 juin 2006 à 19:32
Salut PCPT !

Ben comme d'hab, c'est super. Voilà comment en quelques lignes de code on retrouve ses contrôles avec son environnement Windows.

Par contre, si j'ai l'appli sur le bureau, la DLL Manifest.exe.manifest s'y trouve aussi.
T'as pas moyen de la mettre dans le System32 ? (par exemple)

En tout cas merci pour ta source. (je ne dis plus que je te bade [lol] mais le coeur y est).
Tu donnes pas des cours gratuits ?? je me doute que non mais bon..

Bon allez, à bientôt.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
10 avril 2006 à 16:01
salut,
logiquement le manifest n'est pas lié aux droits (du moins dans cette utilisation).
essaye (si ce n'est déjà fait) de créer un nouveau projet et simplement d'instancier la classe.

ton message peut être en rapport avec d'autres objets ou références.
@+
PCPT [AFCK]
lwred Messages postés 16 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 23 mai 2012
10 avril 2006 à 15:12
Merci beaucoup pour cette source. Marche très bien chez moi.
Par contre, j'ai essayé ça au boulot (où j'ai des droits restreints) et cela ne marche pas. Cela me sort l'erreur d'éxécution 380 avec le message suivant : "La classe n'a pas été enregistrée. Recherche d'un objet avec CLSID:{000................2EA4}.

A priori, la classe ne s'enregistre pas si on n'a pas des droits administrateur ?!

Merci d'avance pour votre aide.
Dans tous les cas, je compte créer une option STYLE WIN98/STYLE WINXP où la classe ne sera lancée que si l'option XP est cochée.
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
20 janv. 2006 à 18:03
BOBYBYX : ce site est fait pour partager des connaissances, mais nous n'allons quand même pas écrire à chaque fois comment se servir des fichiers que nous mettons car sinon, nous passerions plus de temps à expliquer comment se servir de VB qu'à coder !

Je peut te conseiller de lire des tuto sur le net parlant du logiciel VB, et ensuite de venir voir les sources, et non faire le contraire... ;)

DarK Sidious
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 janv. 2006 à 17:37
il suffit de lancer le fichier VBP (Visual Basic Project)
et de presser F5
bobybx Messages postés 18 Date d'inscription mardi 30 mars 2004 Statut Membre Dernière intervention 4 mars 2008
20 janv. 2006 à 17:18
Et pour une personne qui débute, on fait comment?

je n'ai absolument aucune idée de où mettre le contenu du zip ni le code... C'est dommage que ce ne soit absolument pas clair pour les gens qui débutent en VB.
Le jpg de capture me fait penser que cette source est sympa.
Quelqu'un peut expliquer comment on fait?
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
29 nov. 2005 à 13:39
merci pour le 1/10 sans commentaire. çà fait toujours plaisir...

ChrisPM -> logiquement oui
BruNews -> c'est noté merci ;)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 nov. 2005 à 00:39
2003 = 5 en MajorVersion et 2 en MinorVersion
Vista = 6 et 0 (pour l'instant).
ChrisPM Messages postés 17 Date d'inscription jeudi 27 novembre 2003 Statut Membre Dernière intervention 11 septembre 2006
28 nov. 2005 à 23:13
Salut :)

Mhmm c'est intéressant comme astuce ! c'est vrai que de devoir ajouter un manifest à la main est toujours embêtant.

par contre, au sujet des versions de windows, 2003 et vista ont/auront un numéro de version supérieur à celui de winXP, non ?

dans ce cas, la compatibilité avec les windows futurs ne pose logiquement pas de problême, avec un petit >au lieu du simple :)
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 nov. 2005 à 22:40
mis à jour ;)
l'effet n'est bien sûr visible qu'en projet compilé.
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 nov. 2005 à 22:31
Draluorg -> ajouter un module à un projet et saisir 1 ou 2 lignes est toujours plus rapide que de créer le manifest après compilation pour créer le .res à ajouter en plus d'une fonction LoadRes etc...
et le point TOUJOURS oublié (sauf ici^^) est cette fameuse incompatibilité des exe XP/2000 empêchant l'execution de l'appli.
l'utilisateur novice, son exe ne fonctionne pas, il ne va pas chercher. c'est la désinstallation sans surci!!

il ne faut pas oublier qu'une application ne peut contenir qu'un seul fichier ressource. par ta méthode, très gênant donc d'importer un .res "fonctionnel" à un projet en contenant déjà un.

donc non, je préfère cette méthode ;-)

HHHP-> ok merci. c'est donc en principe la raison évoquée ci-dessus. je met à jour de suite...

PCPT [AFCK]
hhhp2004 Messages postés 173 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 13 octobre 2007
25 nov. 2005 à 22:09
MsgBox ((WinVer Mod 256) + ((WinVer \ 256) / 100))=5.01
draluorg Messages postés 625 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 25 novembre 2010
25 nov. 2005 à 12:52
Salut a tous,

Moi je suis un peu decu quand meme!
Je m'attendais a quelques choses de bcp plus court!

Il suffit de le mettre en ressource "Custom" et apres avoir verifier la version faire un loadresdata ou la mettre en ressource 24 et n'appeller IniCommonControl que si on est sous XP non ?

Enfin point de vue personnel, ceci est pour moi plus "compliquer" que la methode traditionnelle! Bien que l'idee soit bonne...

++
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 nov. 2005 à 12:39
HHHP-> quelle valeur as-tu dans IsWindowsXP stp :
MsgBox ((WinVer Mod 256) + ((WinVer \ 256) / 100))



Rey -> j'y avais pensé, mais on va trop vite et voilà...
If ((WinVer Mod 256) + ((WinVer \ 256) / 100)) = 5.01 Then IsWindowsXP = True
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 nov. 2005 à 10:18
Attention a ton test de la version, Pcpt, il est dangereux...

XXX = "5,01"

ca ne prend pas en compte les options régionnales, et va être faux sur un poste Xp, qui a un point comme séparateur décimal...

fais plutôt :
XXX = 5.01
hhhp2004 Messages postés 173 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 13 octobre 2007
25 nov. 2005 à 05:43
uhhhhh ca a lair bon mais chez moi ca marche pas ........ je suis sous xp media center (professional)

cest quoi le probleme?
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 nov. 2005 à 02:02
"5,01" correspond uniquement à XP, classe fonctionnant uniquement sous XP comme indiqué dans l'explication finale.
(manifest pour XP, classe fonctionnant sur les autres Win également....)
maintenant si tu veux me donner la valeur retournée par 2003 et LongHorn, et tester la compatibilité des .manifest, je mettrai à jour ;)

et pour "Process Explorer", fonctionnel, donc pas de raison particulière de faire autrement. si?

++
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 nov. 2005 à 01:50
dans le manifest, le nom pourrait utiliser App.title :
Print #FF, " name=" & Chr(34) & "Process Explorer" & Chr(34)

de plus, que ce passera t'il sous Windows 2003 ???
qui, je pense utilise également les manifests...
je veux dire.. tu testes
Format((WinVer Mod 256) + ((WinVer \ 256) / 100), "Fixed") = "5,01"
ce qui me semble limitatif
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 nov. 2005 à 22:59
(je préfère aussi en Classe, preuve en est ^^)
merci !
PCPT [AFCK]
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
24 nov. 2005 à 20:26
Non, il vaut mieux l'utiliser en classe : c'est plus simple à intégrer dans un projet, et moins de risque de conflit avec d'autres fonctions.

Bien vu, et marche très bien. Très commenté !

9/10

DarK Sidious
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 nov. 2005 à 19:16
peu très bien être utilisé en module simple. (gain de la ligne en déclaration)
laissez vos commentaires (+ note?) ;)
PCPT [AFCK]
Rejoignez-nous