Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1104 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Placer une fenetre dans un endroit précis de l'écran

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Placer une fenetre dans un endroit précis de l'écran

n°1576500
tarzoun49
Faux informaticien...
Posté le 18-06-2007 à 20:26:43  profilanswer
 

Bonjour à tous !
 
Mon problème : Je souhaiterais pouvoir lancer un fichier du style powerpoint ou word, ça pas trop de difficulté avec la méthode "Shellexecute". La où je bloque c'est que je voudrais placer cette fenetre que je viens d'ouvrir dans un partie précise de l'écran.
Pour placer la fenêtre de mon application j'utilise "MoveWindow" mais je ne sais pas comment je peux choisir la position et la dimension du fichier (Word ou autre..) que je viens d'ouvrir.
 
Si vous avez une solution...
 
Merci d'avance.
 
PS: J'utilise Visual C++ 6 sous XP proffesionnel

mood
Publicité
Posté le 18-06-2007 à 20:26:43  profilanswer
 

n°1576502
IrmatDen
Posté le 18-06-2007 à 20:30:44  profilanswer
 

Salut,
 
Tu dois pouvoir t'appuyer sur GetWindowRect pour les dimensions non?

n°1576506
tarzoun49
Faux informaticien...
Posté le 18-06-2007 à 20:40:11  profilanswer
 

IrmatDen a écrit :

Salut,
 
Tu dois pouvoir t'appuyer sur GetWindowRect pour les dimensions non?


 
Merci pour ta réponse. j'essaierai ca demain. Mais il faudrait alors que je récupère le handle de la fenêtre que je vien d'ouvrir... et ca non plus je ne vois pas trop comment faire... :pfff:

n°1576563
marctes
Posté le 18-06-2007 à 23:13:28  profilanswer
 

Ce n'est pas du C++
Et ça a déjà été donné maintes fois sur news://fr.comp.os.ms-windows.programmation


Message édité par marctes le 18-06-2007 à 23:14:33
n°1576585
SquiZZ
Posté le 19-06-2007 à 03:00:29  profilanswer
 

Tu peux lancer ton appli avec CreateProcess au lieu de ShellExecute.
Avec le dernier paramètre tu peux récupérer des infos sur le process que tu viens de créer.
 
Ensuite tu peux utiliser EnumWindows pour énumérer toutes les fenêtres. Ca utilise une callback mais rien de bien sorcier en principe.
Ta callback sera appelée pour chaque fenêtre trouvée et tu auras à chaque fois le HWND correspondant.
Avec ce HWND tu peux utiliser GetWindowThreadProcessId, si ce processid est le même que celui que t'as récupéré dans le CreateProcess, bingo ! (enfin en principe)

Message cité 1 fois
Message édité par SquiZZ le 19-06-2007 à 03:06:57
n°1577373
tarzoun49
Faux informaticien...
Posté le 20-06-2007 à 17:46:26  profilanswer
 

SquiZZ a écrit :

Tu peux lancer ton appli avec CreateProcess au lieu de ShellExecute.
Avec le dernier paramètre tu peux récupérer des infos sur le process que tu viens de créer.
 
Ensuite tu peux utiliser EnumWindows pour énumérer toutes les fenêtres. Ca utilise une callback mais rien de bien sorcier en principe.
Ta callback sera appelée pour chaque fenêtre trouvée et tu auras à chaque fois le HWND correspondant.
Avec ce HWND tu peux utiliser GetWindowThreadProcessId, si ce processid est le même que celui que t'as récupéré dans le CreateProcess, bingo ! (enfin en principe)


 
Merci pour ta réponse, elle a l'air pas mal...seulement j'ai un problème avec CreateProcess. Le programme compile traquil mais lorsque je le lance, il me met une erreur :
 "unhandled exception in .exe (NTDLL.DLL):0xC000005 : Access Violation"
 
J'ai cherché la DLL en question et j'ai vu que je n'avais pas les droits de modification mais seulement les droits de "Lecture et exécution" et "Lecture". Seul l'administrateur a le droit de "Modification" sur cette DLL et je ne suis pas l'administrateur de mon PC.. :sweat:    
Est-ce que ceci peut être la cause de mon erreur ??
 
Merci

n°1577387
SquiZZ
Posté le 20-06-2007 à 18:24:21  profilanswer
 

tu peux donner le code pour ton appel à CreateProcess ?

n°1577501
tarzoun49
Faux informaticien...
Posté le 21-06-2007 à 08:18:24  profilanswer
 

SquiZZ a écrit :

tu peux donner le code pour ton appel à CreateProcess ?


 
adressefichier="C:\monfichier.pps";
STARTUPINFO si;  
PROCESS_INFORMATION infoproc;
si.cb=(sizeof)si;
CreateProcess(adressefichier,NULL,NULL,NULL,NULL,NULL,NULL,NULL,&si,&infoproc);
 
J'ai essayé plusieurs de variante, en entrant directement l'adresse dans les paramètres de CeateProcess, en la mettant dans le deuxième paramètre... mai rien n'y fait... :??:  
 

n°1577759
IrmatDen
Posté le 21-06-2007 à 18:14:29  profilanswer
 

Est-ce que c'est une erreur de copier/coller, ou tu n'as vraiment pas échapper le '\' dans le chemin?

n°1577791
marctes
Posté le 21-06-2007 à 20:37:34  profilanswer
 

tarzoun49 a écrit :

Merci pour ta réponse. j'essaierai ca demain. Mais il faudrait alors que je récupère le handle de la fenêtre que je vien d'ouvrir... et ca non plus je ne vois pas trop comment faire... :pfff:


 
Le code complet a été donné x fois sur le news sus-cité (bis)
C'est si difficile de faire copier-coller ?!

mood
Publicité
Posté le 21-06-2007 à 20:37:34  profilanswer
 

n°1577808
SquiZZ
Posté le 21-06-2007 à 22:04:16  profilanswer
 

tarzoun49 a écrit :

adressefichier="C:\monfichier.pps";
STARTUPINFO si;  
PROCESS_INFORMATION infoproc;
si.cb=(sizeof)si;
CreateProcess(adressefichier,NULL,NULL,NULL,NULL,NULL,NULL,NULL,&si,&infoproc);
 
J'ai essayé plusieurs de variante, en entrant directement l'adresse dans les paramètres de CeateProcess, en la mettant dans le deuxième paramètre... mai rien n'y fait... :??:


 
Tu dois initialiser le contenu de la structure si avec des 0 :

Code :
  1. STARTUPINFO si = {0};


 
Sinon CreateProcess marche pas comme ShellExecute et tu dois donner un exécutable en paramètre, comme ça :

Code :
  1. CreateProcess(NULL, "c:\\toto\\powerpointe.exe c:\\pouet.pps" ....


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Placer une fenetre dans un endroit précis de l'écran

 

Sujets relatifs
arrêt d'un process précisPlugin Visual Editor: changer le style de la fenêtre?
[FLASH] Eviter la fenêtre de paramètres du flash player ?Ouvertue fenêtre en VB.net problème :(
Ouvrir un lecteur video en plein écran.Fenetre DOC et programmation C
[Flash]>> placer un lien (bouton) dans un composant accordionComment envoyer le résultat vers un fichier et garder à l'écran ?
javascript : boites, nombre de colonnes, et taille de la fenetreFenêtre pop up sous word
Plus de sujets relatifs à : Placer une fenetre dans un endroit précis de l'écran


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR