Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Fichier ouvert? | |
| | Auteur | Message |
---|
Invité Invité
| Sujet: Fichier ouvert? Mar 28 Déc 2010 - 15:18 | |
| Pour un programme, j'aurais besoin de savoir si un fichier ou un programme est déjà ouvert, ou bien a été fermé. Est-ce que quelqu'un connait une solution?
Merci |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fichier ouvert? Mar 28 Déc 2010 - 17:11 | |
| Hmm... en bricolant avec le on_error_goto, mais ce n'est pas très évident... quelque chose comme - Code:
-
dim f$, indic label deja, retour f$ = "C:\Textes\lorem.txt"
File_open_read 1, f$
indic = 0 on_error_goto deja: file_open_read 100, f$: file_close 100 retour:
print str$(indic) end
deja: indic = 1: ' fichier déjà ouvert goto retour | |
| | | Invité Invité
| Sujet: Re: Fichier ouvert? Mar 28 Déc 2010 - 18:04 | |
| Merci de répondre, mais ça ne convient pas. Je voudrais ouvrir à la suite deux exécute, le premier étant un execute_wait, déjà celui-là je voudrais être certain que le programme n'est pas déjà ouvert. Ensuite à la fermeture du premier programme, si il n'est pas déjà ouvert, exécuter le 2ème programme, sinon le reprendre. Ça paraît loufoque mais le but est réel. Sans entrer dans les détails, si c'était possible cela m'aiderait bien. Je pense que c'est possible, il doit bien y avoir une liste quelque part, vu que le gestionnaire de tâche a la liste des programmes ouverts. On pourrait penser que l'on voit dans la barre de tâche les programmes, mais je voudrais automatiser une tâche. |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fichier ouvert? Mar 28 Déc 2010 - 18:28 | |
| Ca relève du fonctionnement interne de Panoramic, mais au niveau du programmeur je ne vois pas bien comment on pourrait le savoir... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fichier ouvert? Mer 29 Déc 2010 - 10:28 | |
| Non, ça ne relève pas du fonctionnement interne de Panoramic. Panoramic n'a évidemment aucune connaissance des processus en cours sous Windows - seul Windows le sait. Et il ne srvirait à rien à Panoramic de mémoriser les processus qu'il lance lui-même, car il pourraient se terminer sans que Panoramic le sache...
Le seul moyen, serait d'avoir une fonction DLL permettant de savoit si un processus spécifique est encore ou déjà lancé. Si cela t'intéresse, je peux le faire.
Sinon, il y a un autre moyen. Le processus que tu lances pourrait créer un fichier particulier, et le supprimer à la fin. Et dans ton programme, tu testes si ce fichier existe... | |
| | | Invité Invité
| Sujet: Re: Fichier ouvert? Mer 29 Déc 2010 - 12:32 | |
| Bonjour Klaus, Voila je voudrais faire une application pour archiver tous mes documents et courrier. Pour cela je numérise chaque page, et enregistre sous un numéro, et je rempli pour l'instant un fichier avec les caractéristiques des documents pour les retrouver.
J'ai déjà fais cela sous JustBasic, mais mon application devient lourde (avec recherches multiples, tri...), et l'expérience aidant, je voudrais la refaire en Panoramic mais intégrer l'appel du scanneur pour travailler en parallèle. J'utilise pour l'instant un programme que je crois n'est plus distribué: scanIMG.exe, Je suis en train de regarder si il y a moyen d'avoir une numérisation en ligne de commande. Je vais surement tomber sur un os. Je ne suis pas sur qu'il soit vraiment indispensable de savoir si ce programme est ouvert, mais il a l'inconvénient de laisser une trace dans le gestionnaire de tâches, et j'ai une accumulation de ce programme dans lesdits gestionnaire.
Il y a encore de la méditation à faire! |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fichier ouvert? Jeu 30 Déc 2010 - 1:40 | |
| Plusieurs bons programmes freeware peuvent faire des scans. C'est le cas de Photofiltre, par exemple - malheureusement, il n'a pas de mode ligne de commande. Mais il y en a d'autres. si le programme que tu utilisais n'est plus suivi, il vaut mieux chercher un autre - le choix est large, même en ligne de commande. Ensuite, ça dépend de ce programme - peut-il retourner un code retour, un fichier log ou trace, etc. Le programme appelant devra alors utiliser ces possibilités pour l'intégrer. | |
| | | Invité Invité
| Sujet: Re: Fichier ouvert? Jeu 30 Déc 2010 - 10:19 | |
| J'ai téléchargé hier plusieurs logiciels. La plupart qui sont dîtes gratuit ont des limitations, ou des problèmes d'enregistrement, comme RapiDos!. Par contre j'ai ScanManager qui a l'air pas mal. C'est seulement dommage de devoir remettre à chaque fois les paramètres, comme le choix de documents noir&blanc, ou la valeur de numérisation 150 300 dpi... Avec scanIMG ce n'était pas le cas (ou cela dépend peut-être aussi de l'imprimante?)
En fait non, scanIMG et scanManager ont le même comportement. L'un et l'autre se valent, seul le look du second est plus agréable, et il gère une bibliothèque, mais c'est pas mon but
Dernière édition par cosmos70 le Jeu 30 Déc 2010 - 14:41, édité 1 fois |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fichier ouvert? Jeu 30 Déc 2010 - 14:38 | |
| IrfanView également peut scanner en ligne de commande. | |
| | | Invité Invité
| Sujet: Re: Fichier ouvert? Sam 1 Jan 2011 - 19:02 | |
| Bonjour Klaus, D'abord, je te souhaite mes meilleurs voeux pour cette nouvelle année. ensuite: - Citation :
- Le seul moyen, serait d'avoir une fonction DLL permettant de savoit si un processus spécifique est encore ou déjà lancé. Si cela t'intéresse, je peux le faire.
Je voulais éviter d'en faire la demande, mais si tu es toujours d'accord, je suis preneur. Gérer deux logiciels en parallèle qui ne communiquent pas ensemble, me dis que ce serait bien de savoir si l'autre programme est ouvert ou non, et régler les boutons en conséquence. Je pense que ce serait un plus non seulement pour moi, mais même si ce n'est pas le cas pour d'autre, cela peut le devenir un moment ou un autre. Merci d'avance, mais comme toujours, aucune obligation, et c'est comme tu le sens. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fichier ouvert? Dim 2 Jan 2011 - 11:05 | |
| Ok, je vais m'y mettre, et je te tiendrai au courant. Ce ne sera pas très difficile. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fichier ouvert? Dim 2 Jan 2011 - 13:00 | |
| Ca y est - j'ai mis en ligne oune nouvelle DLL nommée IsRunning.dll. Elle contient une seule fonction pur tester si un programme est actif. On la trouve dans la distribution des DLLs divers, avec un programme de démonstration "Test Isrunning.bas". On l'utilise de la manière suivante: - Code:
-
dim nom$, hnd% dll_on "IsRunning.dll" nom$ = "..." : ' On met ici le TITRE de la fenêtre principale du programme à tester hnd% = dll_call1("IsRunning",adr(nom$)) if hnd%>0 ' ici, on sait que le programme tourne else ' ici, on sait que le programme ne tourne pas end_if
La variable hnd% contient au retour de la routine le handle de la fenêtre principale du programme ciblé, donc celui de la form 0 s'il s'agit d'un programme Panoramic. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Fichier ouvert? Dim 2 Jan 2011 - 16:58 | |
| Tu es gâté cosmos, une belle DLL toute neuve pour tes étrennes ! | |
| | | Invité Invité
| Sujet: Re: Fichier ouvert? Dim 2 Jan 2011 - 19:46 | |
| Faire et défaire, c'est toujours du travail.
Tout à l'heure j'ai répondu, et je vois à l'instant qu'il n'y a rien. J'ai pas du assez boire. En voyant double, j'aurai peut-être vu mon message!
La dll j'ai pas pu la télécharger tout à l'heure. Un message du genre: adresse introuvable pour le téléchargement.
Je pense que cette dll pourra un moment ou un autre servir à d'autres. Il n'y a jamais assez de commandes. Pour preuve, je vois encore des demandes d'amélioration. A un moment ou un autre, tout tel et tel programme, on se dit: Ah! si il y avait celà! Jamais satisfait.
Je remercie Klaus, pour sa gentillette, et pour sa rapidité. Le problème de téléchargement sera résolu à un moment ou un autre.
Merci Klaus! |
| | | Invité Invité
| Sujet: Re: Fichier ouvert? Dim 2 Jan 2011 - 22:35 | |
| Je viens de revoir pour télécharger. Cela ne marche pas. le lien que j'ai noté: klaus.panoramic.voila.net/files/dll-divers.37.zip avec page introuvable Pour les autres, on a la fenêtre de winzip pour télécharger, et cela fonctionne, mais le lien est nettement différent (fin: html et non zip) |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fichier ouvert? Dim 2 Jan 2011 - 23:29 | |
| Oui, il y a un problème avec mon hébergeur. Mais il y a une solution: passe en version anglaise - le lien est bon et tu peux télécharger sans problème. Je verrai de mon côté pourquoi cela ne marche pas en version française... Désolé.
EDIT
C'est corrigé en version française. Je n'ai pas compris ce qui s'est passé - j'ai simplement rechargé la page HTML correspondante, et ça marche. Bizarre... | |
| | | Invité Invité
| Sujet: Re: Fichier ouvert? Lun 3 Jan 2011 - 0:20 | |
| Je viens de réussir. Mais le site français pour cette dll ne marche pas, j'ai été sur le forum anglais.
"Vachement" bien pratique, mine de rien cette DLL. J'ai eu du mal avec au début, car la fonction n'accepte pas un string comme nom de fenêtre. Cela ne fonctionne qu'avec une variable string.
Sympa de ta part. merci |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fichier ouvert? Lun 3 Jan 2011 - 0:32 | |
| Si, j'ai vérifié: le site français marche aussi, maintenant.
Pour le nom en string, je n'y peux rien: Panoramic ne sait que passer des entiers 32 bits aux DLL, en tant que paramètres. On est donc obligé de passer l'adresse par la fonction adr(). Et cette fonction n'accepte qu'une variable en paramètre, pas une constante string. C'est dans la définition de la fonction: dim nom$ : nom$ = "abc" : print adr(nom$) : ' ça marche print adr("abc") : ' cà ne marche pas - Panoramic trouve "Not correct arithmetic expression
Mais c'est le même mécanisme pour toutes les fonctions DLL, en particulier celles que j'ai faites pour d'autres DLL.
| |
| | | Invité Invité
| Sujet: Re: Fichier ouvert? Lun 3 Jan 2011 - 8:33 | |
| Bonjour, J'ai jamais pensé qu'il y avait une erreur dans ta dll, mais merci pour le renseignement. Au vu de ta dll, j'ai essayé d'adapter selon ce que je listais, et comme en basic, une texte ou une variable qui la représente c'est la même chose, je n'ai pas été plus loin dans la réflection. Mais ici c'est obligatoire que cela soit faux, vu que adr( ), c'est l'adresse de la variable! Petite réflexion, en rapport avec des demandes concernant les fenêtres, savoir si elles avaient étées fermées ou non: - Code:
-
dir_change "G:\DOCUME~1" dim handle_programme%,prog1$ : label teste , ferme prog1$ = "teste de la forme"
form 1 :left 1,700:caption 1,"teste de la forme" button 2:left 2, 10:caption 2,"teste" :on_click 2,teste button 3:left 3,150:caption 3,"supprime":on_click 3,ferme
end teste: dll_on "IsRunning.dll" handle_programme% = dll_call1( "IsProgramRunning" , adr(prog1$) ) : dll_off message "teste de la forme:"+str$(handle_programme%) if handle_programme%>0 then show 1 return
ferme: dll_on "IsRunning.dll" handle_programme% = dll_call1( "IsProgramRunning" , adr(prog1$) ) : dll_off if handle_programme%>0 then delete 1 return Je n'ai pas besoin pour ma part de ce qui suit: Si tu peux savoir si une fenêtre est ouverte ou non, peux-tu aussi savoir si elle minimisée. (en rapport à des questions récentes) |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fichier ouvert? Lun 3 Jan 2011 - 11:39 | |
| Malheureusement, on ne peut pas s'en servir pour tester une fenêtre "fille" en Panoramic. Ma routine marche sur le fenêtre principale d'un processus Windows, et en Panoramic, cela correspond à le form 0. en fait, cela correspond aux fenêtres qui sont visibles dans la barre de tâches.
Mais dans le cadre d'une autre réflexion, j'ai vu l'angle d'attaque pour résoudre le problème d'interception de l'évènement de fermeture d'une fenêtre quelle qu'elle soit, et par le même mécanisme, je pourrai intercepter les évènements "minimiser", "maximiser", "normaliser", "changement de taille", "déplacement de la fenêtre" etc. C'est en cours, mais pas encore opérationnel. | |
| | | Invité Invité
| Sujet: Re: Fichier ouvert? Lun 3 Jan 2011 - 15:53 | |
| Par contre ta dll permet de savoir si la fenêtre "fille" existe encore, et mon programme le montre. Je ne suis pas sûr, mais il me semble que c'est une question qui a été posée. Si cette question a belle et bien été posée, alors le problème est résolu.
Dans le cas contraire, si la fenêtre existe, un simple show résous le problème. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Fichier ouvert? Lun 3 Jan 2011 - 16:24 | |
| Ah oui, je vous avec plaisir que tu as trouvé une utilisation à ma DLL que je ne soupçonnais pas ! On peut effectivement tester si une fenêtre Panoramic existe ou non, bien qu'on ne puisse pas distinguer si elle est minimisée, maximisée ou normale. Dans la distribution mise en ligne, j'ai modifié le programme de démo pour montrer cette possibilité.
| |
| | | Contenu sponsorisé
| Sujet: Re: Fichier ouvert? | |
| |
| | | | Fichier ouvert? | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |