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

Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
- - Dernière réponse : Philippe734
Messages postés
309
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
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1 -
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
309
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
15 juin 2015
1 -
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
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
C'est ici que j'ai appris à mettre systématiquement une PictureBox dans chaque Frame ;)

@+
MadM@tt
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
-
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
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
CheckBox, OptionButtons, et boutons doivent bénéficier de PictureBoxes
violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
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
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29 -
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
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
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
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29 -
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
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
-
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
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
certes, j'oubliais l'execution en mode compatible...
PCPT
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29 -
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
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
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
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29 -
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
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
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
16 -
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
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29 -
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
16 -
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
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29 -
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
-
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
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
83 -
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
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
il suffit de lancer le fichier VBP (Visual Basic Project)
et de presser F5
bobybx
Messages postés
23
Date d'inscription
mardi 30 mars 2004
Statut
Membre
Dernière intervention
4 mars 2008
-
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
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29 -
merci pour le 1/10 sans commentaire. çà fait toujours plaisir...

ChrisPM -> logiquement oui
BruNews -> c'est noté merci ;)
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16 -
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
-
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
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29 -
mis à jour ;)
l'effet n'est bien sûr visible qu'en projet compilé.
PCPT
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29 -
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
-
MsgBox ((WinVer Mod 256) + ((WinVer \ 256) / 100))=5.01
draluorg
Messages postés
627
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
25 novembre 2010
-
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
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29 -
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
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
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
-
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
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29 -
"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
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
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
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29 -
(je préfère aussi en Classe, preuve en est ^^)
merci !
PCPT [AFCK]
cs_DARKSIDIOUS
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
83 -
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
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29 -
peu très bien être utilisé en module simple. (gain de la ligne en déclaration)
laissez vos commentaires (+ note?) ;)
PCPT [AFCK]