-----Message d'origine-----
Salut,
il ne faut pas prendre 0 ni quelque chose
d'aléatoire, mais bien
Application.hWndAccessApp :
Dim str As string
str="Allo" & Chr(0)
SetWindowText Application.hWndAccessApp , str
Chaque fois qu'on ouvre Access, la fenêtre est
différente et possède donc
son ID unique, qu'Access nous retourne gracieusement dans
Application.hWndAccessApp .
Espérant être utile,
Vanderghast, Access MVP
"phil" wrote in
message
news:642c01c3e677$45571ee0$
AU SECOURS !!!
J'ai voulu essayer, en écrivant exactement ça :
Private Declare Function GetWindowText Lib "user32"
Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString
As String, ByVal cch As Long) As Long
Private Declare Function SetWindowText Lib "user32"
Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString
As String) As Long
Private Sub Commande0_Click()
msgbox(GetWindowText(0, dbtext, 255))
SetWindowText cpt, "lu"
RefreshTitleBar
End Sub
et ça n'a pas marché : le msgbox renvoie 0, et le
setwindowtext ne fait rien...
Je me suis dit qu'il fallait essayer avec un autre hwnd,
et j'ai mis une boucle For cpt=0 to 1000 ... Next
Toutes mes pages internet et mes dossiers ont pris le
nom "lu" !!!!!!!!!!
Mais bien sur, pas ma base access.
C'est le sort qui s'acharne sur moi, ou alors est-ce que
je suis passe a cote de quelquechose ?-----Message d'origine-----
Merci Michel pour ces précisions. je vais les garder
précieusement...
En ce qui concerne le hWnd, j'enrage !!!
En effet, la solution était 0 ! Et moi, j'ai testé avec
unFor Next toutes les possibilités de 1 a 32767 (avec
gestion d'erreurs, bien sur... Access ne m'aurait prévenu
que si ca fonctionnait). J'ai l'habitude de faire des
compteurs (Dans les For... Next) de 1 à X, alors j'ai
oublié le 0 !!!!!!
Merci beaucoup à toi et à 3Stone... je vais essayer
d'appliquer ma première solution avec ce que tu m'a
dis...
-----Message d'origine-----
Salut,
Tu as déjà trouvé une solution au problème initial,
mais quant auproblème rencontré, dans une de tes tentatives,
puisqu'ilpeut se rencontrerà nouveau, dans le futur... je me permet...
Il y a DEUX problèmes.
Utiliser Application.hWndAccessApp comme valeur de
hWnd (windowhandle). Chaque fenêtre possède une carte d'identité, un
ID, qu'on appellefamiliarement un hWnd. Quand tu utilisais 100, c'était
peut-être le ID de,je ne sais trop, le sixième bouton de la barre qui
apparaît avec "démarrer"| "programmes"... ou quoique ce soit d'autre. En effet,
seul le hwnd 0 aune signification immuable, cela refère "au système".
Lesautres valeurs dehwnd dépendent de l'historique depuis le démarrage du
PC.
Utiliser l'alias "A" (pour ANSI, ou ASCII, je ne me
souviens plusexactement) avec toutes les fonctions API qui
travaillentavec des chaînesde caractères. En effet, VB et VBA ne sont pas très à
l'aise avec duUnicode, la version non-A, qui est la version par défaut
sur Win32, donc, ilfaut "alias-er" (si il y a des chaînes), en général,
comme suit, avecVB/VBA, pour utiliser la version "A" (tiré de All-API,
www.allapi.net) :
Private Declare Function GetWindowText Lib "user32"
Alias "GetWindowTextA"(ByVal hwnd As Long, ByVal lpString As String, ByVal cch
As Long) As Long
Private Declare Function SetWindowText Lib "user32"
Alias "SetWindowTextA"(ByVal hwnd As Long, ByVal lpString As String) As Long
Sûr, si le "ID", le hWnd spécifié, est quelque
chose qui n'a pas de"barre titre", évidemment, cela risque de planter
(surtout le Set) carautrement, ce serait potentiellement une porte d'entrée
pour les hackers etvirus.
Espérant être utile,
Vanderghast, Access MVP
"phil" wrote in
messagenews:665901c3e63a$3d19d2a0$
Bonjour
J'avais déjà posé cette question sur le forum, mais elle
est restée sans reponse :
Avec access, je voudrais pouvoir modifier le titre de
mon
application. je connaissais déjà la solution manuelle :
Outils/Demarrage/Titre de l'application.
Mais ce que je voudrais, c'est que la valeur de ce titre
puisse etre changee en fonction d'une variable, ou en
fonction d'un enregistrement dans une table... MEME
TEMPORAIREMENT !
Ce que je voudrais, c'est pouvoir modifier ce titre avec
du VBA.
J'ai trouve sur Internet ces solutions pour modifier et
lire le titre de l'application :
Private Declare Function GetWindowText Lib "User32"
(ByValWindowHandle As Integer, ByVal Buffer As String, ByVal
Size As Integer) As Integer
Private Declare Sub SetWindowText Lib "User32" (ByVal
WindowHandle As Integer, ByVal Title As String)
Mais je ne sais pas comment l'appeler...
J'ai essayé comme ca (copié sur une autre fonction du
memestyle) :
Dim tmp$
tmp = String(255, " ")
MsgBox (GetWindowText(100, tmp, 255))
SetWindowText 100, "lu"
MAIS :
Erreur d'exécution 453 : Point d'entree GetWindowText
d'une DLL introuvable dans User32
OU EST MON ERREUR ?
A noter que c'est peut-etre a cause du 100 : j'ai
vraimentmis n'importe quel entier... mais lequel choisir ?
SI VOUS POUVIEZ M'AIDER... CE SERAIT BIEN SYMPA !!!
.
.
.
-----Message d'origine-----
Salut,
il ne faut pas prendre 0 ni quelque chose
d'aléatoire, mais bien
Application.hWndAccessApp :
Dim str As string
str="Allo" & Chr(0)
SetWindowText Application.hWndAccessApp , str
Chaque fois qu'on ouvre Access, la fenêtre est
différente et possède donc
son ID unique, qu'Access nous retourne gracieusement dans
Application.hWndAccessApp .
Espérant être utile,
Vanderghast, Access MVP
"phil" <anonymous@discussions.microsoft.com> wrote in
message
news:642c01c3e677$45571ee0$a101280a@phx.gbl...
AU SECOURS !!!
J'ai voulu essayer, en écrivant exactement ça :
Private Declare Function GetWindowText Lib "user32"
Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString
As String, ByVal cch As Long) As Long
Private Declare Function SetWindowText Lib "user32"
Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString
As String) As Long
Private Sub Commande0_Click()
msgbox(GetWindowText(0, dbtext, 255))
SetWindowText cpt, "lu"
RefreshTitleBar
End Sub
et ça n'a pas marché : le msgbox renvoie 0, et le
setwindowtext ne fait rien...
Je me suis dit qu'il fallait essayer avec un autre hwnd,
et j'ai mis une boucle For cpt=0 to 1000 ... Next
Toutes mes pages internet et mes dossiers ont pris le
nom "lu" !!!!!!!!!!
Mais bien sur, pas ma base access.
C'est le sort qui s'acharne sur moi, ou alors est-ce que
je suis passe a cote de quelquechose ?
-----Message d'origine-----
Merci Michel pour ces précisions. je vais les garder
précieusement...
En ce qui concerne le hWnd, j'enrage !!!
En effet, la solution était 0 ! Et moi, j'ai testé avec
un
For Next toutes les possibilités de 1 a 32767 (avec
gestion d'erreurs, bien sur... Access ne m'aurait prévenu
que si ca fonctionnait). J'ai l'habitude de faire des
compteurs (Dans les For... Next) de 1 à X, alors j'ai
oublié le 0 !!!!!!
Merci beaucoup à toi et à 3Stone... je vais essayer
d'appliquer ma première solution avec ce que tu m'a
dis...
-----Message d'origine-----
Salut,
Tu as déjà trouvé une solution au problème initial,
mais quant au
problème rencontré, dans une de tes tentatives,
puisqu'il
peut se rencontrer
à nouveau, dans le futur... je me permet...
Il y a DEUX problèmes.
Utiliser Application.hWndAccessApp comme valeur de
hWnd (window
handle). Chaque fenêtre possède une carte d'identité, un
ID, qu'on appelle
familiarement un hWnd. Quand tu utilisais 100, c'était
peut-être le ID de,
je ne sais trop, le sixième bouton de la barre qui
apparaît avec "démarrer"
| "programmes"... ou quoique ce soit d'autre. En effet,
seul le hwnd 0 a
une signification immuable, cela refère "au système".
Les
autres valeurs de
hwnd dépendent de l'historique depuis le démarrage du
PC.
Utiliser l'alias "A" (pour ANSI, ou ASCII, je ne me
souviens plus
exactement) avec toutes les fonctions API qui
travaillent
avec des chaînes
de caractères. En effet, VB et VBA ne sont pas très à
l'aise avec du
Unicode, la version non-A, qui est la version par défaut
sur Win32, donc, il
faut "alias-er" (si il y a des chaînes), en général,
comme suit, avec
VB/VBA, pour utiliser la version "A" (tiré de All-API,
www.allapi.net) :
Private Declare Function GetWindowText Lib "user32"
Alias "GetWindowTextA"
(ByVal hwnd As Long, ByVal lpString As String, ByVal cch
As Long) As Long
Private Declare Function SetWindowText Lib "user32"
Alias "SetWindowTextA"
(ByVal hwnd As Long, ByVal lpString As String) As Long
Sûr, si le "ID", le hWnd spécifié, est quelque
chose qui n'a pas de
"barre titre", évidemment, cela risque de planter
(surtout le Set) car
autrement, ce serait potentiellement une porte d'entrée
pour les hackers et
virus.
Espérant être utile,
Vanderghast, Access MVP
"phil" <anonymous@discussions.microsoft.com> wrote in
message
news:665901c3e63a$3d19d2a0$a501280a@phx.gbl...
Bonjour
J'avais déjà posé cette question sur le forum, mais elle
est restée sans reponse :
Avec access, je voudrais pouvoir modifier le titre de
mon
application. je connaissais déjà la solution manuelle :
Outils/Demarrage/Titre de l'application.
Mais ce que je voudrais, c'est que la valeur de ce titre
puisse etre changee en fonction d'une variable, ou en
fonction d'un enregistrement dans une table... MEME
TEMPORAIREMENT !
Ce que je voudrais, c'est pouvoir modifier ce titre avec
du VBA.
J'ai trouve sur Internet ces solutions pour modifier et
lire le titre de l'application :
Private Declare Function GetWindowText Lib "User32"
(ByVal
WindowHandle As Integer, ByVal Buffer As String, ByVal
Size As Integer) As Integer
Private Declare Sub SetWindowText Lib "User32" (ByVal
WindowHandle As Integer, ByVal Title As String)
Mais je ne sais pas comment l'appeler...
J'ai essayé comme ca (copié sur une autre fonction du
meme
style) :
Dim tmp$
tmp = String(255, " ")
MsgBox (GetWindowText(100, tmp, 255))
SetWindowText 100, "lu"
MAIS :
Erreur d'exécution 453 : Point d'entree GetWindowText
d'une DLL introuvable dans User32
OU EST MON ERREUR ?
A noter que c'est peut-etre a cause du 100 : j'ai
vraiment
mis n'importe quel entier... mais lequel choisir ?
SI VOUS POUVIEZ M'AIDER... CE SERAIT BIEN SYMPA !!!
.
.
.
-----Message d'origine-----
Salut,
il ne faut pas prendre 0 ni quelque chose
d'aléatoire, mais bien
Application.hWndAccessApp :
Dim str As string
str="Allo" & Chr(0)
SetWindowText Application.hWndAccessApp , str
Chaque fois qu'on ouvre Access, la fenêtre est
différente et possède donc
son ID unique, qu'Access nous retourne gracieusement dans
Application.hWndAccessApp .
Espérant être utile,
Vanderghast, Access MVP
"phil" wrote in
message
news:642c01c3e677$45571ee0$
AU SECOURS !!!
J'ai voulu essayer, en écrivant exactement ça :
Private Declare Function GetWindowText Lib "user32"
Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString
As String, ByVal cch As Long) As Long
Private Declare Function SetWindowText Lib "user32"
Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString
As String) As Long
Private Sub Commande0_Click()
msgbox(GetWindowText(0, dbtext, 255))
SetWindowText cpt, "lu"
RefreshTitleBar
End Sub
et ça n'a pas marché : le msgbox renvoie 0, et le
setwindowtext ne fait rien...
Je me suis dit qu'il fallait essayer avec un autre hwnd,
et j'ai mis une boucle For cpt=0 to 1000 ... Next
Toutes mes pages internet et mes dossiers ont pris le
nom "lu" !!!!!!!!!!
Mais bien sur, pas ma base access.
C'est le sort qui s'acharne sur moi, ou alors est-ce que
je suis passe a cote de quelquechose ?-----Message d'origine-----
Merci Michel pour ces précisions. je vais les garder
précieusement...
En ce qui concerne le hWnd, j'enrage !!!
En effet, la solution était 0 ! Et moi, j'ai testé avec
unFor Next toutes les possibilités de 1 a 32767 (avec
gestion d'erreurs, bien sur... Access ne m'aurait prévenu
que si ca fonctionnait). J'ai l'habitude de faire des
compteurs (Dans les For... Next) de 1 à X, alors j'ai
oublié le 0 !!!!!!
Merci beaucoup à toi et à 3Stone... je vais essayer
d'appliquer ma première solution avec ce que tu m'a
dis...
-----Message d'origine-----
Salut,
Tu as déjà trouvé une solution au problème initial,
mais quant auproblème rencontré, dans une de tes tentatives,
puisqu'ilpeut se rencontrerà nouveau, dans le futur... je me permet...
Il y a DEUX problèmes.
Utiliser Application.hWndAccessApp comme valeur de
hWnd (windowhandle). Chaque fenêtre possède une carte d'identité, un
ID, qu'on appellefamiliarement un hWnd. Quand tu utilisais 100, c'était
peut-être le ID de,je ne sais trop, le sixième bouton de la barre qui
apparaît avec "démarrer"| "programmes"... ou quoique ce soit d'autre. En effet,
seul le hwnd 0 aune signification immuable, cela refère "au système".
Lesautres valeurs dehwnd dépendent de l'historique depuis le démarrage du
PC.
Utiliser l'alias "A" (pour ANSI, ou ASCII, je ne me
souviens plusexactement) avec toutes les fonctions API qui
travaillentavec des chaînesde caractères. En effet, VB et VBA ne sont pas très à
l'aise avec duUnicode, la version non-A, qui est la version par défaut
sur Win32, donc, ilfaut "alias-er" (si il y a des chaînes), en général,
comme suit, avecVB/VBA, pour utiliser la version "A" (tiré de All-API,
www.allapi.net) :
Private Declare Function GetWindowText Lib "user32"
Alias "GetWindowTextA"(ByVal hwnd As Long, ByVal lpString As String, ByVal cch
As Long) As Long
Private Declare Function SetWindowText Lib "user32"
Alias "SetWindowTextA"(ByVal hwnd As Long, ByVal lpString As String) As Long
Sûr, si le "ID", le hWnd spécifié, est quelque
chose qui n'a pas de"barre titre", évidemment, cela risque de planter
(surtout le Set) carautrement, ce serait potentiellement une porte d'entrée
pour les hackers etvirus.
Espérant être utile,
Vanderghast, Access MVP
"phil" wrote in
messagenews:665901c3e63a$3d19d2a0$
Bonjour
J'avais déjà posé cette question sur le forum, mais elle
est restée sans reponse :
Avec access, je voudrais pouvoir modifier le titre de
mon
application. je connaissais déjà la solution manuelle :
Outils/Demarrage/Titre de l'application.
Mais ce que je voudrais, c'est que la valeur de ce titre
puisse etre changee en fonction d'une variable, ou en
fonction d'un enregistrement dans une table... MEME
TEMPORAIREMENT !
Ce que je voudrais, c'est pouvoir modifier ce titre avec
du VBA.
J'ai trouve sur Internet ces solutions pour modifier et
lire le titre de l'application :
Private Declare Function GetWindowText Lib "User32"
(ByValWindowHandle As Integer, ByVal Buffer As String, ByVal
Size As Integer) As Integer
Private Declare Sub SetWindowText Lib "User32" (ByVal
WindowHandle As Integer, ByVal Title As String)
Mais je ne sais pas comment l'appeler...
J'ai essayé comme ca (copié sur une autre fonction du
memestyle) :
Dim tmp$
tmp = String(255, " ")
MsgBox (GetWindowText(100, tmp, 255))
SetWindowText 100, "lu"
MAIS :
Erreur d'exécution 453 : Point d'entree GetWindowText
d'une DLL introuvable dans User32
OU EST MON ERREUR ?
A noter que c'est peut-etre a cause du 100 : j'ai
vraimentmis n'importe quel entier... mais lequel choisir ?
SI VOUS POUVIEZ M'AIDER... CE SERAIT BIEN SYMPA !!!
.
.
.
-----Message d'origine-----
Salut,
il ne faut pas prendre 0 ni quelque chose
d'aléatoire, mais bien
Application.hWndAccessApp :
Dim str As string
str="Allo" & Chr(0)
SetWindowText Application.hWndAccessApp , str
Chaque fois qu'on ouvre Access, la fenêtre est
différente et possède donc
son ID unique, qu'Access nous retourne gracieusement dans
Application.hWndAccessApp .
Espérant être utile,
Vanderghast, Access MVP
"phil" wrote in
message
news:642c01c3e677$45571ee0$
AU SECOURS !!!
J'ai voulu essayer, en écrivant exactement ça :
Private Declare Function GetWindowText Lib "user32"
Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString
As String, ByVal cch As Long) As Long
Private Declare Function SetWindowText Lib "user32"
Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString
As String) As Long
Private Sub Commande0_Click()
msgbox(GetWindowText(0, dbtext, 255))
SetWindowText cpt, "lu"
RefreshTitleBar
End Sub
et ça n'a pas marché : le msgbox renvoie 0, et le
setwindowtext ne fait rien...
Je me suis dit qu'il fallait essayer avec un autre hwnd,
et j'ai mis une boucle For cpt=0 to 1000 ... Next
Toutes mes pages internet et mes dossiers ont pris le
nom "lu" !!!!!!!!!!
Mais bien sur, pas ma base access.
C'est le sort qui s'acharne sur moi, ou alors est-ce que
je suis passe a cote de quelquechose ?-----Message d'origine-----
Merci Michel pour ces précisions. je vais les garder
précieusement...
En ce qui concerne le hWnd, j'enrage !!!
En effet, la solution était 0 ! Et moi, j'ai testé avec
unFor Next toutes les possibilités de 1 a 32767 (avec
gestion d'erreurs, bien sur... Access ne m'aurait prévenu
que si ca fonctionnait). J'ai l'habitude de faire des
compteurs (Dans les For... Next) de 1 à X, alors j'ai
oublié le 0 !!!!!!
Merci beaucoup à toi et à 3Stone... je vais essayer
d'appliquer ma première solution avec ce que tu m'a
dis...
-----Message d'origine-----
Salut,
Tu as déjà trouvé une solution au problème initial,
mais quant auproblème rencontré, dans une de tes tentatives,
puisqu'ilpeut se rencontrerà nouveau, dans le futur... je me permet...
Il y a DEUX problèmes.
Utiliser Application.hWndAccessApp comme valeur de
hWnd (windowhandle). Chaque fenêtre possède une carte d'identité, un
ID, qu'on appellefamiliarement un hWnd. Quand tu utilisais 100, c'était
peut-être le ID de,je ne sais trop, le sixième bouton de la barre qui
apparaît avec "démarrer"| "programmes"... ou quoique ce soit d'autre. En effet,
seul le hwnd 0 aune signification immuable, cela refère "au système".
Lesautres valeurs dehwnd dépendent de l'historique depuis le démarrage du
PC.
Utiliser l'alias "A" (pour ANSI, ou ASCII, je ne me
souviens plusexactement) avec toutes les fonctions API qui
travaillentavec des chaînesde caractères. En effet, VB et VBA ne sont pas très à
l'aise avec duUnicode, la version non-A, qui est la version par défaut
sur Win32, donc, ilfaut "alias-er" (si il y a des chaînes), en général,
comme suit, avecVB/VBA, pour utiliser la version "A" (tiré de All-API,
www.allapi.net) :
Private Declare Function GetWindowText Lib "user32"
Alias "GetWindowTextA"(ByVal hwnd As Long, ByVal lpString As String, ByVal cch
As Long) As Long
Private Declare Function SetWindowText Lib "user32"
Alias "SetWindowTextA"(ByVal hwnd As Long, ByVal lpString As String) As Long
Sûr, si le "ID", le hWnd spécifié, est quelque
chose qui n'a pas de"barre titre", évidemment, cela risque de planter
(surtout le Set) carautrement, ce serait potentiellement une porte d'entrée
pour les hackers etvirus.
Espérant être utile,
Vanderghast, Access MVP
"phil" wrote in
messagenews:665901c3e63a$3d19d2a0$
Bonjour
J'avais déjà posé cette question sur le forum, mais elle
est restée sans reponse :
Avec access, je voudrais pouvoir modifier le titre de
mon
application. je connaissais déjà la solution manuelle :
Outils/Demarrage/Titre de l'application.
Mais ce que je voudrais, c'est que la valeur de ce titre
puisse etre changee en fonction d'une variable, ou en
fonction d'un enregistrement dans une table... MEME
TEMPORAIREMENT !
Ce que je voudrais, c'est pouvoir modifier ce titre avec
du VBA.
J'ai trouve sur Internet ces solutions pour modifier et
lire le titre de l'application :
Private Declare Function GetWindowText Lib "User32"
(ByValWindowHandle As Integer, ByVal Buffer As String, ByVal
Size As Integer) As Integer
Private Declare Sub SetWindowText Lib "User32" (ByVal
WindowHandle As Integer, ByVal Title As String)
Mais je ne sais pas comment l'appeler...
J'ai essayé comme ca (copié sur une autre fonction du
memestyle) :
Dim tmp$
tmp = String(255, " ")
MsgBox (GetWindowText(100, tmp, 255))
SetWindowText 100, "lu"
MAIS :
Erreur d'exécution 453 : Point d'entree GetWindowText
d'une DLL introuvable dans User32
OU EST MON ERREUR ?
A noter que c'est peut-etre a cause du 100 : j'ai
vraimentmis n'importe quel entier... mais lequel choisir ?
SI VOUS POUVIEZ M'AIDER... CE SERAIT BIEN SYMPA !!!
.
.
.
-----Message d'origine-----
Salut,
il ne faut pas prendre 0 ni quelque chose
d'aléatoire, mais bien
Application.hWndAccessApp :
Dim str As string
str="Allo" & Chr(0)
SetWindowText Application.hWndAccessApp , str
Chaque fois qu'on ouvre Access, la fenêtre est
différente et possède donc
son ID unique, qu'Access nous retourne gracieusement dans
Application.hWndAccessApp .
Espérant être utile,
Vanderghast, Access MVP
"phil" <anonymous@discussions.microsoft.com> wrote in
message
news:642c01c3e677$45571ee0$a101280a@phx.gbl...
AU SECOURS !!!
J'ai voulu essayer, en écrivant exactement ça :
Private Declare Function GetWindowText Lib "user32"
Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString
As String, ByVal cch As Long) As Long
Private Declare Function SetWindowText Lib "user32"
Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString
As String) As Long
Private Sub Commande0_Click()
msgbox(GetWindowText(0, dbtext, 255))
SetWindowText cpt, "lu"
RefreshTitleBar
End Sub
et ça n'a pas marché : le msgbox renvoie 0, et le
setwindowtext ne fait rien...
Je me suis dit qu'il fallait essayer avec un autre hwnd,
et j'ai mis une boucle For cpt=0 to 1000 ... Next
Toutes mes pages internet et mes dossiers ont pris le
nom "lu" !!!!!!!!!!
Mais bien sur, pas ma base access.
C'est le sort qui s'acharne sur moi, ou alors est-ce que
je suis passe a cote de quelquechose ?
-----Message d'origine-----
Merci Michel pour ces précisions. je vais les garder
précieusement...
En ce qui concerne le hWnd, j'enrage !!!
En effet, la solution était 0 ! Et moi, j'ai testé avec
un
For Next toutes les possibilités de 1 a 32767 (avec
gestion d'erreurs, bien sur... Access ne m'aurait prévenu
que si ca fonctionnait). J'ai l'habitude de faire des
compteurs (Dans les For... Next) de 1 à X, alors j'ai
oublié le 0 !!!!!!
Merci beaucoup à toi et à 3Stone... je vais essayer
d'appliquer ma première solution avec ce que tu m'a
dis...
-----Message d'origine-----
Salut,
Tu as déjà trouvé une solution au problème initial,
mais quant au
problème rencontré, dans une de tes tentatives,
puisqu'il
peut se rencontrer
à nouveau, dans le futur... je me permet...
Il y a DEUX problèmes.
Utiliser Application.hWndAccessApp comme valeur de
hWnd (window
handle). Chaque fenêtre possède une carte d'identité, un
ID, qu'on appelle
familiarement un hWnd. Quand tu utilisais 100, c'était
peut-être le ID de,
je ne sais trop, le sixième bouton de la barre qui
apparaît avec "démarrer"
| "programmes"... ou quoique ce soit d'autre. En effet,
seul le hwnd 0 a
une signification immuable, cela refère "au système".
Les
autres valeurs de
hwnd dépendent de l'historique depuis le démarrage du
PC.
Utiliser l'alias "A" (pour ANSI, ou ASCII, je ne me
souviens plus
exactement) avec toutes les fonctions API qui
travaillent
avec des chaînes
de caractères. En effet, VB et VBA ne sont pas très à
l'aise avec du
Unicode, la version non-A, qui est la version par défaut
sur Win32, donc, il
faut "alias-er" (si il y a des chaînes), en général,
comme suit, avec
VB/VBA, pour utiliser la version "A" (tiré de All-API,
www.allapi.net) :
Private Declare Function GetWindowText Lib "user32"
Alias "GetWindowTextA"
(ByVal hwnd As Long, ByVal lpString As String, ByVal cch
As Long) As Long
Private Declare Function SetWindowText Lib "user32"
Alias "SetWindowTextA"
(ByVal hwnd As Long, ByVal lpString As String) As Long
Sûr, si le "ID", le hWnd spécifié, est quelque
chose qui n'a pas de
"barre titre", évidemment, cela risque de planter
(surtout le Set) car
autrement, ce serait potentiellement une porte d'entrée
pour les hackers et
virus.
Espérant être utile,
Vanderghast, Access MVP
"phil" <anonymous@discussions.microsoft.com> wrote in
message
news:665901c3e63a$3d19d2a0$a501280a@phx.gbl...
Bonjour
J'avais déjà posé cette question sur le forum, mais elle
est restée sans reponse :
Avec access, je voudrais pouvoir modifier le titre de
mon
application. je connaissais déjà la solution manuelle :
Outils/Demarrage/Titre de l'application.
Mais ce que je voudrais, c'est que la valeur de ce titre
puisse etre changee en fonction d'une variable, ou en
fonction d'un enregistrement dans une table... MEME
TEMPORAIREMENT !
Ce que je voudrais, c'est pouvoir modifier ce titre avec
du VBA.
J'ai trouve sur Internet ces solutions pour modifier et
lire le titre de l'application :
Private Declare Function GetWindowText Lib "User32"
(ByVal
WindowHandle As Integer, ByVal Buffer As String, ByVal
Size As Integer) As Integer
Private Declare Sub SetWindowText Lib "User32" (ByVal
WindowHandle As Integer, ByVal Title As String)
Mais je ne sais pas comment l'appeler...
J'ai essayé comme ca (copié sur une autre fonction du
meme
style) :
Dim tmp$
tmp = String(255, " ")
MsgBox (GetWindowText(100, tmp, 255))
SetWindowText 100, "lu"
MAIS :
Erreur d'exécution 453 : Point d'entree GetWindowText
d'une DLL introuvable dans User32
OU EST MON ERREUR ?
A noter que c'est peut-etre a cause du 100 : j'ai
vraiment
mis n'importe quel entier... mais lequel choisir ?
SI VOUS POUVIEZ M'AIDER... CE SERAIT BIEN SYMPA !!!
.
.
.
-----Message d'origine-----
Salut,
il ne faut pas prendre 0 ni quelque chose
d'aléatoire, mais bien
Application.hWndAccessApp :
Dim str As string
str="Allo" & Chr(0)
SetWindowText Application.hWndAccessApp , str
Chaque fois qu'on ouvre Access, la fenêtre est
différente et possède donc
son ID unique, qu'Access nous retourne gracieusement dans
Application.hWndAccessApp .
Espérant être utile,
Vanderghast, Access MVP
"phil" wrote in
message
news:642c01c3e677$45571ee0$
AU SECOURS !!!
J'ai voulu essayer, en écrivant exactement ça :
Private Declare Function GetWindowText Lib "user32"
Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString
As String, ByVal cch As Long) As Long
Private Declare Function SetWindowText Lib "user32"
Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString
As String) As Long
Private Sub Commande0_Click()
msgbox(GetWindowText(0, dbtext, 255))
SetWindowText cpt, "lu"
RefreshTitleBar
End Sub
et ça n'a pas marché : le msgbox renvoie 0, et le
setwindowtext ne fait rien...
Je me suis dit qu'il fallait essayer avec un autre hwnd,
et j'ai mis une boucle For cpt=0 to 1000 ... Next
Toutes mes pages internet et mes dossiers ont pris le
nom "lu" !!!!!!!!!!
Mais bien sur, pas ma base access.
C'est le sort qui s'acharne sur moi, ou alors est-ce que
je suis passe a cote de quelquechose ?-----Message d'origine-----
Merci Michel pour ces précisions. je vais les garder
précieusement...
En ce qui concerne le hWnd, j'enrage !!!
En effet, la solution était 0 ! Et moi, j'ai testé avec
unFor Next toutes les possibilités de 1 a 32767 (avec
gestion d'erreurs, bien sur... Access ne m'aurait prévenu
que si ca fonctionnait). J'ai l'habitude de faire des
compteurs (Dans les For... Next) de 1 à X, alors j'ai
oublié le 0 !!!!!!
Merci beaucoup à toi et à 3Stone... je vais essayer
d'appliquer ma première solution avec ce que tu m'a
dis...
-----Message d'origine-----
Salut,
Tu as déjà trouvé une solution au problème initial,
mais quant auproblème rencontré, dans une de tes tentatives,
puisqu'ilpeut se rencontrerà nouveau, dans le futur... je me permet...
Il y a DEUX problèmes.
Utiliser Application.hWndAccessApp comme valeur de
hWnd (windowhandle). Chaque fenêtre possède une carte d'identité, un
ID, qu'on appellefamiliarement un hWnd. Quand tu utilisais 100, c'était
peut-être le ID de,je ne sais trop, le sixième bouton de la barre qui
apparaît avec "démarrer"| "programmes"... ou quoique ce soit d'autre. En effet,
seul le hwnd 0 aune signification immuable, cela refère "au système".
Lesautres valeurs dehwnd dépendent de l'historique depuis le démarrage du
PC.
Utiliser l'alias "A" (pour ANSI, ou ASCII, je ne me
souviens plusexactement) avec toutes les fonctions API qui
travaillentavec des chaînesde caractères. En effet, VB et VBA ne sont pas très à
l'aise avec duUnicode, la version non-A, qui est la version par défaut
sur Win32, donc, ilfaut "alias-er" (si il y a des chaînes), en général,
comme suit, avecVB/VBA, pour utiliser la version "A" (tiré de All-API,
www.allapi.net) :
Private Declare Function GetWindowText Lib "user32"
Alias "GetWindowTextA"(ByVal hwnd As Long, ByVal lpString As String, ByVal cch
As Long) As Long
Private Declare Function SetWindowText Lib "user32"
Alias "SetWindowTextA"(ByVal hwnd As Long, ByVal lpString As String) As Long
Sûr, si le "ID", le hWnd spécifié, est quelque
chose qui n'a pas de"barre titre", évidemment, cela risque de planter
(surtout le Set) carautrement, ce serait potentiellement une porte d'entrée
pour les hackers etvirus.
Espérant être utile,
Vanderghast, Access MVP
"phil" wrote in
messagenews:665901c3e63a$3d19d2a0$
Bonjour
J'avais déjà posé cette question sur le forum, mais elle
est restée sans reponse :
Avec access, je voudrais pouvoir modifier le titre de
mon
application. je connaissais déjà la solution manuelle :
Outils/Demarrage/Titre de l'application.
Mais ce que je voudrais, c'est que la valeur de ce titre
puisse etre changee en fonction d'une variable, ou en
fonction d'un enregistrement dans une table... MEME
TEMPORAIREMENT !
Ce que je voudrais, c'est pouvoir modifier ce titre avec
du VBA.
J'ai trouve sur Internet ces solutions pour modifier et
lire le titre de l'application :
Private Declare Function GetWindowText Lib "User32"
(ByValWindowHandle As Integer, ByVal Buffer As String, ByVal
Size As Integer) As Integer
Private Declare Sub SetWindowText Lib "User32" (ByVal
WindowHandle As Integer, ByVal Title As String)
Mais je ne sais pas comment l'appeler...
J'ai essayé comme ca (copié sur une autre fonction du
memestyle) :
Dim tmp$
tmp = String(255, " ")
MsgBox (GetWindowText(100, tmp, 255))
SetWindowText 100, "lu"
MAIS :
Erreur d'exécution 453 : Point d'entree GetWindowText
d'une DLL introuvable dans User32
OU EST MON ERREUR ?
A noter que c'est peut-etre a cause du 100 : j'ai
vraimentmis n'importe quel entier... mais lequel choisir ?
SI VOUS POUVIEZ M'AIDER... CE SERAIT BIEN SYMPA !!!
.
.
.