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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Prog qui disparait de la liste des Applications

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Prog qui disparait de la liste des Applications

n°1181083
M@el
Posté le 22-08-2005 à 11:27:44  profilanswer
 

Hello,
 
J'ai un petit prog qui tourne en tâche de fond sur un PC (une Form avec Visible=False).
Dans le Gestionnaire des tâches de Windows il apparaît dans la liste des Applications et dans celle des Processus. Là tout va bien.
 
Mais voila au bout d'un certain temps le prog disparait de la liste des Applications et n'apparaît plus que dans la liste des processus !!!  :heink:  
Cela me pose un pb car l'API (GetDesktopWindow) incluse dans ce programme qui permet de faire une capture d'écran ne fonctionne plus une fois que le prog n'est plus dans la liste des Applications.
 
Si qq à une idée sur ce basculement j'suis preneur !
Merci

mood
Publicité
Posté le 22-08-2005 à 11:27:44  profilanswer
 

n°1181188
HelloWorld
Salut tout le monde!
Posté le 22-08-2005 à 13:39:05  profilanswer
 

C'est tout simplement parce que ton programme s'est terminé.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1181289
M@el
Posté le 22-08-2005 à 15:03:49  profilanswer
 

Terminé ??! Mais il ne fait rien (si il ecoute sur un port).
D'ailleurs le code ne comporte aucun End ou Form Unload.
Ce n'est qu'une simple Form avec le parametre Visible à False.
 
D'ailleur j'ai merdé pour les API j'en utilise 3 pour faire la capture et la convertir en tableau de byte :
GetDesktopWindow
BitBlt
GetDIBits
 
Ce programme n'a pas de "Fin".


Message édité par M@el le 22-08-2005 à 15:05:05
n°1181402
HelloWorld
Salut tout le monde!
Posté le 22-08-2005 à 17:08:16  profilanswer
 

Et pourtant... s'il n'est pas dans le gestionnaire des tâche, c'est qu'il ne tourne pas / plus.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1182047
M@el
Posté le 23-08-2005 à 10:27:54  profilanswer
 

Si il tourne puisqu'il est toujours dans la liste des processus et que je ne peux pas supprimer l'exe !!!!
 
En fait au lieu d'apparaître dans la liste des Applications ET des Processus, il n'apparaît plus que dans les Processus.
 
Une fois dans les Processus uniquement là il ne fonctionne plus correctement (la capture d'écran ne renvoie rien, l'image obtenue correspond à la couleur du controle qui reçois la capture).
 
Vois tu ce que je veux dire ?

n°1182052
HelloWorld
Salut tout le monde!
Posté le 23-08-2005 à 10:32:29  profilanswer
 

Ah... je me fie jamais à la liste des application, je pensais que tu parlais de la liste des process.
Je sais pas ce qu'il fait ton programme. Faut bien tout tester les valeurs de retour, vérifier que y'a pas de fuites, etc...
GetDesktopWindow() ne peut pas échouer à ma connaissance. Qu'est-ce qui te fait dire ça ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1182165
M@el
Posté le 23-08-2005 à 12:02:59  profilanswer
 

Il ne fait rien de bien compliqué :  
 
Le prog se lance sous form d'une Form avec Visible=False
Puis il ecoute sur un Port
A la reception d'une connexion
Il stop l'ecoute
La forme s'affiche sous forme d'un tout petit carré blanc en haut à gauche de l'écran
le prog obtien le handle du bureau avec GetDesktopWindow
A partir du handle obtien le DeviceContext avec GetDC
Réalise une capture d'ecran et la place dans un picturebox avec BitBlt
Libére les ressources du Device Machin avec ReleaseDC
Place l'image dans un tableau de Byte avec GetDIBits
Envoie le tableau et l'en tête au poste qui a demandé la capture pour affichage.
Recommence à écouter sur le port.
 
Quand ça merde je reçois une image remplie avec la couleur de fond du PictureBox (rouge).
 
Le prog est controlé par Win sous forme d'une tache planifié qui le relance le prog toutes les 5 minutes. Si le prog tourne déjà la nouvelle instance s'auto-kill (là il y a bien un End)  :ange: .
 
Ca fait chier, je vais devoir faire un log sur l'exe car en Dev bien sur je n'ai jamais de pb.  :fou:  
 
J'ai testé avec et sans affichage de la form sous forme de carré blanc c'est pareil, idem sans le ReleaseDC.
 
Je me demande si le pb ne vient pas de la tache planifiée car il apparaît toujours le lendemain (le pb), exemple si je lance le prog aujourd'hui je n'aurais de pb potentiellement que demain. Le prog tourne sur 8 postes et en générale j'en ai un sur 8 qui merde le lendemain. Bien sur c'est pas toujours le même. Quand ça merde je fait Ctrl+Alt+Sup, je vais dans les processus et je le kill, 5 minute plus tard la tâche la relance et là je suis tranquille pour la journée.
 
La tâche planifiée lance le prog toutes les 5 mn de minuit à 23h59 tous les jour.
 
 :??:


Message édité par M@el le 23-08-2005 à 12:09:24
n°1182280
HelloWorld
Salut tout le monde!
Posté le 23-08-2005 à 13:57:37  profilanswer
 

Ou alors tu as simplement uen fuite de ressources GDI, et quand ça sature ça merde. Pour que ça sature, il faut un certain nombre d'exécutions / screenshot.
Fait un test en exécutant ton code de capture en boucle.
Trace la consommation mémoire, et analyse l'utilisation des ressources GDI avec ça:
http://msdn.microsoft.com/msdnmag/ [...] fault.aspx
Si y'a un compteur qui ne fait que grimper, tu as trouvé le problème.
Inspire toi de ce code:
http://support.microsoft.com/defau [...] -us;161299


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1182342
M@el
Posté le 23-08-2005 à 14:49:59  profilanswer
 

OK merci j'vais regarder ça.
[Edit]
J'ai viré tout mon ancien code de capture d'écran (avec Release machin) et remplacé par celui de tu m'as indiqué.
Je balances tout ça et je te dis demain ce qu'il en est.  :)  
 
Merci :hello:


Message édité par M@el le 23-08-2005 à 15:04:51
n°1182460
HelloWorld
Salut tout le monde!
Posté le 23-08-2005 à 15:57:02  profilanswer
 

Tu peux pas le relancer toutes les secondes au lieu de toutes les 5 minutes ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
mood
Publicité
Posté le 23-08-2005 à 15:57:02  profilanswer
 

n°1182581
M@el
Posté le 23-08-2005 à 17:00:54  profilanswer
 

Re
 
Il n'y a pas une capture toutes les 5 minutes les captures sont faites à la demande d'un autre soft qui les reçoist et les affiche. Ce prog est installé que sur une seule machine. Ca permet de voir si tous ce passe bien sur les postes pilotant des automates sans avoir à se lever et c'est bcp moins lourd que PC Anywhere.
 
Les postes, on va dire "à surveiller", relancent l'appli (celle qui fait la capture et l'envoie) toutes les 5 mn au cas où elle ne tournerait plus suite à un plantage ou un redemarrage du poste.
 
Je viens de faire un test en ajoutant une petit boucle dans le prog qui demande la capture d'écran et qui l'affiche.
 
J'ai demandé et obtenue 1000 captures à 300 MiliSec d'intervale sans aucunh pb. Je vais bien voir demain si ça a tenu le coup.
 
La mémoire consommée par le prog (celui qui fait la capture) varie entre 4.8 Mo et 14 Mo, mais une fois la capture terminée il retombe toujours à 4.8 Mo.
 
J'ai fait ces tests avec la nouvelle version de programme dans lequelle j'ai modifié les API de captures pour utilisé celle du lien de ton post.
 
Demain je testerais la demande de 1000 captures sur l'ancienne version pour voir si elle tenait le coup et si le pb venait bien des API.
 
Merci  :hello:


Message édité par M@el le 23-08-2005 à 17:02:51
n°1183026
M@el
Posté le 24-08-2005 à 09:42:25  profilanswer
 

Bon,
 
Je ne suis pas sur le site de production, mais sur les 8 postes j'ai deux écran noir (au lieu de rouge... beau progrés), manifestement le pb est tjrs là... Le prog tourne bien puisque la connexion s'établie, par contre la capture part en sucette.
 
Je serais probablement sur le site demain. Je vais voir ce qui ce passe si je vire la tache planifée.
 
C désolant quand même...

n°1183028
HelloWorld
Salut tout le monde!
Posté le 24-08-2005 à 09:46:00  profilanswer
 

Moui. La fuite peut se situer ailleurs. Pour être fixé, analyse la consomation des objets GDI avec le lien donné.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1183320
knakes
Posté le 24-08-2005 à 13:22:43  profilanswer
 

c'est un prog de style vnc ?
si c'est le cas, alors dans ta partie serveur, met un timer à 1 minute pour l'envoie des images en continu.
Ne te sert pas de ta fenetre pour faire une capture mais d'une API Windows de copie d'ecran. va faire un tour sur vbfrance.com


---------------
now : do nothing
n°1183948
M@el
Posté le 25-08-2005 à 10:03:34  profilanswer
 

Ce prog ne prend pas la main sur la machine, il ecoute sur un port et envoie une capture au PC qui lui a demandé.
 
J'utilise bien une API pour faire la capture. Le code vient de de chez Crosoft il utilise les API :
GetWindowDC + CreateCompatibleDC + CreateCompatibleBitmap + SelectObject + GetDeviceCaps + BitBlt + DeleteDC + ReleaseDC.
 
J'ai déjà épuré VB France...
 
Merci Qd même.

n°1184565
knakes
Posté le 25-08-2005 à 19:21:16  profilanswer
 

fait voir une routine qui toutes les 5 min fait une capture et la stocke (et suppr l'autre) pour faire tourner le programme.


---------------
now : do nothing
n°1184803
M@el
Posté le 26-08-2005 à 08:56:46  profilanswer
 

J'ai déjà fait qq chose du même style :
 
J'ai demandé et obtenue 1000 captures à 300 MiliSec d'intervale sans aucunh pb.
 
Aujourd'hui aucun des postes n'a merdé... étrange.

n°1185524
HelloWorld
Salut tout le monde!
Posté le 26-08-2005 à 16:12:05  profilanswer
 

Fait une présentation du soft au client, là t'es sûr que ça merdera :)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1186730
M@el
Posté le 29-08-2005 à 09:56:53  profilanswer
 

lol


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Prog qui disparait de la liste des Applications

 

Sujets relatifs
[PHP] Au sujet de la prog d'un CMS/ Web blogTaitement d'une liste de selection
Accès aux éléments d'une liste de sélectionModifier un JPanel (ou Frame) pendant l'exécution d'un prog
Scanner un répertoire et afficher les fichiers dans une liste boxComment on converti un prog flash en java pour mettre sur un mobile?
XLM-XSD:liste atrtributs obligatoire+n'importe quel autre[html] [RESOLU] largeur liste déroulante
liste de navigation[rech] programmateur qui s'ennuie pour mini prog
Plus de sujets relatifs à : Prog qui disparait de la liste des Applications


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