Accueil > Forum > > > > GetLayeredWindowAttributes et Windows 2000
GetLayeredWindowAttributes et Windows 2000
vendredi 13 mars 2009 à 08:54:17 |
GetLayeredWindowAttributes et Windows 2000

Xaviou
|
Bonjour à tous. J'ai un petit soft qui tourne actuellement sur différentes machines, dont certaines encore équipées de Windows 2000. A un moment donné, j'ai besoin de récupérer les éventuelles informations de transparence d'une fenêtre. Mais Windows 2000, s'il possède bien la fonction SetLayeredWindowAttributes, ne possède pas la fonction GetLayeredWindowAttributes. D'après MSDN, cette fonction est apparue à partir deWindow XP. Je passe donc par la fonction GetWindowLong pour savoir si oui ou non la fenêtre a le style transparent (car dans ce cas, elle a le style WS_EX_LAYERED). Par contre, je ne sais pas comment retrouver les valeurs des deux derniers paramètres de GetLayeredWindowAttributes : Merci d'avance pour vos éventuelles pistes (ou solutions). @+ Xav'
|
|
samedi 14 mars 2009 à 20:00:22 |
Re : GetLayeredWindowAttributes et Windows 2000

rt15
|
Salut, Désassemblé, sous XP, c'est juste un appel au service système 0x125C... Je ne trouve plus la doc avec les numéros des services systèmes par OS... 
|
|
dimanche 15 mars 2009 à 15:11:13 |
Re : GetLayeredWindowAttributes et Windows 2000

Xaviou
|
Salut.
Est-ce que tu peux m'en dire plus sur ce genre de truc (les appels aux services systèmes). C'est quelque chose que je ne connais pas du tout. Quels genre de services peut-on appeler de cette façon (je suppose qu'il ne s'agit pas des mêmes services que ceux auxquels on peut avoir accès depuis le panneau de configuration, mais je ne voispas du tout à quoi ça correspond).
Merci d'avance.
@+ Xav'
|
|
dimanche 15 mars 2009 à 17:42:24 |
Re : GetLayeredWindowAttributes et Windows 2000

rt15
|
En gros un certain nombre de fonction win32 (CreateFile) appellent des fonctions présentes dans ntdll (NtCreateFile). Ces fonctions préfixées par Nt font souvent un appel à un service système, c'est à dire une fonction du noyau. Les fonctions préfixées Nt mettent le numéro de service dans le registre eax et appellent KiFastSystemCall, une fonction de NtDll. Cette fonction utilise l'instruction sysenter pour passer en mode noyau et exécuter la fonction KiFastCallEntry de celui-ci. KiFastCallEntry appelle KiSystemService. KiSystemService regarde dans la GTD ou LTD l'adresse de la fonction correspondant au numéro de service mis en place dans eax par la fonction préfixée Nt. Et le service peut enfin s'exécuter.
Plus d'infos ici.
Dans ton cas, GetLayeredWindowAttributes ne passe pas par une fonction NtGetLayeredWindowAttributes. Le code de cette fonction de user32 est le suivant :
mov eax, 0x125C mov edx, KiFastSystemCall call dword ptr edx Bref elle fait le boulot de NtDll à la place de NtDll. Ce qui est un peu curieux (Pour moi...), c'est le numéro du service : 0x125C, qui est sensé correspondre à une entrée dans la GDT. Il est sacrément élevé... Tu pourrais donc facilement implémentée ta propre GetLayeredWindowAttributes pour un OS en particulier : quelques lignes d'assembleur... Mais le numéro de service n'est pas forcément compatible avec windows 2000 : les numéros peuvent changer d'un NT à l'autre. Et le service GetLayeredWindowAttributes n'existe peut être tout simplement pas sous 2000.
Pour aller plus loin, il faudrait regarder dans la GDT si 0x125C est un index valide, et désassembler la fonction correspondante. Le problème de la chose étant qu'il faut un débugueur noyau et savoir à peu près s'en servir. (Windbg un des "Debugging Tools for Windows" s'en sort très bien en mode non intrusif pour ce genre de chose). Et qu'ensuite il faudrait (Probablement) faire un driver pour windows 2000 faisant la même chose que le code désassemblé d'un XP ou d'un Vista. Bref, il y a pas mal de boulot... 
|
|
dimanche 15 mars 2009 à 18:06:11 |
Re : GetLayeredWindowAttributes et Windows 2000

rt15
|
Erratum sur mon code de GetLayeredWindowAttributes, mais bon c'est le même esprit. .. mov eax, 0x125C mov edx, entrée KiFastSystemCall dans la table d'import call dword ptr edx
Je supporte plus Vista.  Et il a même pas ntsd, un petit débugueur bien sympa présent sous XP par défaut. 
|
|
lundi 16 mars 2009 à 13:41:27 |
Re : GetLayeredWindowAttributes et Windows 2000

Xaviou
|
Gloups.... C'est d'un niveau malheureusement trop élevé pour que je m'y mette  Va falloir que je trouve une autre solution. J'ai bien, dans un premier temps, trouvé ceci, mais en regardant le code source fourni, la fonction recréée ne retourne pas les valeurs correspondantes à la fenêtre. Elle renvoie tout simplement les valeurs 0x00FFFFFF pour COLORREF, 0xFF pour la valeur alpha, et LW_ALPHA pour les flags. Autant dire que ça ne sert à rien. Il y a ensuite ce projet (qu'il faudrait que je teste pour voir si la fonction GetLayeredWindowAttributes fonctionne correctement), mais cette fois-ci, le problème est tout autre : il s'agit d'un package à installer qui, d'après ce que j'ai compris, fait une copie de certaines dll et prend leur place. Par exemple, la dll user32.dll est "renommée" en user2k.dll, et la nouvelle user32.dll mise prend sa place et lui est linkée. Le genre de truc que l'on ne veut surtout pas imposer à nos utilisateurs. En tout cas, merci pour avoir pris le temps de regarder mon problème, et pour tes explications. @+ Xav'
|
|
Cette discussion est classée dans : fonction, windows, fenêtre, getlayeredwindowattributes, éventuelles
Répondre à ce message
Sujets en rapport avec ce message
[Visual C] Comment rediriger des fprintf() vers une fenêtre windows [ par castelj ]
Bonjour,Débutant en programmation windows, mon problème est que j'aimerai savoir comment est-ce que l'on peut faire des fprintf dans une fenetre Windo
Remplacer la fonction de copie de fichier sous Windows [ par MangaII ]
Salut !Quelqu'un sorai-t-il comment on pe remplacer la fonction de copie de fichier sous Windows par un programme maison !Mon but est d'optimiser la c
Fenêtre windows... [ par ELECTRORESiSTiK ]
Salut,Je suis debutant en Visual C++ et je n'arrive pas à créer ce que je veux faire...Je voudrais créer une fenêtre windows ( Form ) avec 2 edit box
fonction system avec windows [ par darkalpha ]
jutilise un programme afin de détecter quand un overflow se produit (le nombre de caractères) et le pb c que le programme entré avec system n'existe p
ShowWindow() [ par JCpp ]
ShowWindow(hdlg,SW_HIDE);Je viens de comprendre pourquoi quand je cache une fenêtre, elle n'apparaît pas avec la fonction : ShowWindow(hdlg,SW_SHOW);E
activation fenêtre après lancement automatique sous windows 2000 [ par polkas ]
Bonjour,Je développe un Ecran de Veille demandant un Password qui peut être activer par l ' utilisateur ou lancer automatiquement sous Windows 2000Pro
activer une fenetre dans une appli MDI [ par arno2004 ]
Bonjourj'ai récupérer un éditeur de dessin. j'y est ajouter une fonction'ci dessous) pour copier une zone sélectionnée dans une nouvelle fenêtre. la f
Comment créer une fenêtre Windows [ par lebarn ]
Bonmatin, bonaprèsmidi, bonsoir, bonnuit, bonmidi, etc ...Comment peut-on créer un fenêtre Windows ? Car j'ai de nombreux problème et je ne comprends
Recopier une zone mémoire dans une fenêtre windows [ par brosse_adan ]
Bonjour à tous!mon sujet était peut-être pas super bien choisi, mais bon, j'avais pas mieux... et en plus, mon pb est compliqué à exposer!! :)voilà, j
Fonction API permettant de copier le contenu d'une fenêtre dans une var HBITMAP [ par elflink ]
Bonjour à tous et à toutes,Je suis à la recherche d'une fonction API qui permettrait de copier le contenu d'une fenêtre window dans une variable de ty
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : CXIMAGERE : CXIMAGE par rt15
Cliquez pour lire la suite par rt15
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|