Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » [RESOLU] Récupération du nom d'un fichier Word ouvert
  • 1 évaluations, moyenne 5

#1 08-10-2008 09:11:57

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

[RESOLU] Récupération du nom d'un fichier Word ouvert

Bonjour,

est-il possible de récupérer le nom d'un fichier affiché au dessus de la barre de menu dans Word ?

http://img529.imageshack.us/img529/3967/sanstitrefy1.jpg


j'ai testé avec ceci mais rien ne se passe :

Code: pb

 long ll_cumul, ll_cpt, ll_hDesktop, ll_hChild, ll_handle[], ll_pos
string ls_ClassName, ls_WindowName, ls_class[], ls_window[], ls_word
CONSTANT uint WM_QUIT = 18

ll_cumul = 0 

// handle du bureau de window 
ll_hDesktop = GetDesktopWindow() 

// handle du 1er tache window 
ll_hChild = GetWindow( ll_hDesktop, 5 ) 

DO WHILE (ll_hChild > 0) 

  ls_ClassName = Space(255) 
  ls_WindowName = Space(255) 
  // window classname 
  GetClassNameA( ll_hChild, ls_ClassName, 255 ) 
  // window text 
  GetWindowTextA( ll_hChild, ls_WindowName, 255 ) 
  
  ll_cumul ++ 
  ls_class[ll_cumul] = ls_ClassName 
  ls_window[ll_cumul] = ls_WindowName 
  ll_handle[ll_cumul] = ll_hChild 
  
  // handle suivant d'une tache window 
  ll_hChild = GetWindow( ll_hChild, 2 ) 
LOOP 

ls_word = 'Document1'

ll_cumul = upperbound(ls_Class) 
// regarde si on trouve au moins un nom de fenetre qui ressemble à 'Lettres types1 - Microsoft Word' 
FOR ll_cpt = 1 TO ll_cumul 
  ll_pos = Pos(lower(ls_window[ll_cpt]), ls_word) 
  IF ll_pos > 0 THEN
    EXIT
  END IF
NEXT

IF ll_pos > 0 THEN
  // fermeture de docubase
  PostMessageA(ll_handle[ll_cpt], WM_QUIT, 0, 0) 
END IF



Cordialement

Dernière modification par julien (10-10-2008 12:01:31)

Hors ligne

 

#2 08-10-2008 11:57:58

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: [RESOLU] Récupération du nom d'un fichier Word ouvert

Je crois qu'une piste de solution se trouve dans l'aide de la méthode Handle() :

A déclarer dans le global external functions :

Code: pb

// Trouver une fenêtre
PUBLIC FUNCTION unsignedlong FindWindow (long  &
   classname, string windowname) LIBRARY "user32.dll" &
   ALIAS FOR FindWindowW

// Mettre une fenêtre au premier plan - Ca peut toujours être utile...
PUBLIC FUNCTION int SetForegroundWindow (unsignedlong &
   hwnd) LIBRARY "user32.dll" ALIAS FOR  &
   SetForegroundWindowW


Code utilisé pour rechercher la fenêtre en question :

Code: pb

unsignedlong hwnd
hwnd = FindWindow( 0, "Document1") // ou "Word"

if hwnd = 0 then
   // pas trouvée
else
   // trouvée
end if

Hors ligne

 

#3 08-10-2008 12:17:44

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Récupération du nom d'un fichier Word ouvert

je viens de tester,

hwnd est toujours égal à 0
j'ai testé avec tous les noms possible de la fenêtre (je pense ! )

Hors ligne

 

#4 08-10-2008 12:30:38

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Récupération du nom d'un fichier Word ouvert

si c'est bon, il fallait mettre : "Document1 - Microsoft Word"

Merci Nyphel, maintenant, il faut que j'arrive à fermer cette fenêtre !

Hors ligne

 

#5 08-10-2008 13:24:50

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Récupération du nom d'un fichier Word ouvert

A quoi correspond le chiffre récupéré dans hwnd ?

Hors ligne

 

#6 08-10-2008 13:27:47

Cortex  
Modérateur
Lieu: Arlon
Date d'inscription: 08-02-2008
Messages: 194
Pépites: 6,904
Banque: 2,109,818,425,070

Re: [RESOLU] Récupération du nom d'un fichier Word ouvert

Hé bien c'est le handle de la windows que tu cherches. Et si tu ne sais pas ce que c'est, c'est un long qui identifie de manière unique une fenêtre par rapport à Windows, et qui es utilisé par les méthodes de l'API Microsoft...

Hors ligne

 

#7 08-10-2008 13:27:47

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] Récupération du nom d'un fichier Word ouvert

utilises cette fonction...

Code: pb

FUNCTION boolean CloseHandle(ulong w_handle) LIBRARY "Kernel32.dll"

Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#8 08-10-2008 13:59:39

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Récupération du nom d'un fichier Word ouvert

le boolean que me retourne cette fonction est toujours "false" et la fenetre ne se ferme pas, d'où cela peut il venir ?

cordialement

Hors ligne

 

#9 08-10-2008 14:04:45

Cortex  
Modérateur
Lieu: Arlon
Date d'inscription: 08-02-2008
Messages: 194
Pépites: 6,904
Banque: 2,109,818,425,070

Re: [RESOLU] Récupération du nom d'un fichier Word ouvert

En fait, utilise plutôt:

Code: pb

FUNCTION boolean DestroyWindow(ulong hWnd) LIBRARY "user32.dll"

Hors ligne

 

#10 08-10-2008 14:09:40

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Récupération du nom d'un fichier Word ouvert

j'obtiens toujours le même résultat
boolean = "false"

Code: pb

unsignedlong hwnd
  boolean result
  hwnd = FindWindow( 0, "Lettres types1 - Microsoft Word")
  
  IF hwnd <> 0 THEN
    result = DestroyWindow(hwnd)
  END IF

messagebox("test", result)

Dernière modification par julien (08-10-2008 14:11:16)

Hors ligne

 

#11 08-10-2008 14:46:15

Cortex  
Modérateur
Lieu: Arlon
Date d'inscription: 08-02-2008
Messages: 194
Pépites: 6,904
Banque: 2,109,818,425,070

Re: [RESOLU] Récupération du nom d'un fichier Word ouvert

Mouais...

Alors essaies:

Code: pb

send(hwnd, 256, 0, 0)   // 256 = WM_CLOSE

Si ça marche pas, je sais pas.

Hors ligne

 

#12 08-10-2008 15:01:30

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Récupération du nom d'un fichier Word ouvert

es tu sur pour le 256 ?
car cela ne ferme pas la fenetre, par contre lorsque je reprend ce qui est dans l'aide pour minimizer une fenetre, ca la minimize bien :

Code: pb

send(hwnd, 274, 61472, 0)

Dernière modification par julien (08-10-2008 15:04:54)

Hors ligne

 

#13 08-10-2008 15:08:37

Cortex  
Modérateur
Lieu: Arlon
Date d'inscription: 08-02-2008
Messages: 194
Pépites: 6,904
Banque: 2,109,818,425,070

Re: [RESOLU] Récupération du nom d'un fichier Word ouvert

Je crois avoir converti 0x100 (=256) au lieu de 0x10 (=16)...

Déso

Hors ligne

 

#14 10-10-2008 12:01:16

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Récupération du nom d'un fichier Word ouvert

oui c'est bon, ca fonctionne avec 16 !

merci beaucoup Cortex !

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » [RESOLU] Récupération du nom d'un fichier Word ouvert
  • 1 évaluations, moyenne 5

Pied de page des forums

Propulsé par FluxBB 1.2.22