Flash iranyitasa C/C++ programmal

 ( Finder | 2011. november 8., kedd - 17:28 )

Hello!

Olyan megoldast keresek amivel egy C/C++ programmal tudnek iranyitani egy Adobe Flash programot. Valami olyasmi megoldas kene, hogy meg tudjak nyitni a Flash programot ugy hogy az egy pufferbe renderelje a kepet es a programomtol fogadjon el esemenyeket. (Csak kattintasok es szovegbevitel.)

A legjobb az lenne ha mar letezne ehhez egy library ami mukodik Linux alatt.

(B tervnek az is jo lenne ha valaki tudna dokumentaciot arrol, hogy NPAPI-s plugin-okat hogyan lehet beepiteni egy programba. Picit tobb munka lenne, de ha nincs mas lehetoseg...)

Elore is koszonom!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

zsubb (sub)

[insert line here]
B.C. 3500 - DIY Vehicle / A.D. 30 - DIY Religion / A.D. 1991 - DIY OS

+1

Amikor nekem kellett ilyen, akkor raktam egy kis mini http server-t a C kódba (kb 50 sor), ami egyetlen egy url-t tudott kiszolgálni. A flash pedig sima http kérést hajtott végre, és úgy olvasta ki az eseményeket, amikre reagált, és post kéréssel adta vissza az eredményt, ha volt.

ebben az esetben ez nem jarhato, mert a flash program az adott...
Tulajdonkeppen a program alltal renderelt kepet szeretnem feldolgozni es az alapjan eventeket kuldeni a flash programnak. Pl. fekete a hatter -> klikk ide, zoldre valtott -> klikk oda...

Bar en nem vagyok nagy szaki ebben, de a Socket class nem lett volna elegansabb?

Nézd meg a Qt-t, ott is a QWebview osztály környékét.
http://doc.qt.nokia.com/4.7/qwebview.html

Anno még 4.2 alatt csináltam ilyet, már akkor is egész jól működött, de azóta sokat javítottak rajta. Most már tudsz javascript/C++ hook-okat is berakni, javascriptből pedig tudsz (ha saját, vagy van API-ja) a flash programoddal kommunikálni. Annak idején végigpróbáltam és működött, de most már nincs meg az a demo kód.

hmm... egeszen biztato... Van esetleg arra valami megoldas, hogy ennek a kimenete ne jelenjen meg a kepernyon, viszont a programom alltal hozzaferheto legyen?

Koszonom! Ugyan nem a legelegansabb megoldas, de a celnak megfelel majd:
1. buta browser QT-vel (vagy esetleg akar egy teljes FF? miert is ne.. majd kiderul...)
2. Xvfb-ben futtatas
3. Xvfb-bol kep lekerese

Szia!

Ezek szerint nem értem, mit akarsz csinálni, de bármit is, az biztosan megoldható a te C++ programodon belül.

A Qt komponenst tudod láthatatlanná tenni.

bool isVisible () const

Vagy egyszerűen kipozicionálod a látható képernyő területről. A renderelt képét szerintem szintén ki tudod nyerni valamilyen bitmapben, ha mást nem akkor windows szinten.

Nézd át az API-t, hogy mit lehet belül és kezd el használni a google-t :).

Első körben pl. ilyet találtam, 4 sor:

QImage img(mywidget.size());
QPainter painter(&img);
mywidget.render(&painter);
img.save("/some/file.jpg");

Még az jutott eszembe, hogy egy widgetnél az összes eventet meg tudod szűrni, és csak azt engedni tovább amit ténylegesen akarsz.

Itt van egy tesztkód, talán el tudsz indulni vele ...

Jónéhány swf-et simán le lehet játszani vele.
Mivel csak egy része van implementálva az npapinak, nem fog minden működni.

https://gist.github.com/1350968