Bonjour,
Plusieurs jours que je cherche en vain sans résultat, j'en appelle à vos lumières.
Sous VB2008, je n'arrive à rien avec les API.
Il m'est toujours retourné des valeurs incorrectes.
Avec le code ci-dessous par exemple:
<hr />
Public
Class
Test
Private
Declare
Function
SetWindowText
Lib
"user32.dll"
Alias
"SetWindowTextA"
(
ByVal
hwnd
As
Long
,
ByVal
lpString
As
String
)
As
Long
Private
Declare
Function
GetFocus
Lib
"user32.dll"
()
As
Long
Public
Shared
Sub
Main()
Dim
L1
As
Long
L1 = GetFocus()
SetWindowText(L1,
"Test"
& Chr(0))
MsgBox(Hex(L1), MsgBoxStyle.Information)
End
Sub
End
Class
<hr />GetFocus me retourne &h77100F3400000000 (8579374006153510912), et ce, quel que soit la fenêtre active.
J'ai essayé en C#, même topo, j'ai essayé avec pas mal d'API, itoo, à chaque fois, les valeurs qui me sont retournées sont inutilisables.
J'suis sous vista.
J'ai comme la sensation qu'il est une astuce énorme, grosse comme mon pif sur ma tronche. De là où vous êtes, vous voyez pas?
Salut
C'est parce que le nom des types de variables désignent des types différents d'avec la syntaxe API fournie pour VB6.
VB6 Net
Long --> Integer
Integer --> Short
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
voui, j'ai bien tenter de remplacer Long par Integer, mais en ce cas, il m'est renvoyé 0.
J'ai tenté de remplacer la déclaration par:
<Runtime.InteropServices.DllImport("user32")> _
Private Function GetFocus() As IntPtr
End Function
Mais il me mets:
Erreur 1 'System.Runtime.InteropServices.DllImportAttribute' ne peut pas être appliqué à une méthode d'instance.
Sub
EndClass
<hr />Tout à l'air bon... et pourtant que nenni, GetFocus me renvoie toujours 0.
J'ai testé avec GetActiveWindow(): pareil.
Pareil en compilé...
Je vous remercie de vous pencher sur ce truc, qui j'en suis sur, tient d'une erreur évidente... mais où?
Sub
EndClass
<hr />
Reposté épuré
Tout à l'air bon... et pourtant que nenni, GetFocus me renvoie toujours 0.
J'ai testé avec GetActiveWindow(): pareil.
Pareil en compilé...
Je vous remercie de vous pencher sur ce truc, qui j'en suis sur, tient d'une erreur évidente... mais où?