Dobrodošli, goste ( Prijava | Registracija )

2 - broj stranica V   1 2 >  
Reply to this topicStart new topic

System text selection || Clipboard Change Monitor event [AIR], Custom event triggering na System klasi [AIR]

V
Shedvel
poruka Nov 7 2010, 18:48
Poruka #1




Grupa: Članovi
Poruke: 654
Datum reg.: 14-November 07
Lokacija: zapis
Član broj: 16,956



Po ovako lepom danu izgubih sate pokusavajuci da iznadjem nacin da uradim nesto od sledeceg :

1] Iz native AIR windowa pratim selektovanje teksta u bilo kojoj aplikaciji koja se izvrsava na sistemu. (ovo verujem da je ne izvodljivo);

2] Pracenje izmene stanja i sadrzaja systemskog clipboard-a, i triggerovanje nekog metoda po prepoznavanju izmene.


Elem,
obzirom da kao sto gore pomenuh ne verujem da je prva opcija izvodljiva (sto ne znaci da nisam otvorren za bilo kakvu smernicu ili sugestiju ), okrenuo sam se izvodljivijoj varijanti ... to jest drugoj opciji. I to samo da bih nakon pola sata lutanja po APIju shvatio da Clipboard nema nikakav event support, i da svaki nagovestaj istog verovatno predstavlja securitySandbox breach.

Tu se junacki isfrustriram, i krenem da razmisljam sta mi je ciniti...
Trenutna situacija je takva da probelm resavam overkill kodom, koji je Timer based, sto mi se bas ne dopada obzirom na resource impact AIR appova i bez Timer checka na svakih 500 milisekundi.

Monstruozni kod
CODE
    public class ReadMode extends MovieClip
    {
        private var grabbed:String;
        private var clipTimer:Timer;
        private var ldr:URLLoader;
        
        public function ReadMode()
        {
            addEventListener(Event.ADDED_TO_STAGE, RMonStage, false, 0, true)
        }
        
        private function RMonStage(e:Event):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, RMonStage, false);
            
            grabbed = "";
            clipTimer = new Timer(500);
            clipTimer.addEventListener(TimerEvent.TIMER, checkClipboard, false, 0, true);
            clipTimer.start();
        }
        
        public function kill():void
        {
            //TODO kill timer, and clip handlers
        }
        
        private function checkClipboard(e:TimerEvent):void
        {
            if ( Clipboard.generalClipboard.hasFormat(ClipboardFormats.TEXT_FORMAT) && String(Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT)) != grabbed)
            {
                grabbed = String(Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT));
                
            }
            else
            {
                Utils.eliminateListeners();
                activateAlterMonitors()
            }
        }




Imal ko ideju za alternativno resenje nekog od ova dva problema ?
Go to the top of the page
 
+Quote Post
Element9
poruka Nov 8 2010, 12:48
Poruka #2




Grupa: Članovi
Poruke: 613
Datum reg.: 21-February 06
Lokacija: Beograd
Član broj: 3,464



To pod 1] sigurno ne moze. Ne bi moglo cak i da programiras u Win32 API-u.

Za ovo pod 2]... radio sa clipboardom nista, ali iz AIR dokumentacije se i meni cini da je to sto si uradio jedini nacin.
Go to the top of the page
 
+Quote Post
Shedvel
poruka Nov 8 2010, 13:19
Poruka #3




Grupa: Članovi
Poruke: 654
Datum reg.: 14-November 07
Lokacija: zapis
Član broj: 16,956



Za ovo pod jedan sam pomisljao da pitam nekoga ko radi native C, postoji li opcija da se radi monitor kroz neki WinAPI [pada mi na pamet monitor za mouse dirver ili pointer shape za textSelector shape change.. something something...], pa bih se u tom slucaju okrenuo Alchemy-ju za integraciju (i onako samo cekam razlog da ga isprobam).

Dakle'm, radi'l ko C ?

