CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

(win32) Desktop au top ;)

lord_kalipsy
lord_kalipsy
Niveau 10
19 décembre 2004 à 03:07:59

Salut!

J´suis entrain de coder une petite appli avec l´API win32. Et là j´essais de mettre le desktop " au dessu"( comme quand on clique sur une fenetre ) , le but est de faire une fonction qui fait l´équivalent du racourci " show desktop" dans le quick launch.

J´ai esseyé de donner le focus avec SetFocus. J´ai esseyé avec la fonction SetForegroundWindow, avec ShowWindow et même avec la fonction MoveWindow et ça fonctionne pas . ..

J´ai esseyé :

  1. include < windows.h>
  2. include " stdio.h"

int main ( int argc , char *argv[] )

{

HWND hProg = GetDesktopWindow();
//FindWindow(NULL , " Program Manager");

SetForegroundWindow ( hProg);
//ShowWindow(hProg,SW_SHOW);
//SetFocus(hProg);

getchar();

return 0;

}

Mais je fais seulement enlever le focus de ma console . ..

Si vous avez une idée d´un code qui pourrais faire ça ^^

Merci,
Psy³

dnob700
dnob700
Niveau 10
19 décembre 2004 à 12:27:43

le problème c´est que ça ne donne pas vraiment le focus au bureau pouice que les fenêtre ( celle qui peuvent l´être) sont minimisé, seule celel qui ne peuvent pas l´être ( genre boite dfe dialogue) passe derrière le bureau.

mais de toute façon il s´agit d´une commande du shelle de explorer. donc probablement que par l´API on doit pouvoir y acceder ( mais c´est pas du pur win32, c´est du explorer).

lord_kalipsy
lord_kalipsy
Niveau 10
19 décembre 2004 à 15:35:08

Merci de ta réponse, j´vais aller me renseigner sur msdn avec ce que tu m´as dis :)

dnob700
dnob700
Niveau 10
19 décembre 2004 à 16:31:07

en fait en ouvrant le fichier . scf en question, on trouve que la fonction a utilisé est : ToggleDesktop

on la trouve dans le SDK de windows, et elle est apparement équivalente à la fonction MinimizeAll qui a l´avantage de tourné sous tout les OS depuis win95 avec IE4 alors que l´autre ne marche que sous XP.

tu trouve ces fonction dans shell32.dll

j´ai l´impression que tout ça suis le modèle COM mais en même temps j´en suis pas sur, la doc du shell est pas du tout explicite.
Si tu trouve comment appeler ces fonction, poste ici pour nous en faire profiter.

lord_kalipsy
lord_kalipsy
Niveau 10
20 décembre 2004 à 14:53:02

Bon : J´ai réussi à utiliser une fonction du shell :) : J´ai ouvert un fichier ^^

Par contre, j´ai pas le . scf pour le toggle desktop :(

lord_kalipsy
lord_kalipsy
Niveau 10
20 décembre 2004 à 15:07:43

J´pense avoir une autre idée : Prendre le handle du desktop window et Minimizé chaque " CHILD". J´vais voir si il y a un équivalent à GetAncestor/GetParent sur msdn . .. si vous avez une idée j´suis prenneur ^^

lord_kalipsy
lord_kalipsy
Niveau 10
20 décembre 2004 à 17:41:20

Si quelqu´un a une idée de pour ça ne fonctionne pas :

invoke GetTopWindow,hwnd

invoke ShowWindowAsync,hwnd,SW_MINIMIZE

lord_kalipsy
lord_kalipsy
Niveau 10
21 décembre 2004 à 01:37:55

Bon j´ai trouvé ! M´enfin on va dire . ... En fait je réussi à éxécuter un . scf avec une fonction win32. ^^

J´ai chercher des tutoriels sur le shell d´explorer, mais j´ai rien trouvé d´intéressant. :(
Si quelqu´un a un lien j´suis prenneur ^^

CYBER_BOB
CYBER_BOB
Niveau 10
21 décembre 2004 à 02:22:14

en fait tu veux simplement que la fenetre de ton programme soit toujours au premier plan c´est ca? ou j´ai vraiment rien compris?

dnob700
dnob700
Niveau 10
21 décembre 2004 à 03:12:33

donc apparement t´as trouvé le . scf

tu peut montrer comment t´as utilisé le shell ? par ce qu´a partir de là, faire la suite en devrait pas poser de problème, il suffit d´appeler la bonne fonction.

bob, non, ce n´est pas ça, il vaut pouvoir utiliser dans un programme la fonction qui réduit toute les fenêtre pour faire apparaitre le bureau.

lord_kalipsy
lord_kalipsy
Niveau 10
21 décembre 2004 à 04:32:32

Cyber_Bob
Posté le 21 décembre 2004 à 02:22:14
en fait tu veux simplement que la fenetre de ton programme soit toujours au premier plan c´est ca? ou j´ai vraiment rien compris?

--> En fait je veux faire un équivalent à l´icon " Show Desktop" ( J´explqiue mal je sais ^^ )

dnob700
Posté le 21 décembre 2004 à 03:12:33
donc apparement t´as trouvé le . scf

--> Nan, en fait j´ai fait le scf :-p, Pour une raison étrange le . scf existe pas sous win2000 ( Dans le fichier System32)! J´ai fait un bête copier coller d´un site sur le web . .. malheureusement le site explique seulement comment refaire le . scf pour le " show desktop" et non pour autre chose . .. ( Je cherche actuellement des tutos sur le Explorer Shell scripting, ça resemble beaucoup au batch scripting aka . bat )

Voici la " source" du . scf :

[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop

C´est tout ^^

" tu peut montrer comment t´as utilisé le shell ? par ce qu´a partir de là, faire la suite en devrait pas poser de problème, il suffit d´appeler la bonne fonction."

--> Vi, trouver la bonne fonction ^^ . ... malheureusement il y a plein de trucs POO/COM_machin_que_je_comprend_pas que je peux pas faire en ASM . ... Si tu cherche des infos là dessus : http://www.codeproject.com/shell/

Voici ma source en ASM :

; ****************************
. 386
. model flat,stdcall
option casemap:none
; ****************************

include Desk.Inc

; ****************************Include
. data

text BYTE "ToggleDesktop.scf",0
open BYTE "open",0

; ****************************Data
. data?

; ****************************Data?

. code
code:

invoke ShellExecute,NULL, addr open , addr text , NULL , NULL , NULL

xor eax,eax

invoke ExitProcess,eax

; ****************************Code
end code

J´ai remarqué quelque chose d´étrange : si tu mets le . scf dans un réparoire quelquonque et que tu le " call" avec un chemin absolu, c´est plus long/moins_fluide que de le mettre dans system32 et de le " caller" comme dans mon code, avec un chemin " relatif".

Si t´as d´autres question, hésite pas . .. mais j´suis pas un pro avec le win32 alors . ..

Psy³

lord_kalipsy
lord_kalipsy
Niveau 10
21 décembre 2004 à 04:37:57

( Tien en même temps, si tu pouvais m´en dire sur ce COM_machin_que_je_comprend_pas et sur les ActiveX . .. j´y connais vraiment rien là dedans : c´est quoi lol ! ? )

Mici d´avance ^^

lag-it
lag-it
Niveau 10
21 décembre 2004 à 11:16:17

Tu te servais pas de wxWidgets lord_kalipsy ? :)

dnob700
dnob700
Niveau 10
21 décembre 2004 à 12:10:51

pour ce que j´en sais : ActiveX c´est juste le successeur de COM mais fondamentalement c´est a même chose.

normalement c´est des bibliothèque à linkage statique, donc tu link à un fichier . ocx qui est à lui seul une lib et un fichier d´en tête et tu peut ensuite utiliser tout ce qu´il fournit.

souvent des controle ( ActiveX donc) mais aussi des objets divers et du code.donc c´est juste un modèle pour faire de la POO qui a certain avantage et qui est très bien intégré à windopws, puicequ´il y a pas mal de chose qu´on ne peut faire que comme ça.

par exemple, voici un petit bout de code pour faire interpréter des expression mathématique par le moteur de script de windows, ce qui ce fait par une interface COM : http://wall.cours-info.net/?id=319&numero=non

lord_kalipsy
lord_kalipsy
Niveau 10
21 décembre 2004 à 12:26:05

lag-it
Posté le 21 décembre 2004 à 11:16:17
Tu te servais pas de wxWidgets lord_kalipsy ?

--> En fait, comme j´apprend l´ASM et que le mode console ne me motive pas plus qu´il faut.... Il y a aussi le fait que j´ai lu un texte quelque pars, qui conseil de commencer avec l´API et non avec les MFC pour mieux comprendre ce que fait les MFC.

Dnob --> Merci pour les info :) J´vais me renseigner sur le wouibe, tout ça a l´air bien sympa.

dnob700
dnob700
Niveau 10
21 décembre 2004 à 22:45:45

j´ai pas compris les MFC...

a chaque fois que tu cherche un truc sur l´API, tu vois qu´il y a une fonction de le MFC, qui fait la même chose que l´API, avec les même paramètre, mais un nom plus compliqué.
DOnc je vois pas trop à quoi ça sers.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment