CONTENEUR ACTIVEX 100% API

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 29 janv. 2005 à 10:23
HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011 - 6 oct. 2009 à 11:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29171-conteneur-activex-100-api

HeavenForsaker Messages postés 223 Date d'inscription mercredi 13 juillet 2005 Statut Membre Dernière intervention 8 août 2011
6 oct. 2009 à 11:54
Bravo racpp pour cet excellent code.

Quand on sélectionne du texte sur la page puis clique droit, la fonction copier coller ne fonctionne pas (c'est la seule d'ailleurs), y a t-il moyen de l'activer ?
SebLinck Messages postés 212 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 23 juin 2011
2 juil. 2008 à 14:09
Désolé également,

1- Je n'ai rien d'autre dans OLEviewer que ce que j'ai collé

2- Effectivement,il faut plutôt inclure "AxisMediaControl.dll" et utiliser l'interface IAxisMediaControl

3- :-)

Je RE-teste tout ça prochainement.
bigzooloo Messages postés 36 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 6 octobre 2009
10 juin 2008 à 18:43
Salut, désolé du retard...

1- ta déclaration de CLSID_IAxisMediaControl est fausse...
il faut que tu te réfères au CLSID de la classe et non au TypeLib dans OleView
(CLSID = 745395C8-D0E1-4227-8586-624CA9A10A8D)

2- lors de l'installation du SDK dans le lien que tu m’as donné, je n'ai pas ce fichier "AxMP4Dec.dll"... je dirai qu'il faut plutôt inclure "AxisMediaControl.dll" et utiliser l'interface IAxisMediaControl.

3- attention au copier-coller :-)
ca m'étonnerai que ta lib ait une fonction "GoHome()"

Voila, j'espère que ca t'aidera
bigzooloo Messages postés 36 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 6 octobre 2009
5 juin 2008 à 22:12
Salut,

Si tu m'envoi ta lib pour cette caméra, je veux bien essayer de résoudre ton pb !
Je te donnerai mon mail en MP si ca t'interesse.

A+
SebLinck Messages postés 212 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 23 juin 2011
5 juin 2008 à 16:56
bonjour,

J'ai exactement la même problématique que bigzooloo, mais j'utilise une caméra Axis 210.
j'ai donc suivi toutes les recommandations qui lui ont été faites, mais j'ai une erreur de compilation avec:

#import "C:/Program Files/Axis Communications/Components/AxMP4Dec.dll"

la dll est pourtant bien présente dans ce répertoire.

autre chose, lorsque je regarde le composant AxisMediaControl avec OLE viewer, je n'obtiens que:

TypeLib =
{9D2CED0F-39D2-4A1E-BA42-428F7D9D4EEB}
1.0 = AxisMediaControl 1.0 Type Library
0
win32=C:\Program Files\Axis Communications\Components\AxisMediControl.dll
FLAGS = 0
HELPDIR = C:\Program Files\Axis Communications\Components\

je vous donne le .cpp:
----------------------------------------------------------------------------------------
#include <windows.h>
#include <exdisp.h>

#import "C:/Program Files/Axis Communications/Components/AxMP4Dec.dll"

DEFINE_GUID(IID_IAxisMediaControl,0x19722801, 0x5830, 0x4EC4, 0xBD, 0x69, 0xC3, 0xCF, 0x70, 0x77, 0x6E, 0x0E);
DEFINE_GUID(CLSID_IAxisMediaControl,0xA48F4EE0, 0xB408, 0x4376, 0xB4, 0xC9, 0xBC, 0x9C, 0xF6, 0xE1, 0x6E, 0xBC);

// Déclaration du HWND de notre conteneur en global:
HWND conteneur;

/***************** Procédure de notre fenêtre principale *********************/
LRESULT CALLBACK WndProc( HWND hWnd, UINT messg, WPARAM wParam, LPARAM lParam )
{
switch(messg)
{
case WM_SIZE:
// Redimensionnement du conteneur quand la taille de la fenêtre change:
MoveWindow(conteneur,0,0,LOWORD(lParam), HIWORD(lParam),1);
break;

case WM_CLOSE:
// Détruire la fenêtre principale:
DestroyWindow(hWnd);
break;

case WM_DESTROY:
// Envoyer le message de sortie du programme:
PostQuitMessage( 0 );
break;

default:
//Retour:
return( DefWindowProc( hWnd, messg, wParam, lParam ) );
}
return 0;
}
/***************************************************************************/

/********************* Fonction WinMain ************************************************/
int WINAPI WinMain( HINSTANCE hInst,HINSTANCE hPreInst,LPSTR lpszCmdLine, int nCmdShow )
{

// Déclarer notre classe de fenêtre et définir ses membres:
WNDCLASS wc;
char NomClasse[] = "Conteneur";
wc.lpszClassName = NomClasse;
wc.hInstance = hInst;
wc.lpfnWndProc = WndProc;
wc.hCursor = LoadCursor( 0, IDC_ARROW );
wc.hIcon = LoadIcon( 0, IDI_APPLICATION );
wc.lpszMenuName = 0;
wc.hbrBackground = 0;
wc.style = 0;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
// Enregistrer la classe de notre fenêtre:
if (!RegisterClass(&wc)) return 0;

// Créer notre fenêtre principale:
HWND hWnd = CreateWindow( NomClasse,"Conteneur Activex",WS_OVERLAPPEDWINDOW,0,0,800,575, 0, 0, hInst,0);
// Montrer la fenêtre:
ShowWindow(hWnd, nCmdShow );
UpdateWindow( hWnd );

// Charger la DLL "atl.dll" pour notre programme:
HINSTANCE hDLL = LoadLibrary("atl.dll");
// Définir le type de pointeur pour la fonction "AtlAxAttachControl":
typedef HRESULT (WINAPI *PAttachControl)(IUnknown*, HWND,IUnknown**);
// Récupérer l'adresse de la fonction "AtlAxAttachControl":
PAttachControl AtlAxAttachControl = (PAttachControl) GetProcAddress(hDLL, "AtlAxAttachControl");
// Obtenir les dimensions de notre fenêtre:
RECT rect;
GetClientRect(hWnd,&rect);
// Créer l'EDIT qui servira de conteneur Activex:
conteneur=CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","",WS_CHILD | WS_VISIBLE,0,0,rect.right,rect.bottom,hWnd,0,0,0);
// Initialiser la librairie COM pour notre programme:
CoInitialize(0);
// Déclarer un pointeur sur l'interface IWebBrowser2:
AXISCONTROLMEDILLib::IAxisMediaControl *pIwb;
// Créer une instance de l'objet WebBrowser et de l'interface IWebBrowser2:
CoCreateInstance(CLSID_IAxisMediaControl,0,CLSCTX_ALL,IID_IAxisMediaControl,(void**)&pIwb);
// Attacher l'objet WebBrowser à notre EDIT conteneur:
AtlAxAttachControl(pIwb,conteneur,0);
// Lancer la page de démarrage:
pIwb->GoHome();

// Boucle des messages:
MSG Msg;
while( GetMessage(&Msg, 0, 0, 0))
{
TranslateMessage( &Msg );
DispatchMessage( &Msg );
}

// Libérer l'interface IWebBrowser2:
pIwb->Release();
// Fermer la librairie COM pour notre programme:
CoUninitialize();
// Fermer la DLL "atl.dll":
FreeLibrary(hDLL);
// Quitter le programme:
return( Msg.wParam);
}

----------------------------------------------------------------------------------

Si quelqu'un avait un piste, j'ai vraiment besoin d'utiliser cette ActiveX sans MFC.
merci d'avance
cs_yex Messages postés 28 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mai 2010
30 mai 2008 à 17:19
Pour ajouter la possibilité d'utiliser les racourcis clavier ctrl+c et autres deux petites modifications sont necessaires :

1) remplacer CoInitialize(0); par OleInitialize(0); et CoUninitialize(); par OleUninitialize(0);

2) Get message devient
MSG Msg;
while( GetMessage(&Msg, 0, 0, 0))
{
// MSDN : calling IOleInPlaceActiveObject::TranslateAccelerator from your
// container's message loop before doing any other translation
if (Msg.message==WM_KEYDOWN)
{
IOleInPlaceActiveObject* pIOIPAO;
HRESULT hr = pIwb->QueryInterface (IID_IOleInPlaceActiveObject, (void**)&pIOIPAO);
hr = pIOIPAO->TranslateAccelerator(&Msg);
pIOIPAO->Release();
// MSDN : You should apply your own translation only when this method returns S_FALSE
if (hr == S_OK)
continue;
}
TranslateMessage( &Msg );
DispatchMessage( &Msg );
}
piou_31 Messages postés 3 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 24 avril 2008
24 avril 2008 à 13:47
Bonjour,

quelqu'un a-t-il déja réussi à adapter ce code pour utiliser acrobat reader?
Pour moi ca ne marche pas.

Cdlt
cs_hakim0 Messages postés 123 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 12 août 2008 1
27 mars 2008 à 11:59
slt,
ton active x doit etres installer, tu doit connaitre son id pour le charger, et tu doit conaitre linterface de ce active-x contacter le vendeur ou le devloppeur d ce active-x :)
shuttleur Messages postés 33 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 30 juin 2008
12 mars 2008 à 16:38
Bonjour,

Comment visual c++ connait-il l'interface IWebBrowser2 et d'où connait-il les méthodes Play() et Release() de l'interface ?

En fait, je ne parviens pas à lancer un ActiveX (non connu), que dois-je inclure dans ce projet pour que mon ActiveX soit reconnu et lancé ?

Merci d'avance à tous.
cs_hakim0 Messages postés 123 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 12 août 2008 1
28 sept. 2007 à 19:21
Merci racpp, je suis arriver d'executer le script par IHTMLDocument2,
avec les methode get_script est invoke...
2- Le problem rest ici j'arrive pas a attendre le lien sur l'evenement onbevornavigate2, seulement en
DOCUMENTCOMPLETE aec la methode pIWEB->get_LocationURL(),
par ce que je veut intercepter le lien avant que le browser navigue pour dicider de lui stoper ou non!
Merci pour une reponse.
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
24 sept. 2007 à 18:49
hakim0 >> 1- Tu peux regarder du côté de l'interface IHTMLDocument2.
2- Regarde mon code source:
http://www.cppfrance.com/codes/NAVIGATEUR-WEB-API_29247.aspx
Dans la classe d'interception des événements, je capture l'url dans la méthode Invoke() pendant le traitement de DISPID_NAVIGATECOMPLETE2. Je n'ai pas testé, mais ça devrait être pareil pour la capturer dans DISPID_BEFORENAVIGATE2. Dans tous les cas, l'url figure bien parmi les paramètres interceptés dans Invoke().
cs_hakim0 Messages postés 123 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 12 août 2008 1
18 sept. 2007 à 16:09
Bravo,
j'ai 2 questions:
1- Comment on peut executer une function Jscript sur le document html.
2- Comment intercepter le lien url sur l'evenemenet BEFORENAVIGATE2.
onn effet m'application doit avoir une interface html donc j'ai besoin de s'avoir comment communiquer avec le WebBrowser.
Merci pour votre reponse.
pianopariss Messages postés 6 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 13 avril 2007
20 juin 2007 à 16:29
Très bon code, très pratique.
10 ! ;-)
ASEBT Messages postés 18 Date d'inscription lundi 23 octobre 2000 Statut Membre Dernière intervention 29 mars 2010
20 mars 2007 à 13:27
Bonjour,

Comment fait tu pour récupérer le code la page , une fois que la page est chargé complement ?
igloobuster Messages postés 12 Date d'inscription jeudi 19 octobre 2006 Statut Membre Dernière intervention 24 juillet 2009 10
20 oct. 2006 à 14:53
salut, voila mon bout de code :

IDispatch *g_pMSFlexGrid;
if (CoCreateInstance(m_clsid,0,CLSCTX_ALL,IID_IDispatch,(void**)&g_pMSFlexGrid) != S_OK)
return FALSE;
AtlAxAttachControl(g_pMSFlexGrid,conteneur, NULL);

j'ai legerement modifié le tient pour avoir un MSFlexGrid au lieu d'un WebBrowser, le probleme est au moment de AtlAxAttachControl qui me donne cette erreure :

First-chance exception in Conteneur.exe (MSFLXGRD.OCX): 0xC0000005: Access Violation.

Voila en gros mon probleme...
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
16 août 2006 à 17:03
Salut,
Voici le code source utilisant l'Activex Flash:
http://www.cppfrance.com/code.aspx?ID=33091
cs_matt22 Messages postés 15 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 5 novembre 2010
16 août 2006 à 11:54
Salut,

je débute un peu et je n'ai pas tout compris...
est ce que quelqu'un aurais le meme source mais avec l'activeX flash, car c mon objectif et ça m'aiderais en comparant les 2 sources à bien comprendre le fonctionnement ?!

Merci d'avance...
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 mai 2006 à 17:41
Salut,
jimmyplante > Il faut donner d'autres précision pour mieux voir le problème. Que veux-tu faire exactement?
jimmyplante Messages postés 3 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 6 avril 2006
6 avril 2006 à 17:02
SUper code !! 10/10
Cependant, j'essaye de faire le même traitement à partir d'un bouton que j'ai dans un dialog et sa ne marche pas. Est-ce que tu saurais comment ?
maybil_gi Messages postés 2 Date d'inscription mardi 27 décembre 2005 Statut Membre Dernière intervention 13 mars 2006
13 mars 2006 à 15:13
salut tout le monde, y a t il quelqu'un qui a un code source en java pour un navigateur web? merci d'avance
bigzooloo Messages postés 36 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 6 octobre 2009
27 févr. 2006 à 14:57
Salut,
Franchement, je n'ai qu'une chose à dire : total respect !
Ca marche nikel du premier coup.
Ca mérite un 12/10 :-)
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
26 févr. 2006 à 18:32
Salut,
Ton Activex doit posséder une interface dédiée à l'interception des événements. Cette interface doit figurer dans la liste dans OLE View. Il faudra recopier les prototypes de toutes ses méthodes dans le bon ordre. Chaque méthode correspond à un événement. Tu créeras ensuite une classe implémentant ces méthodes. Dans mon code source "Navigateur Web" tu trouveras un exemple de classe implémentant le traitement de ce genre d'événement. Elle envoit un message à la procédure de la fenêtre du programme chaque fois que l'évènement voulu est intercepté. J'espère que ton Activex est basé sur le même principe.
bigzooloo Messages postés 36 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 6 octobre 2009
25 févr. 2006 à 17:55
C'est encore moi... :)
Effectivement, ca fonctionne (presque) comme je veux, j'arrive à obtenir mes 25 images par secondes.

Actuellement, j'utilise un timer (40 ms) pour effectuer une capture de la vidéo. Mais la synchronisation est un peu aléatoire. Si l'image de la caméra est prète au moment t, je la récupère entre le moment t et t+39 ms.

J'ai vu dans le SDK qu'il y avait un évènement (ou plutôt un CallBack) généré (ou appelé) à chaque nouvelle image. Ma question est (bien sur) : comment récupérer cet évènement sans MFC ?

un exemple avec MFC :

BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
ON_EVENT(CMyDlg, IDC_VitaminCtrl, 9, OnNewVideoVitaminCtrl, VTS_BOOL VTS_BOOL VTS_PVARIANT)
END_EVENTSINK_MAP()

void CMyDlg::OnNewVideoVitaminCtrl(BOOL bSignal, BOOL bDecodedImg, VARIANT* vPiece)
{
// CallBack appelé a chaque nouvelle image : parfait pour la synchronisation
}

Merci.
bigzooloo Messages postés 36 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 6 octobre 2009
22 févr. 2006 à 13:26
Merci beaucoup, ca marche !
Il ne me reste plus qu'a utiliser les bonnes méthodes pour obtenir ce que je veux et voila.
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
22 févr. 2006 à 00:19
La définition de CLSID_IVitaminCtrl n'est pas correcte.
Les données que tu as montrées correspondent à l'interface IVitaminCtrl. Pour trouver le CLSID du composant Activex, il faut cliquer sur son nom. C'est lui qui est précédé par + ou - dans la liste. C'est lui qui contient l'interface IVitaminCtrl parmi d'autres. Dans le volet droit de OLE Viewer, Le CLSID est toujours suivi par le signe = puis le nom du composant. Voici un exemple montrant le début des données affichées par OLE Viewer pour le composant "Shockwave Flash Object":

CLSID={1A03F196-9617-4CA0-842B-A83CEECB022B}
{D27CDB6E-AE6D-11CF-96B8-444553540000}=Shockwave Flash Object

Le CLSID est donc celui de la 2eme ligne.
Bonne chance.
bigzooloo Messages postés 36 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 6 octobre 2009
21 févr. 2006 à 17:08
Voici ce que j'obtiens avec "OLE Viewer" :

Interface {000D2C68-B46B-461C-B5EC-83AC5202FE2C} IVitaminCtrl
ProxyStubClsid = {00020424-0000-0000-C000-000000000046}
ProxyStubClsid32 = {00020424-0000-0000-C000-000000000046}
TypeLib [<no name>] = {9D2CED0F-39D2-4A1E-BA42-428F7D9D4EEB}
TypeLib [Version] = 1.0
CLSID {00020424-0000-0000-C000-000000000046} PSOAInterface
InprocServer = ole2disp.dll
InprocServer32 [<no name>] = oleaut32.dll
InprocServer32 [ThreadingModel] = Both
TypeLib =
{9D2CED0F-39D2-4A1E-BA42-428F7D9D4EEB}
1.0 = VitaminDecoder 1.0 Type Library
0
win32 = C:\Program Files\VitaminCtrl\lib\VitaminCtrl.dll
FLAGS = 0
HELPDIR = C:\Program Files\VitaminCtrl\lib


A partir de ces données, j'ai ce code source :

#import "C:/Program Files/VitaminCtrl/lib/VitaminCtrl.dll"

DEFINE_GUID(IID_IVitaminCtrl,
0x000D2C68, 0xB46B, 0x461C, 0xB5, 0xEC, 0x83, 0xAC, 0x52, 0x02, 0xFE, 0x2C);
DEFINE_GUID(CLSID_IVitaminCtrl,
0x00020424, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);

...
VITAMINDECODERLib::IVitaminCtrl *pVC;
CoCreateInstance(CLSID_IVitaminCtrl,0,CLSCTX_ALL,IID_IVitaminCtrl,(void**)&pVC);
ErrorExit("CoCreateInstance") ;
AtlAxAttachControl(pVC,conteneur,0);
pVC->get_ControlID(&val);
...

Ceci compile sans problème, je peux même ajouter que VC .net liste toutes les méthodes de l'interface en tapant pVC->. Donc, il a l'air de comprendre.

Mais à l'exécution, j'ai une erreur (avec la fonction ErrorExit) :
"CoCreateInstance failed with error 14007 : La clé de recherche requise n'a été trouvée dans aucun contexte d'activation actif."

Désolé de t'embetter encore mais j'en ai vraiment besoin.
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
20 févr. 2006 à 18:57
Tu peux utiliser l'outil "OLE Viewer" de Visual Studio pour connaitre la définition des types et les paramètres d'entrée et de sortie des méthodes de chaque interface de ton Activex. L'utilisation de #import seule ne suffit pas car il faut déclarer, par exemple, tes pointeurs conformément aux types exportés par la DLL de ton Activex.
bigzooloo Messages postés 36 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 6 octobre 2009
20 févr. 2006 à 17:14
La directive #import ne provoque pas d'erreur à la compilation mais ne me donne rien de plus...

Lorsque j'inclu l'activeX dans un projet MFC, il crée automatiquement deux fichiers (.h et .cpp). Voici un extrait du .h :

#if !defined(AFX_VITAMINCTRL_H__04710852_2362_4462_828D_4F0051188B4E__INCLUDED_)
#define AFX_VITAMINCTRL_H__04710852_2362_4462_828D_4F0051188B4E__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++

// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.

/////////////////////////////////////////////////////////////////////////////
// CVitaminCtrl wrapper class

class CVitaminCtrl : public CWnd
{
protected:
DECLARE_DYNCREATE(CVitaminCtrl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0x70edcf63, 0xca7e, 0x4812, { 0x85, 0x28, 0xda, 0x1e, 0xa2, 0xfd, 0x53, 0xb6 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }

BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist NULL, BOOL bStorage FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }

// Attributes
public:

// Operations
public:
CString GetUrl();
...
... autres méthodes
...
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_VITAMINCTRL_H__04710852_2362_4462_828D_4F0051188B4E__INCLUDED_)


Mais je ne peux pas le faire dans un projet non MFC.
Et si j'inclu les deux fichiers a la main dans le projet non MFC, j'ai enormement d'erreurs à la compilation : erreur à chaque ligne contenant CString ou CWnd

Je suis toujours bloqué.
Merci.
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
20 févr. 2006 à 13:17
bigzooloo > Tu peux utiliser, juste après les includes, la directive #import suivie du chemin complet de ta dll VitaminCtrl.dll, ainsi ton compilateur reconnaitra toutes les interfaces et tous les types de données exportés par l'Activex.
bigzooloo Messages postés 36 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 6 octobre 2009
19 févr. 2006 à 13:29
Merci pour les encouragements...

Désolé, je crois avoir mal formuler ma question.

J'ai déjà utilisé des SDK de différents périphériques (carte d'acquisition et autres) mais ils étaient définies comme des classes C++ "normales". Ici, le problème n'est pas de savoir comment il fonctionne, mais plutôt comment le déclarer.

De plus, je me suis aperçu qu'il y avait un second SDK pour la même caméra IP. Celui-ci dispose de toutes les méthodes nécessaires pour récupérer la succession d'images et non le flux MPEG4.

L'ActiveX est déclaré dans "VitaminCtrl.dll". (J'imagine que tu ne connais pas non plus?)

Il me reste encore une dizaine de jours pour trouver la solution...
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
19 févr. 2006 à 12:02
Salut,
theXman > Désolé, j'en n'ai aucune idée.
bigzooloo > Je ne connais pas cet Activex. Pour bien maitriser la programmation des composants COM/OLE/Activex, il faut juste s'entrainer avec des exemples simples pendant un certain temps. Ensuite, tu attaqueras les composants plus complexes. La documentation du composant est indispensable car il faut connaitre le role de chaque interface et ses méthodes. Après avoir bien compris le fonctionnement de ton Activex, je pense que tu pourras adapter ton code pour l'utiliser sans MFC. Ca prendra assez de temps et c'est pour cela que je ne peux tester cet Activex pour toi. Bon courage.
yserver > Parmi les solutions, je pense que tu peux faire un hook souris pour intercepter et bloquer tous les clics droits dans ton application. Il pourrait y avoir une meilleure solution. Si je la trouve je te la dirai.
yserver Messages postés 203 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 8 septembre 2006
16 févr. 2006 à 20:31
C'est parfait, Merci.
Une question au passage, je souhaite pouvoire empecher le clic droit est ce possible a partir de ce WebBroser.
Je part a la cpeche au renseignement de mon coté.

Felicitation.
bigzooloo Messages postés 36 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 6 octobre 2009
14 févr. 2006 à 14:28
Bonjour,

Je viens de me mettre (temporairement) à l'utilisation des ActiveX, mais je n'aime pas les MFC et autres ATL...

CPPFrance étant mon premier site de recherche, je suis facilement tomber sur ce code et je t'en remercie.

J'ai testé ton code dans mon programme et cela fonctionne très bien.
Cependant, j'aimerai utiliser un autre ActiveX qui permet de récupérer un flux vidéo (MPEG4) en provenance d'une caméra IP : mais je ne sais pas comment faire.

Autre précision, je ne veux pas le flux tel quel mais plutôt la succession d'images (à 25 img/sec) qui constituent le flux pour effectuer un traitement dessus et les enregistrer (dans un buffer ou autre).

J'ai à disposition :
- la documentation du SDK (en anglais) qui précise uniquement la marche à suivre avec les MFC.
- le fichier "MediaDBPlayback.dll" qui est l'ActiveX. (Du moins, d'après ce que j'ai compris).
- deux fichiers "mediaplayback.h" et "mediaplayback.cpp" qui contiennent l'implémentation de la classe "CMediaPlayBack : public CWnd"

Je peux vous envoyer les fichiers si besoin.

Quelqu'un peut m'aider ?

Merci.
theXman Messages postés 37 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 11 mars 2006
22 janv. 2006 à 18:19
salut

sais-tu comment utiliser un proxy avec l'ActiveX WebBrowser???