Ova druga varijanta, bez obzira sto radi OK, i nema onoliki resource footprint koliki sam ocekivao, ce mi predstavljati samo prelazno resenje do iznalazenja alternative, a obzirom da je u pitanju moj private za-svoju-dusu nista-za-robovlasnika pet-projekt, ne zurim se preterano.
Go to the top of the page
 
+Quote Post
Element9
poruka Nov 8 2010, 17:01
Poruka #4




Grupa: Članovi
Poruke: 613
Datum reg.: 21-February 06
Lokacija: Beograd
Član broj: 3,464



Win32 API ima clipboard "objekat" (nije pravi objekat, jer C nije objektni jezik) koji se oglasava sa 4 poruke WM_CLEAR, WM_COPY, WM_CUT, WM_PASTE. Kao sto vidis ni tu ne postoji nesto tipa WM_CHANGE i mislim da se to resava slicno tvom resenju - samo bi to sigurno brze radilo (ako je brzina uopste problem).

Inace, u Win32 terminologiji ne postoje eventovi, vec samo poruke (message) koje se poll-uju.

TextSelector i slicne stvarcice ne postoje na tako niskom nivou kao sto je Win32 API. A i da postoje sigurno tvoja aplikacija ne bi dobila poruku o selektovanju teksta u drugoj aplikaciji. Mouse driver je tek ne bavi tim stvarima. Ono pod 1] stvarno nece moci. smile.gif Clipboard sluzi za te stvari.
Go to the top of the page
 
+Quote Post
Shedvel
poruka Nov 8 2010, 17:12
Poruka #5




Grupa: Članovi
Poruke: 654
Datum reg.: 14-November 07
Lokacija: zapis
Član broj: 16,956



Eh... pa dobro. Nista od textSelection'a, mada svakako hvala za info u vezi WinAPI-ja i C-a.

Ostaje ovo sa timerom na clipboardu, i da budem iskren koliko god se meni ne svidjalo, nesto sam testirao to skroz lepo radi za 500ms <n <1000ms sto je negde dovoljno; jer sumnjam da puno ko selektuje i kopira text krace od 500ms.

Go to the top of the page
 
+Quote Post
syndrome
poruka Nov 8 2010, 19:17
Poruka #6


zgužvam.. bacim

Grupa: Urednici
Poruke: 6,376
Datum reg.: 1-June 05
Lokacija: Beograd
Član broj: 808



Zapravo, postoji nacin da se u C-u odradi ta prica, ali to niko ne radi prosto jer je budza, i moze da bude nestabilno (ogradjujem se od onoga da niko ne radi, jer ko zna sta se sve radi po windowsu..).

Teorijski bi to trebalo da je moguce izvesti ovako:
1) presresti poruku koja drzi hendl prozora u fokusu.
2) otkriti da li je fokusirana kontrola tog prozora text kontrola (npr. TextBox ili InputBox ili kako se vec zove) i da li pripada nekom standardu (recimo MFC u slucaju TextBoxa, InputBoxa blabal), i ako da, slusati njene native evente (tacan nacin mi je nepoznat, ali sam siguran da je izvodljivo, zato sto cak i VB ume da se zakaci na native C evente i messaging u windowsu tokom run-timea, a moguce je da izvodljivo i kacenjem na neki mehanizam preko nekog dlla).
3) ako je iole ispracen neki windows-wide standard u aplikaciji (a obicno jeste), moguce je presresti trigger za promenu teksta, a u krajnjem slucaju, moguce je slusati keyboard (system-wide) i tada vuci tekst iz kontrole u fokusu.
4) taj monitor ugasiti kada fokusirana kontrola vise nije kompatibilna sa uslugom.

Izvan teorije, sumnjam da je ista od ovoga moguce uraditi iz AIRa, tako da je sve ovo moot point.

Sto se verzije 2 tice, bez ulazenja u to da li moze ili ne, moram da te pitam sta ce ti to? Malo mi mirise na gresku u dizajnu, tj. mora da je usability nekako mogao bolje da se osmisli (nije lepo stalno gvirkati u clipboard, to malo narusava eticke i funkcijske principe clipboarda).

[edit]Mislim na ovo sa tajmerom.[/edit]
Go to the top of the page
 
+Quote Post
Shedvel
poruka Nov 8 2010, 20:54
Poruka #7




Grupa: Članovi
Poruke: 654
Datum reg.: 14-November 07
Lokacija: zapis
Član broj: 16,956



CITAT
Sto se verzije 2 tice, bez ulazenja u to da li moze ili ne, moram da te pitam sta ce ti to? Malo mi mirise na gresku u dizajnu, tj. mora da je usability nekako mogao bolje da se osmisli (nije lepo stalno gvirkati u clipboard, to malo narusava eticke i funkcijske principe clipboarda).


Moze i radi, trenutno bas baratam funkcionalnim appom i skroz mi je koristan. E sad za sta se koristi....

pa recimo to ovako... nije neeticki, u pitanju je realna alternativa sledecem fiktivnom scenariju:

izlaz procesuiranja velike kolicine podataka su recimo odf, pdf i sl. dokumenti sa nekozistentno rasporedenjim sekvencama podataka npr. u sred dokumenta :[ a, 1123, 445433, 2344, 4455] e sad, da bi sebi olaksao manipulaciju, takvim sadrzajima to jest da bih izbegao potrebu da kopiram iz dokumenta pa pastujem u window > textField aplikacije, iskoristio sam timer monitor za clipboard i to sljaka super.

Konacna funkcionalnost saljes podatke na obradu sa ctrl+c bez potrebe za fokusom, ili intervencijom bilo kog tipa nad procesnom aplikacijom, super korisna usteda na vremenu, i bezmalo pa super automatizacija.... mozda je cak bolje sto ne moze sa selectionTextom, jer se ovako daje bar neka kontrola nad unosom.

Tako da sto se komentara u vezi greske u dizajnu ili usabilitija tice, ovo je unapredjenje a ne greska, izostavlja potrebu za fokusairanjem i pastovanjem sadrzaja u program da bi isti izvrsio operacije nad podacima... prilicno zgodna i funkcionalna ideja, koja mi se sto je vise razvijam sve vise dopada... dodje mi da je patentiram... biggrin.gif
Go to the top of the page
 
+Quote Post
syndrome
poruka Nov 8 2010, 21:14
Poruka #8


zgužvam.. bacim

Grupa: Urednici
Poruke: 6,376
Datum reg.: 1-June 05
Lokacija: Beograd
Član broj: 808



dada, ok, kapiram funkcionalnost (mada je kontraintuitivna u odnosu na namenu clipboarda >> copy ne bi nikad trebalo da RADI nesto).

onda, u vezi sa usabilityjem, preporucujem da (ako se uopste radi o aplikaciji za krajnje korisnike) postoji neka jasna indikacija da je monitoring nad clipboardom ukljucen, i da moze da se iskljuci po zelji.

srecom, pa AIR verovatno ogranicava citanje clipboarda na tekstualni sadrzaj (ako se ne varam), inace bi brzo shvatio u kakav pakao si se upustio smile.gif

ali sto se interne upotrebe tice, moram da pozdravim domisljatost, heheh
Go to the top of the page
 
+Quote Post
Shedvel
poruka Nov 8 2010, 21:20
Poruka #9




Grupa: Članovi
Poruke: 654
Datum reg.: 14-November 07
Lokacija: zapis
Član broj: 16,956



[quote name='syndrome' date='Nov 8 2010, 21:14' post='973185'
srecom, pa AIR verovatno ogranicava citanje clipboarda na tekstualni sadrzaj (ako se ne varam), inace bi brzo shvatio u kakav pakao si se upustio smile.gif

ali sto se interne upotrebe tice, moram da pozdravim domisljatost, heheh
[/quote]


U pitanju je app samo za mene, i neke moje potrebe, mada mi se koncpet dopada pa ga mozda zalepim jos negde ako se ukaze prilika.

Sto se AIR ogranicenja na citanje clipboarda tice nema ga biggrin.gif vraca objekt, ali postoji mogucnost da se isti filtrira buildIN propertijem ClipboardFormats.TEXT_FORMAT (ladno sam radio proveru rucno dok nisam nasao po apiju ovaj property.... inace Adobe Docs je Krš najgori za snalazenje), tako da je prilicno safe.
Go to the top of the page
 
+Quote Post
syndrome
poruka Nov 8 2010, 22:27
Poruka #10


zgužvam.. bacim

Grupa: Urednici
Poruke: 6,376
Datum reg.: 1-June 05
Lokacija: Beograd
Član broj: 808



ipak je ta AIR podrska dovoljno rudimentarna, apstraktna, i secure.
kad bi radio to u C-u, ne bi krco toliko te smajlije smile.gif

to je ujedno i glavno objasnjenje zasto to (verovatno) niko ne radi.

jednom sam, doduse davno, lovio ms technoteove u vezi sa cb implementacijom.
jedva sam se otarasio tih kostura i duhova koje iskopah iz dubokih dubina windowsa, danima su se vrzmali po kuci.
Go to the top of the page
 
+Quote Post
Element9
poruka Nov 8 2010, 22:34
Poruka #11




Grupa: Članovi
Poruke: 613
Datum reg.: 21-February 06
Lokacija: Beograd
Član broj: 3,464



CITAT (syndrome @ Nov 8 2010, 19:17) *
3) ako je iole ispracen neki windows-wide standard u aplikaciji (a obicno jeste), moguce je presresti trigger za promenu teksta, a u krajnjem slucaju, moguce je slusati keyboard (system-wide) i tada vuci tekst iz kontrole u fokusu.

E bas je to problem. Obicno jeste, ali mozda i nije. Tako da ti nista ne garantuje da ce cela stvar raditi. Pala je i meni na pamet ta varijanta, ali sam na kraju ipak napisao "stvarno nece moci". smile.gif

CITAT
nije lepo stalno gvirkati u clipboard, to malo narusava eticke i funkcijske principe clipboarda


Sta znam, mnogi download manageri rade bas to da bi hvatali linkove za download iz clipboarda. Nekad zasmeta, ali neki su i prilicno pametni pa jos ispadne i korisno.
Go to the top of the page
 
+Quote Post
syndrome
poruka Nov 8 2010, 22:47
Poruka #12


zgužvam.. bacim

Grupa: Urednici
Poruke: 6,376
Datum reg.: 1-June 05
Lokacija: Beograd
Član broj: 808



"stvarno nece moci"
pa mislim da radi sve osim java, flash, i slicnih virtuelizacija. ko pravi native aplikaciju za windows, verovatnoca je 99% da je koristio visual studio ili neki mfc-compliant sdk, u suprotnom nije normalan. [edit]mfc-compliant = .net?[/edit]

ali i slazem se sa tobom da je bolje to definisati kao "ne moze".

a za ovo drugo:
ne volim download managere, nesto me boli iznutra.
ok, ponekad sam konzervativan i preterujem.

svi hvale onaj jdownloader ili kako se vec zove, a ja sam resio taj problem tako sto sam poceo da mrzim i bojkotujem rapidshare (gospode, jel neko video ovog novog sto naduvava onaj button??). moram sve kontra jbg.
Go to the top of the page
 
+Quote Post
Element9
poruka Nov 8 2010, 23:10
Poruka #13




Grupa: Članovi
Poruke: 613
Datum reg.: 21-February 06
Lokacija: Beograd
Član broj: 3,464



Svasta se jos koristi: Qt, GTK+, wxWidget, sklepane gui kompoenetne direktno u opengl-u ili directx-u u igrama... ali i za njih je, kao i za .net, pitanje da li su mozda "mfc-compliant", ili bolje win32-api-complent posto mfc nije nesto sa cime iko zeli da bude complient. smile.gif

E bas sam na JDownloader mislio. Nije to neki epohalni feature, ali ne samo sto stedi jedan paste nego odma krece da proverava da li fajlovi stvarno prisutni i grupise ih u logicke celine i tako to. Kad zavrsis sa kopiranjem svih linkova on je vec ceo posao pripreme uradio. Ali razumem ja taj tvoj kontraski fazon.
Go to the top of the page
 
+Quote Post
syndrome
poruka Nov 8 2010, 23:25
Poruka #14


zgužvam.. bacim

Grupa: Urednici
Poruke: 6,376
Datum reg.: 1-June 05
Lokacija: Beograd
Član broj: 808



nisam bas najbolje ispratio zasto se odustalo od mfca. verovatno zato sto je previse pesacki, ali mislim da je logika i struktura svega ostala prilicno neizmenjena u .netu (ne bih znao iz prve ruke, ali razum mi kaze da mora da je tako).

menjali su se mozda event modeli, i taj i takav neki saobracaj medju komponentama, ali to je "samo" infrastruktura.

Qt i GTK+ bi trebalo da su mfc-compliant koliko god to glupo zvucalo. cim su toliko popularni na windowsu, siguran sam da generisu malo problema (a po prirodi stvari, tesko je proci pored GUIja koji nesto ne radi, jer to udara vrlo slikovite samare svakom developeru).
Go to the top of the page
 
+Quote Post
Element9
poruka Nov 8 2010, 23:32
Poruka #15




Grupa: Članovi
Poruke: 613
Datum reg.: 21-February 06
Lokacija: Beograd
Član broj: 3,464



Ne znam kako izgleda .net i nadam se da necu saznati. Stvarno mislim da je izraz koji trazis Win32-compliant, posto je MFC samo jedan od mnogih wrappera.

Kad bi sve ovo citao neko ko se stvarno razume u materiju verovatno bi umro od smeha sta smo se sve nalupetali.
Go to the top of the page
 
+Quote Post
syndrome
poruka Nov 9 2010, 00:03
Poruka #16


zgužvam.. bacim

Grupa: Urednici
Poruke: 6,376
Datum reg.: 1-June 05
Lokacija: Beograd
Član broj: 808



pa nisam siguran da li lupetamo... moguce je, definitivno. nisam nikakav ekspert za c i c++ terminologiju.

ali opet, moj pre-AS, pre-internet zivot je bio baziran na low-level petljanju sa hard diskovima, visual studiom, gomilom msdn diskova (to je bilo blago), i usput sam video creva mnogih dll fajlova.

mfc jeste wrapper*1 ali je i framework. zahvali microsoftu na trpanje standarda NOGAMA i na subsequent miskoncepcijama koje iz toga proizilaze. u stvari kad malo bolje razmislim, mislim da su hteli da budemo glupi pa da polazemo njihove sertifikovane testove.


*1 (wrapper je glupav termin, mfc je zapravo apstrakcija.. I framework, al aj sad, juce sam otpao od smeha kad sam video pitanje na TOEFL testu "sta su distribuirani sistemi", meni su na pamet odmah pale distributerske kuce, vinilske ploce, i catering servisi, ali terminologija, terminologija.... icon8.gif prave budale od nas*2, znam ja dobro sta je distribuirani sistem, a sta je distribuirani informacioni sistem je podskup tog skupa. i to mi je naravno, automatski palo na pamet, znajuci da su pederi*3, ALI OPET moj odgovor nije bio tacan, posto njih u stvari zanima podskup tog podskupa, a to je distributed computing wacko.gif. jbg.)

*2 od nas koji moramo da se dokazujemo pederima*3.

*3 da se gejevi ne uvrede, izraz peder je kod mene rezervisan samo za heteroseksualce koji parazitiraju po skolama i univerzitetima.
Go to the top of the page
 
+Quote Post
Shedvel
poruka Nov 9 2010, 00:11
Poruka #17




