OVH Cloud OVH Cloud

récupérer des ressources

13 réponses
Avatar
scraper
bonjour à tous !

une question :

comment peut on récupérer et utiliser des ressources stockées dans les dll
systeme ??

par exemple, j'aimerais bien intégrer à mon projet l'AVI 256/1036 qui est
stocké dans shdocvw.dll


comment dois je procéder ?

merci de toute aide ... :-)



--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper

3 réponses

1 2
Avatar
Paskal
Bonjour scraper,

Paskal .... tu avais dit 15 jours sans ordi, ou j'avais mal compris ?



Comme je suis en vacances, juste le minimum...
j'avais deux heures à perdre ce matin.. (et 5 min ce soir)...
:-)

(Il n'existe pas de patch anti-pc)
;-)

--
@+
Paskal
Avatar
scraper
Bonjour François Picalausa
(dans news:)
tu nous disais :

Peut-être utilises-tu déjà Microsoft Windows Common Controls-2 6.0 ?



oui ;-)

Dans ce cas, tu pourrais placer un contrôle Animation et utiliser le
code suivant:
Option Explicit



[...]

ça fonctionne nickel, je te remercie !

donc, j'ai opté pour la première solution et c'est super :-)


un tout petit détail, je comprends pas ceci :
-----
Pour obtenir les notifications ACN_START et/ou ACN_STOP, il faudrait
sous classer la form et récupérer les messages WM_COMMAND.


------

il est de fait que je souhaiterais, par exemple, faire "pauser" l'exécution
de l'animation, et que quand elle reprend, elle le fasse exactement au point
où elle s'est arrêtée

mais j'avoue ne pas comprendre ce que tu veux dire ci dessus ?

si tu veux bien éclairer ma lanterne ;-)

merci encore, en tout cas :-)



--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper
Avatar
François Picalausa
Hello,

Peut-être qu'un jour je parlerai français sans ajouter des noms de
constantes toutes les deux lignes ;-)
ACN_START (et ACN_STOP) sont des notifications envoyées par un contrôle de
type animation pour prévenir le parent que la lecture a débuté ou a été
arrêtée.
Cette notification est faite par l'envoi d'un message WM_COMMAND au
conteneur du contrôle (comme quand on utilise SendMessage, avec ici un
message WM_COMMAND, a la différence qu'ici c'est le contrôle animation et
pas toi qui envoie le message). En VB, récupérer des messages et effectuer
un traitement, on appelle ça un événement ;-)
Ne pas chercher, le contrôle animation ne possède pas d'événement start ou
stop... d'où l'utilité de sous classer le conteneur (la form souvent),
puisque cela permet d'intercepter les messages.

Pauser l'animation n'est pas une chose évidente. On ne sait pas déterminer
(er... rectification... je n'ai pas trouvé le moyen de déterminer) à quelle
"frame" l'animation s'est arrêtée.
En supposant que cela existe, il faudrait aussi pouvoir reprendre
l'animation à un point... je n'ai pas dit que c'était impossible! Simplement
je ne vois pas comment faire... peut-être en jouant avec ACM_PLAY
(Animation1.Play)?


Sinon il faudra passer par les API multimedia... (mode retour à la KB
173668):
Dans le module 1, il faut remplacer la déclaration de FindResource par:
Public Declare Function FindResource Lib "kernel32" _
Alias "FindResourceA" _
( _
ByVal hInstance As Long, _
ByVal lpName As Long, _
ByVal lpType As String _
) _
As Long

Ensuite, dans une form:
Option Explicit

Private Sub PlayResVidInPicBox(DllName As String, intResIndex As Integer,
PBox As PictureBox, Optional Resize As Boolean)
Dim hRsrc As Long
Dim hGlobal As Long
Dim strCmd As String, strReturnVal As String
Dim nbuf As Long

'Loads the resource
'Change the filename argument in the next line to the path and
'filename of your resource dll file.
hInst = LoadLibrary(DllName) ' <<<<
hRsrc = FindResource(hInst, CLng(intResIndex), "AVI")
hGlobal = LoadResource(hInst, hRsrc)
lpData = LockResource(hGlobal)
fileSize = SizeofResource(hInst, hRsrc)

Call mmioInstallIOProc(MEY, AddressOf IOProc, _
MMIO_INSTALLPROC + MMIO_GLOBALPROC)
nbuf = 256

'Play the AVI file
strCmd = "open test.MEY+ type avivideo alias IEDownloadFile parent " &
PBox.hWnd & " style child"
strReturnVal = mciSendString(strCmd, 0&, 0&, 0&)
If strReturnVal = 0 Then
'Positionne la vidéo à (0,0)-(largeur PBox,hauteur PBox)
If Resize Then
strCmd = "put IEDownloadFile window at 0 0" & _
(PBox.ScaleWidth / Screen.TwipsPerPixelX) & " " & _
(PBox.ScaleHeight / Screen.TwipsPerPixelY)
Else
strCmd = "put IEDownloadFile window at 0 0"
End If

strReturnVal = mciSendString(strCmd, 0&, 0&, 0&)

strCmd = "play IEDownloadFile wait"
strReturnVal = mciSendString(strCmd, 0&, 0&, 0&)

strCmd = "close IEDownloadFile"
strReturnVal = mciSendString(strCmd, 0&, 0&, 0&)
End If

Call mmioInstallIOProc(MEY, vbNull, MMIO_REMOVEPROC)
FreeLibrary hInst
End Sub

Private Sub Command1_Click()
PlayResVidInPicBox "shdocvw.dll", 256, Picture1
End Sub

Si tu essaye cette méthode, je prédis tes questions:
Est-ce qu'on peut faire en sorte de jouer la vidéo sans le fond rose?
Réponse : Oui, ça doit être possible!
Est-ce qu'on peut jouer la vidéo de manière asynchrone?
Réponse : Dans "play IEDownloadFile wait", enlever le wait... mettre le stop
dans le form unload et le chargement de la video comme shareable ou
uniquement à l'initialisation de la form.
Est-ce qu'on peut répéter la vidéo?
Réponse : Dans le même play qu'au dessus, ajouter repeat

Le but était au départ de mettre en pause.. sinon ça n'a pas d'intérêt... et
bien, c'est possible aussi!
strCmd = "pause IEDownloadFile"
strReturnVal = mciSendString(strCmd, 0&, 0&, 0&)
appeler play ensuite pour rependre la lecture...

Pour le fond rose, je pense qu'il faudrait chercher du côté de realize
(strCmd = "realize IEDownloadFile", ...) ou peut-être setvideo:
http://msdn.microsoft.com/library/en-us/multimed/htm/_win32_setvideo.asp
Deux aspirines avec ça et au lit ;-)
Si tu n'y arrive pas, j'essayerai de faire un usercontrol qui gère tout ça
automatiquement (pas l'aspirine hein ;-) )...

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com

"scraper" a écrit dans le message de
news:
Bonjour François Picalausa
(dans news:)
tu nous disais :
un tout petit détail, je comprends pas ceci :
-----
Pour obtenir les notifications ACN_START et/ou ACN_STOP, il faudrait
sous classer la form et récupérer les messages WM_COMMAND.


------

il est de fait que je souhaiterais, par exemple, faire "pauser"
l'exécution de l'animation, et que quand elle reprend, elle le fasse
exactement au point où elle s'est arrêtée


1 2