Merci
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
11 juin 2005 à 15:40
Salut,
coucou720 >> J'avoue ne pas avoir bien compris ta question. Dans ce code, c'est l'activex WebBrowser qui affiche la page web dans un conteneur. Si tu veux utiliser un autre activex, tu dois d'abord te documenter suffisamment sur ce dernier. Beaucoup d'activex contiennent une définition des types. Pour la récupérer dans ton tode tupeux utiliser la directive #import suivie du chemin complet de ton OCX comme ceci:
#import "c:\\windows\\system32\\MonDossier\\Monocx.ocx
Ainsi, tu pourras créer des instances des interfaces de cet ocx. Il faut donc bien connaitre ces interfaces. Une autre solution consiste à utiliser le SDK fournit par le créateur de l'activex. Ce SDK contient alors tous les fichiers nécessaires à la compilation.

vecchio56 >> J'avais déja pensé et essayé ce style mais ca ne change rien. Tu l'as testé avec ce code? Merci quand-même.
Bien sûr que ca marche dans la fenêtre principale. J'ai mis un EDIT juste comme exemple pour montrer qu'on peut utiliser n'importe quel controle comme conteneur.

A bientôt.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
7 juin 2005 à 13:57
Mais pourquoi créer un EDIT au lieu d'utiliser directement la fenêtre principale comme conteneur? (ca marche très bien sans)
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
7 juin 2005 à 13:50
Racpp, pour enlever le clignotement tu ajoutes le style WS_CLIPCHILDREN à la fenêtre conteneur
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
26 févr. 2005 à 23:21
Urgo > Tu peux nous dire comment tu as fairt? C'est bon à savoir. Merci.
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
17 févr. 2005 à 22:40
J'ai trouvé pour les clignotements... c'était très bête à eradiquer
scolinks Messages postés 69 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 19 octobre 2005 6
12 févr. 2005 à 13:34
c'est une implementation de controle activeX sous win32 api (avec la meme methode tu peux utiliser plein d'autre controles...) ... l'utilisation du navigateur n'est qu'une example...
T_Mehdi Messages postés 294 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 24 juillet 2015
12 févr. 2005 à 00:19
salut j'ai une petit question bete xD je c pas ce que f ton programme au juste apart afficher une page web
xD( c sur que si ta eux 10/10 c que il ya des trucs vraimment plus avancer que j'ai pas pue constater ^^)

Merci de votre reponce
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
31 janv. 2005 à 18:50
Merci à tous. C'est très encourageant. Pour pousser les choses un peu plus loin, je suis en train de finaliser un petit navigateur web utilisant le même activex avec la gestion des événements en plus. Je le posterai dès qu'il est fini.

Urgo > Le problème du clignotement pendant le redimensionnement de la fenêtre ne m'a pas préoccupé car il n'est pas génant. Je pense qu'il est possible de le réduire mais pas de l'éliminer complètement.

eRoZion > C'est vrai , cela fait plus de cinq mois que je m'y suis mis. Mon obstination a enfin porté ses fruits. De tous les messages que j'avais reçus, je n'ai retenu que les encouragements de BruNews et scolinks qui s'y etait mis lui aussi (merci à tous les deux).
cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
30 janv. 2005 à 05:54
Et bé bravo ...
Je me souviens que ca fait un sacré bout de temps que t'es dessus (vous étiez deux d'ailleurs je crois) et qu'on t'avait pas mal découragé.

Ca peut être carrément utile.

10


eRoZion
scolinks Messages postés 69 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 19 octobre 2005 6
29 janv. 2005 à 18:40
10 sur 10!
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
29 janv. 2005 à 12:22
Superbe exemple tu nous délivres ici! 10/10

Par contre comment éviter les problèmes de cliglotements lors du redimensionnement de la fenêtre? (j'ai essayé de chercher sous 'flicker free", etc... mais rien de bien intéressant de trouvé!)
cs_supergrey Messages postés 475 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 20 septembre 2010
29 janv. 2005 à 11:33
Ca marche nickel !
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 janv. 2005 à 10:23
Quand simplicité rime avec efficacité, en voilà une parfaite demonstration qui sera utile à beaucoup de gens.
EXCELLENT !!!