[VB] Donner le focus a une appli ?

Donner le focus a une appli ? [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 26-09-2007 à 01:07:24    

Bonjour, je veux faire une petite appli qui tourne en tache de fond et qui donne le focus à une autre appli si aucun clic de souris n'a été detecté depuis plus de 5s (en tout, peut importe ou on clique) :)
 
Déja, est ce que je peux faire ca en VB ?
Ensuite, j'ai trouvé la fonction                                                 SetForegroundWindow(), mais le parametre a passer (Hwnd), je n'ai aucune idée d'ou et comment le trouver :/
Et pour finir, est ce que mon programme peut ne pas avoir d'interface ? (une sorte de "service windows" )
 
Merci.


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
Reply

Marsh Posté le 26-09-2007 à 01:07:24   

Reply

Marsh Posté le 26-09-2007 à 10:16:49    

bonjour,
en regardant un peu sur google, j'ai trouvé ca :
http://www.vbfrance.com/infomsg_API-SOURIS_11318.aspx
 
ca devrait t'aider à mon avis

Reply

Marsh Posté le 26-09-2007 à 11:28:57    

Si ton programme n'a pas d'interface, tu ne peux pas gérer les événements de souris qui y sont liés : il faut un identifiant d'interface pour capturer les événements de ta souris ; c'est le handle (le paramètre hWnd qu'on te demande).
Comment pourrais-tu cliquer dans une application sans interface ?
Et si tu as une interface il me semble qu'avec un timer et les événements de souris tu dois pourvoir t'en sortir.
Dans Windows, on ne clique jamais n'importe où, mais toujours sur une fenêtre.

 

Ou alors un truc m'a échappé dans tes explications.

 



Message édité par tegu le 26-09-2007 à 11:30:33
Reply

Marsh Posté le 26-09-2007 à 15:26:53    

Je m'explique plus clairement :)

 

J'ai un Pc avec windows media center (XP), en biécran.

 

Sur l'ecran 1, il y a toujours le media center de lancé, sur l'écran 2, une appli de domotique que je suis en train de faire, avec des boutons a cliquer (écran tactile).

 

Bref, si on clique quelque part sur l'écran 2, la fenêtre de media center perd le focus, et la télécommande (qui émule des frappes clavier) ne fonctionne plus, je suis obligé de cliquer sur la fenetre du media center.

 

Moi je voudrais que si au bout de 5s on a  pas cliqué (peut importe ou), on remette l'application Media center au 1er plan, et on lui donne le focus (ce qui rétablit la télécommande).

 

A priori donc, pas besoin d'interface :)

 

Je regarde ton lien jpcheck :)


Message édité par getget le 26-09-2007 à 15:29:55

---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
Reply

Marsh Posté le 26-09-2007 à 16:31:54    

Ben moi je te dis que sans interface tu ne peux pas gérer les événements de la souris facilement.
 
Il te faut examiner la pile d'événements Windows, constater qu'aucun clic de souris n'est en cours de traitement, vérifier qu'un clic éventuellement traité  ne concerne pas justement media center (je ne sais pas comment sont gérés les bi-écrans en matière d'événement souris ; juste un prb de coordonnées pê), que ton timer de 5s n'est pas encore écoulé et sinon, enfin, passer le focus à media center.
 
Déjà, rien que la première partie (pile d'événements windows) est ardue pour un débutant en prog windows, puisque VB n'inclut aucune fonction de base pour le faire.
Il faut passer par des APIs Windows qui sont plus complexes à manipuler (pas forcément la syntaxe, mais l'ensemble déclaration/utilisation/comportement/gestion d'erreur).
 
Je te propose quelques clés de recherche sur le net pour t'aider si tu veux :
_TrackMouseEvent
SetCapture
ReleaseCapture
GetCapture
GetForegroundWindow (tu as déjà le Set :) )
CallWindowProcA (fonction de gestion par défaut des événements de la fenêtre, pour interception des événements)
SetWindowLong
FindWindow ...
 
Ça n'est pas infaisable, mais je ne vois pas de solution simple.
Peut-être trouveras-tu un prog tout fait et adaptable à tes besoins ou quelqu'un d'autre aura de meilleures suggestions
 
 

Reply

Marsh Posté le 26-09-2007 à 20:55:05    

Merci quiand même de t'y interesser, je vais fouiller :)
 
Au pire, je redonne le focus toutes les 5 s sans gérer les clics :D


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed