CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 2007
-
26 oct. 2004 à 14:01
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 2009
-
27 oct. 2004 à 22:02
Comment faire pour afficher un espèce de popup (qui ressemble à une bulle) qui part d'une icône du systray (à côté de l'horloge windows pour ceux qui connaissent pas) ?
Miranda IM le fait par exemple avec le plugin de yahoo et d'irc (mais je n'ai rien trouvé dans le code source), ou bien windows (ex : cable réseau désactivé, pas assez de place sur le disque dur, nouveau matériel détecté, visite guidée d'xp, etc)
AVG dit aussi base de données des virus expirées comme ça il me semble
Je n'ai rien trouvé dans le msdn
CyberP,
Celui qui dit que toute question a une réponse
CyberP
Messages postés283Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 4 juillet 20072 26 oct. 2004 à 18:39
Juste un petit problème :
d:\Tout\Projets\C++\SC Server\SCServer\SCServer.cpp(46) : error C2039: 'uVersion' : is not a member of '_NOTIFYICONDATAA'
d:\Tout\Programmes\Visual Studio\Vc7\PlatformSDK\Include\ShellAPI.h(539) : see declaration of '_NOTIFYICONDATAA'
d:\Tout\Projets\C++\SC Server\SCServer\SCServer.cpp(46) : error C2065: 'NOTIFYICON_VERSION' : undeclared identifier
d:\Tout\Projets\C++\SC Server\SCServer\SCServer.cpp(48) : error C2039: 'szInfo' : is not a member of '_NOTIFYICONDATAA'
d:\Tout\Programmes\Visual Studio\Vc7\PlatformSDK\Include\ShellAPI.h(539) : see declaration of '_NOTIFYICONDATAA'
d:\Tout\Projets\C++\SC Server\SCServer\SCServer.cpp(49) : error C2039: 'uTimeout' : is not a member of '_NOTIFYICONDATAA'
d:\Tout\Programmes\Visual Studio\Vc7\PlatformSDK\Include\ShellAPI.h(539) : see declaration of '_NOTIFYICONDATAA'
d:\Tout\Projets\C++\SC Server\SCServer\SCServer.cpp(50) : error C2065: 'NIF_INFO' : undeclared identifier
d:\Tout\Projets\C++\SC Server\SCServer\SCServer.cpp(56) : error C3861: 'NIF_INFO': identifier not found, even with argument-dependent lookup
d:\Tout\Projets\C++\SC Server\SCServer\SCServer.cpp(57) : error C2039: 'szInfo' : is not a member of '_NOTIFYICONDATAA'
d:\Tout\Programmes\Visual Studio\Vc7\PlatformSDK\Include\ShellAPI.h(539) : see declaration of '_NOTIFYICONDATAA'
d:\Tout\Projets\C++\SC Server\SCServer\SCServer.cpp(58) : error C2039: 'uTimeout' : is not a member of '_NOTIFYICONDATAA'
d:\Tout\Programmes\Visual Studio\Vc7\PlatformSDK\Include\ShellAPI.h(539) : see declaration of '_NOTIFYICONDATAA'
en bref il trouve pas tout ce dont j'ai besoin pour ça malgré le fait que j'aie inclus shellapi.h et que les bonnes variables sont bien définies dedans
CyberP,
Celui qui dit que toute question a une réponse
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 27 oct. 2004 à 16:22
Salut,
InitCommonControls est une fonction qui ne fait rien, elle sert juste a ajouter une dependance a comctrl32.dll dans le programme. C'est pour ca que tu peux l'appeler a la func du prog.
Lorsque l'exe se charge en mémoire, le loader va trouver cette dépendance, et donc charger comctrl32.dll...
Sans appel a InitCommonControls, pas de dependance, et sans dependance, pas de chargement... et donc risque de gros problemes.
D'ailleur, tu peux ne pas appeler InitCommonControls() du tout, si tu charges la dll dynamiquement au debut du prog avec LoadLibrary("comctl32.dll");
voila, c'etait juste pour t'embeter hein.
j'avais prévenu.
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 27 oct. 2004 à 16:27
Ah mais pour m'apprendre des trucs, tu peux m'embeter autant ke tu veux ;)
Kan tu dis 'ajouter une dependance', tu veux dire ke la dll est 'chargé avec le prog' ? nan ?
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 27 oct. 2004 à 21:13
Salut,
Si un exe utilise une fonction d'une dll, le loader va automatiquement charger cette dll lors du chargement du programme.
Si tu regardes les dependances d'un exe qui utilise les common controls, tu verra qu'il n'y en a qu'une (c'est InitCommonControls()).
Si tu enleve l'appel a InitCommonControls(), l'exe n'a plus aucune dépendance sur comctrl32, du coup le loader ne risque pas de le charger, et c'est ca qui risque poser probleme...
Donc en gros, InitCommonControls() sert juste a créer une dependance sur comctrl32.dll, pour etre bien sur que comctrl32.dll soit bien chargée au debut de l'execution du programme.
Je sais pas si c'est bien clair, mais j'espere que tu as saisi l'idée générale..
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 27 oct. 2004 à 21:32
-Ok chef. Je viens de tester ce que tu me dis (je suis vachement curieux), et jviens de m'apercevoir que si jenleve InitCommonControls(), plus aucune dependance a comctl32.dll !
Donc en fait, si je comprends bien, InitCommonControls() n'est pas vraiment une 'fonction', elle est plutot interprété par le compilo (ou le le linker, je sais pas), nan ?
-Je viens de desassembler le prog de test, et l'appel est bien present, mais alors je ne comprend pas comment elle fonctionne...
-Je viens remplacer l'appel a la fonction par des nop, ca fonctionne...Donc comment fonctionne cette fonction ?
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 27 oct. 2004 à 22:02
" Cette fonction ne fait RIEN! Sa seule et unique instruction est "ret". Son seul but c'est d'inclure la référence de comctl32.dll dans la section d'importation pour que le Loader PE le charge à chaque fois que le programme est chargé. Le vrai boulot se fait au niveau de l'entrypoint de la fonction DLL qui enregistre toutes les classes de contrôles communs (common control classes) quand le dll est chargé"..
Bah uè, t'avais raison, il est mm dit qu'on peut la mettre n'importe ou ds le code.
Donc tu avais raison aardman, merci ;)