Curseur animé avec SetSystemCursor [Résolu]

Matthieu7503 22 Messages postés samedi 4 avril 2015Date d'inscription 15 novembre 2015 Dernière intervention - 5 avril 2015 à 18:08 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention
- 5 avril 2015 à 23:49
Bonjour à toutes et à tous,

me voilà de nouveau avec un deuxième problème ce weekend.

Ma question est simple : serait-il possible d'utiliser des curseurs animés (.ani), et forcément, voir l'animation de ce curseur, avec l'utilisation de SetSystemCursor ?

Et si oui, comment faire, car jusque maintenant, chaque résultat obtenu a été un curseur figé.

Merci d'avance de votre aide.
Afficher la suite 

Votre réponse

13 réponses

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 5/04/2015 à 18:34
0
Merci
Bonjour,
Je viens de le faire sans aucun problème avec le curseur banana.ani, en appliquant très exactement ce que je t'ai dit dans ton autre discussion, notamment en utilisant (je te le rappelle) LoadCursorFromFile
Il est clair que ce curseur doit être du format attendu exact.
Banana.ani se trouve dans le répertoire cursors de Windows

EDIT : je viens de recommencer cette expérience avec le curseur barber.ani du dossier cursors du répertoire Windows ===>> succès également.

Je ne suis pas VB.Nettiste et ai testé avec VB6. Mais comme nous n'utilisons en fait que des fonctions de l'Api de Windows, tant pour extraire, que pour utiliser, VB n'a plus grand chose à dire lui-même !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu
Matthieu7503 22 Messages postés samedi 4 avril 2015Date d'inscription 15 novembre 2015 Dernière intervention - 5 avril 2015 à 18:37
0
Merci
Après de nouvelles tentatives, il m'est bien possible d'afficher un curseur en .ani, mais il n'est pas animé, de plus, banana.ani n'est pas présent dans le dossier Cursors de Windows (C:\Windows\Cursors\).

J'ai fait les tests avec visual studio 2010 et 2013, et pour les deux cas, le curseur n'est pas animé.
J'utilise pourtant bien LoadCursorFromFile, pour ensuite m'en servir avec SetSystemCursor.
Je ne comprends pas pourquoi les curseurs ne s'animent pas.

Je précise au passage que je suis sous Windows 8.1 64 bits, et que je suis à jour.
Commenter la réponse de Matthieu7503
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 5/04/2015 à 18:47
0
Merci
Il se peut (je ne suis pas en 64 bits) que ton problème vienne de ces 64 bits.
J'en doute un peu, toutefois.
Montre ton code.

IMPORTANT : y compris (bien évidemment) les déclarations faites des fonctions/Windows utilisées.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu
Matthieu7503 22 Messages postés samedi 4 avril 2015Date d'inscription 15 novembre 2015 Dernière intervention - 5 avril 2015 à 18:50
0
Merci
Private Declare Function SetSystemCursor Lib "user32.dll" (ByVal hCursor As IntPtr, ByVal id As Integer) As Boolean
Private Declare Function LoadCursorFromFile Lib "user32.dll" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As IntPtr

Private Const IDC_ARROW As UInt32 = 32512

Dim SavedCursor As Icon

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

SavedCursor = Icon.FromHandle(Cursors.Arrow.CopyHandle)
Dim NewCursor As IntPtr = LoadCursorFromFile(Application.StartupPath & "\MyCursor.ani")

SetSystemCursor(NewCursor, IDC_ARROW)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim OldCursor As IntPtr = SavedCursor.Handle

SetSystemCursor(OldCursor, IDC_ARROW)
End Sub
Commenter la réponse de Matthieu7503
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 5 avril 2015 à 19:18
0
Merci
Je pense que sont responsables les choix que tu as fait des types donnés aux paramètres de tes fonctions/Windows
J'ignore ce qu'ils devraient être en appelant ces fonctions depuis VB.Net.
Le type qui mez "surprend" le plus, dans tes déclarations, est celui (booléen) que tu as attribué à la fonction setsystemcursor.

Je vois par ailleurs que tu veux utiliser un curseur "MyCursor.ani", ce qui donne à penser qu'il n'est peut-être pas au bon format, en dépit de son extension.
Fais tes tests, s'il te plait, avec des curseurs .ani de Windows
Commenter la réponse de ucfoutu
Matthieu7503 22 Messages postés samedi 4 avril 2015Date d'inscription 15 novembre 2015 Dernière intervention - 5 avril 2015 à 19:32
0
Merci
Après quelques tests, j'ai remarqué que sous Windows 7 64 bits, il n'y a aucun problème car les curseurs sont bien animés (test réalisé avec les curseurs Windows et des curseurs personnalisés).

Sous Windows 8.1 64 bits, tout curseur animé .ani reste figé, y compris ceux de Windows.

Je me retrouve donc face à une impasse, serait-ce un bug ?
Commenter la réponse de Matthieu7503
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 5 avril 2015 à 20:27
0
Merci
Je ne sais alors plus que te dire. Il me faudrait faire des tests avec ce que je n'ai pas (windows 8).
Commenter la réponse de ucfoutu
Matthieu7503 22 Messages postés samedi 4 avril 2015Date d'inscription 15 novembre 2015 Dernière intervention - 5 avril 2015 à 20:52
0
Merci
Je vais faire de nouvelles recherches, et si résultat, je communiquerait le tout.
Commenter la réponse de Matthieu7503
cs_Le Pivert 5186 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 23 juin 2018 Dernière intervention - 5 avril 2015 à 20:57
0
Merci
Bonjour,

Jai Windows 8.1 64 bits et le seul curseur animé qui fonctionne est celui-ci:



si cela peut t'aider!
Commenter la réponse de cs_Le Pivert
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 5 avril 2015 à 20:59
0
Merci
Oui.
Car ce que tu trouverais aurait de l'importance pour les utilisateurs de Windows 8.
Il n'est pas impossible que cela soit finalement lié à une stratégie de sécurité de Windows 8.
Je crois en effet me rappeler avoir lu ici et là que les fichiers .ini pouvaient présenter des failles pouvant compromettre pal mal de choses, dont, carrément, la "prise en main malveillante" d'un PC.
Alors ... je ne sais pas ...
Commenter la réponse de ucfoutu
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 5 avril 2015 à 21:24
0
Merci
Salut

Peut être ainsi

Private Declare Unicode Function LoadCursorFromFile Lib "user32.dll" Alias "LoadCursorFromFileW" (ByVal filename As String) As IntPtr

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim hcur As IntPtr
hcur = LoadCursorFromFile(Application.StartupPath & "\mycursor.ani")
me.Cursor = New Cursor(hcur)

End Sub
Commenter la réponse de cs_ShayW
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 5 avril 2015 à 21:49
0
Merci
Bonjour, cs_ShayW,

"Me", ce n'est pas QUE le form ?
Si oui, ce n'est pas ce qui est demandé !
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 5/04/2015 à 23:52
0
Merci
Avant d'aller dormir, tout de même :
As-tu pensé à vérifier, sur ta machine win 8, qu'aucune manipulation malheureuse n'aurait modifié l'association correspondant à l'extension .ani ?
Regarde dans ta BDR. J'ignore comment est celle de Win 8

Dans la mienne, de BRD, j'examinerais ces deux clés :
HKEY_CLASSES_ROOT\.ani
HKEY_CLASSES_ROOT\anifile
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.