Grupa: Članovi
Poruke: 654
Datum reg.: 14-November 07
Lokacija: zapis
Član broj: 16,956



CITAT
kad bi radio to u C-u, ne bi krco toliko te smajlije


Oh bih ne brini, ja sam ih krcao i kada sam C svodio na 74 u 75 ili 90 , ali to su neka davno zaboravljena znanja koja samo sluze kao reper moje starosti.

CITAT (Element9 @ Nov 8 2010, 23:32) *
Kad bi sve ovo citao neko ko se stvarno razume u materiju verovatno bi umro od smeha sta smo se sve nalupetali.


Verovanto.



Interesantno je koliko kvalitetnog potenicjala se generise u najvecem broju tema zacetih u fl sekciji.
Go to the top of the page
 
+Quote Post
Shedvel
poruka Nov 9 2010, 00:15
Poruka #18




Grupa: Članovi
Poruke: 654
Datum reg.: 14-November 07
Lokacija: zapis
Član broj: 16,956



CITAT (Shedvel @ Nov 9 2010, 00:11) *
Oh bih ne brini, ja sam ih krcao i kada sam C svodio na 74 u 75 ili 90 , ali to su neka davno zaboravljena znanja koja samo sluze kao reper moje starosti.



Verovanto.



Interesantno je koliko kvalitetnog potenicjala se generise u najvecem broju tema zacetih u fl sekciji.




[EDIT]
Polagao si TOEFL juce ?
Go to the top of the page
 
+Quote Post
Element9
poruka Nov 9 2010, 10:57
Poruka #19




Grupa: Članovi
Poruke: 613
Datum reg.: 21-February 06
Lokacija: Beograd
Član broj: 3,464



CITAT (syndrome @ Nov 9 2010, 00:03) *
mislim da su hteli da budemo glupi pa da polazemo njihove sertifikovane testove.

Nisam verovao u takve teorije zavere dok nisam morao da polazem za IBM-ov sertifikat. Ako nije dovoljna kripticnost dokumentacije i ocigledan nameran nedostatak user-friendlinessa, onda ti jos uslove dobijanje licence za softever time da moras imati njihov sertifikat. Cena polaganja za taj sertifikat je cetvorocifrena.

Secam se i vezbi iz sistemskog i mreznog programiranja na faxu kad je asistent objasnajvao zasto radimo u linuxu a ne windowsu: "Nije sto sam ja pobornik open source-a i linux, a jesam, nego uporedite ova sva koda". I pokaze nam paralelno kod za linux (unix, posix... kako god) i windows. Prvi jasan i bez dokumentacije, a drugi pun microsoftovih hieroglifa iz win32 api-a: LPTSTR, PCTSTR... i slicnih gluposti.
Go to the top of the page
 
+Quote Post
WhiteWeedow
poruka Nov 9 2010, 11:03
Poruka #20




Grupa: Članovi
Poruke: 976
Datum reg.: 22-February 06
Lokacija: Kad bi i ja sam znao... :)
Član broj: 3,483



Pa mislim da moze i to, ali bi onda morao neke posebne service da koristis, ali kako god bio bi zez... E jedino da WIN napravi kontrollu za to mislim da to nebi bilo tesko napraviti samo ko bi sve koristio.
Go to the top of the page
 
+Quote Post

2 - broj stranica V   1 2 >
Reply to this topicStart new topic

 



Lo-fi verzija Trenutno vreme: Saturday 18. May 2013 - 13:01

Sve informacije (poruke, teme i sl.) predstavljaju stavove samo njihovih autora.
Objavljivanje informacija sa sajta u nekomercijalne svrhe moguće je samo uz navođenje URL adrese diskusije.
Za sve druge vidove distribucije potrebno je imati izričitu dozvolu administratora Dizajn Zone i/ili autora poruka.
Autorska prava za sadržaj poruke zadržava njihov autor, osim ako nije drugačije naznačeno.

powered by:Plus hosting