Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam.
Poszukuję sposobu by móc wklejać(zamiast wpisywać ręcznie) wcześniej skopiowany tekst np. w okno czatu obsługiwanego przez javę w przeglądarce internetowej.
Czy jest dostępny sposób, by czynić to pod linuxem?
Offline
Zaznaczenie tekstu i wklejanie środkowym przyciskiem myszy nie działa ?
Offline
Shift+Insert ?
Offline
Niestety żadna z dostępnych metod wklejania i zaznaczynia nie działa w przypadku czatu. Nie ma żadnych problemów z kopiowaniem tekstu z/do przeglądarki internetowej, problem jest wyłącznie z czatem obsługiwanym przez javę.
Dodam że na windowsie też takiej możliwości czasem nie ma- wklejanie tekstu w pola nie obsugujące sytemowego kopiuj/wklej, sa to np. czaty, gry, niektróre programy i dlatego powstał programik pasteforce, który tę czynność umożliwia użytkownikom systemu z Richmond.
Ostatnio edytowany przez spook (2013-06-26 15:47:36)
Offline
Podaj link do tego czatu.
Offline
Tylko proszę tam zbyt długo nie przebywać:)
[url]http://czat.wp.pl/[/url]
Offline
U mnie wklejenie nie działa żadną metodą, używam Kilppera. Pewnie jest tak jak alex011 napisał.
Offline
Czaty przeważnie mają zablokowane wklejanie, żeby trochę utrudnić działanie bootów spamerskich, które są plagą takich chatów.
Jeżeli masz gdzieś kod lub źródło tego programu pasteforce, to warto by do niego zajrzeć, i zobaczyć, jak to jest tam zrobione.
PS.
U mnie pasteforce uruchomiło się przez wine, więc jak ogarniesz współdzielenie schowka z systemem, może się udać, względnie odpal przeglądarkę Windowsową na Wine, i zobacz czy ruszy.
EDYTA:
[url=http://www.sqlinform.com/forum4/read.php?3,467]Tutaj[/url] - w Viscie, brak wklejania blokowały funkcje bezpieczeństwa javy.
Podejrzewam, ze w Linuxie jest identyczna sytuacja.
Jaką Javę używasz w przeglądarce?
Ostatnio edytowany przez Jacekalex (2013-06-26 16:13:34)
Offline
Od kilku użytkowników czatu wiem że do wklejania tekstu używają właśnie windowsowego programiku pasteforce napisanego przez Wojtka Gałuszewskiego.
Wnioskuję, że programik ten służy obejściu blokady, jeśli takowa istnieje.
Offline
[b]Jaką javę używasz w przeglądarce?[/b]
od Oracle czy Opejdk czy może Icedtea?
Tutaj coś o Sun/Oracle jre:
http://askubuntu.com/questions/42122/cant-copy-from-clipboard-to-any-java-applet
Ostatnio edytowany przez Jacekalex (2013-06-26 16:35:26)
Offline
Używam javę od Oracle.
Sprawdzę ten "patent" z edycją pliku java.policy.
Jak to nie zadziała odpuszczę; liczyłem że uda się zastosować jakiś trick za pomocą linuxowych narzędzi.
Sprawdziłem jak mi zadziała pasteforce uruchomiony pod wine.
Odpalony wine loaderem pojawił się w trayu, mogłem wybrać opcję wyboru skótu klawiszowego, sposobu kopiowania lecz funkcja kopiowanie za jego pośrednictwem nie działa w przeglądarce uruchomionej spod linuxa. Musiałbym zainstalować IE lub Mozille pod wine ale szkoda mi bałagan robić bo playonlinux dociąga mi w tym celu sporo dodatków.
Offline
Witam
Dodałem linijkę
permission java.awt.AWTPermission "accessClipboard";
do pliku /opt/java/64/jre1.7.0_25/lib/security/java.policy i jest bez zmian.
Zadałem sobie trudu by zainstalować najnowszego firefixa na wine- zainstalował się, java także, lecz po instalacji flash11 mam dziwny wpis w pluginach a mianowicie zamiast "adobe flash player" widnieje wpis "shokwave flash player"
Po wejściu na strony używającego flasha jest info o braku potrzebnej wtyczki:)
Jeśli wątek był poruszany, będę wdzięczny za podpowiedź gdzie szukać porady.
Ostatnio edytowany przez spook (2013-06-27 14:47:05)
Offline
Ten Pasteforce - to przecież polski program.
Spróbuj napisać do autora, może pochwali się źródełkiem programu, lub coś doradzi.
Ostatnio edytowany przez Jacekalex (2013-06-27 15:07:06)
Offline
[b]Jacekalex[/b]
Ten Pasteforce - to przecież polski program.
Spróbuj napisać do autora, może pochwali się źródełkiem programu, lub coś doradzi.[/quote]
Napiszę do autora:) Jeśli zgodzi się udostępnić kod źródłowy, zamieszczę go na forum.
Offline
Mam już kod źródłowy dzięki uprzejmości autora programu Wojtka Gałuszewskiego.
[b]wklejacz.c[/b]
/* LINUX: g++ -L/usr/X11R6/lib -lX11 -lXtst wklejacz.cc -o wklej 27072004 */ //=========================Wklejacz.cc============================= #include <X11/extensions/XTest.h> #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #include <X11/keysym.h> #include <assert.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #define WIN_TITLE "Chat_Text_0v91beta" #define WIN_NAME "TEST" #define WIN_CLASS "test" main() { Display *disp; Window Sown; XClassHint class_hint; XEvent e; Atom type; int done=0; char keym[32]; int format, result; unsigned long len, bytes_left, dummy; unsigned char *data; //KeySym ksym unsigned int ksym; unsigned int kcode; if ((disp = XOpenDisplay(NULL)) == NULL) { printf("Unable to open display\n"); return 1; } assert(disp); Window w = XCreateSimpleWindow(disp, DefaultRootWindow(disp), 0, 0, 200, 70, 0, 0, 0); XSelectInput(disp, w, StructureNotifyMask); // XSelectInput(disp, w, StructureNotifyMask+ExposureMask); XStoreName(disp, w, WIN_TITLE); class_hint.res_name = WIN_NAME; class_hint.res_class = WIN_CLASS; XSetClassHint(disp, w, &class_hint); XMapWindow(disp, w); for(;;) { XNextEvent(disp, &e); if (e.type == MapNotify) break; } XFlush(disp); XSelectInput(disp, w, StructureNotifyMask+ExposureMask+KeyReleaseMask); printf("Program is running!\n"); while (!done) { XQueryKeymap(disp, keym); //Read keyboard // if (keym[8]==-128) //F5=-128 // if (keym[4]==32 & keym[2]==8) //CTRL_L+0 if (keym[12]==1) //F12 - wkleja po nacisnieciu F12 { for (int i=0;i<bytes_left;i++) { ksym=(unsigned int )data[i]; kcode=XKeysymToKeycode(disp,ksym); if (kcode != 0) { if (ksym>32 & ksym<39) XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),True, CurrentTime); // else XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),False, 0); if (ksym>39 & ksym<44) XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),True, CurrentTime); // else XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),False, 0); if (ksym==58 | ksym==60) XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),True, CurrentTime); // else XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),False, 0); if (ksym>61 & ksym<91) XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),True, CurrentTime); // else XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),False, 0); if (ksym==94 | ksym==95) XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),True, CurrentTime); // else XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),False, 0); if (ksym>122 & ksym<127) XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),True, CurrentTime); // else XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),False, 0); // XFlush(disp); XTestFakeKeyEvent(disp, kcode, False, 5 ); //XPending(disp); //XSync(disp, False); XFlush(disp); } XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),False, CurrentTime); if (ksym==0x0A)XTestFakeKeyEvent(disp, XKeysymToKeycode(disp, XK_Return),False, 100); // XNextEvent(disp, &e); XSync(disp, true); } while (keym[12]==1) { XQueryKeymap(disp, keym); //Read keyboard } XTestFakeKeyEvent(disp, XKeysymToKeycode(disp,XK_Shift_R),False, CurrentTime); // usleep(1000); XFree (data); } // XFlush(disp); Sown = XGetSelectionOwner (disp, XA_PRIMARY); XFlush(disp); // printf("Owner: %i\n",Sown); if (Sown != None) { XConvertSelection (disp, XA_PRIMARY, XA_STRING, SelectionNotify, Sown, CurrentTime); //XFlush (disp); // // Do not get any data, see how much data is there // XGetWindowProperty (disp, Sown, XA_STRING, // Tricky. 0, 0, // offset - len 0, // Delete 0==FALSE AnyPropertyType, //flag &type, // return type &format, // return format &len, &bytes_left, //that &data); if (bytes_left > 0) // Get data { result = XGetWindowProperty (disp, Sown, XA_STRING, 0,bytes_left,0, AnyPropertyType, &type,&format, &len, &dummy, &data); } //end if (bytes_left > 0) //XFlush (disp); } //end if (Sown !=None) usleep(100000); } //end while XCloseDisplay(disp); return 0; }
Szczerze mówiąc nie wiem co dalej z tym pliczkiem zrobić- wstydziłem się pytać autora o szczegóły, bo napisał że skrypt jest banalny:-)
Offline
W komentarzu na górze masz napisane, co z tym zrobić.
g++ -L/usr/X11R6/lib -lX11 -lXtst wklejacz.c -o wklejacz
Ja zrobiłem tak, i nawet się skompilował, działania jeszcze nie testowałem.
W kodzie masz też inne komentarze, m.in wklejanie pod F12.
Ostatnio edytowany przez Jacekalex (2013-06-27 19:47:59)
Offline
Sprawdź po skopiowaniu pliku tego pliku java.policy do katalogu ~/.java
Offline
Autor był na tyle uprzejmy, że podesłał mi również gotowy skrypt wykonywalny w wersji na linuxa:)
Jednak po odpaleniu w konsoli widzę że będę musiał jeszcze coś doinstalować, by odpalić skrypt.
$ ./wklej ./wklej: error while loading shared libraries: libXtst.so.6: cannot open shared object file: No such file or directory
Ostatnio edytowany przez spook (2013-06-27 20:49:59)
Offline
[quote=spook]Autor był na tyle uprzejmy, że podesłał mi również gotowy skrypt wykonywalny w wersji na linuxa:)
Jednak po odpaleniu w konsoli widzę że będę musiał jeszcze coś doinstalować, by odpalić skrypt.
$ ./wklej ./wklej: error while loading shared libraries: libXtst.so.6: cannot open shared object file: No such file or directory
[/quote]
[deb]libxtst6[/deb]
Offline
[b]yossarian
Włóczykij[/b]
Sprawdź po skopiowaniu pliku tego pliku java.policy do katalogu ~/.java[/quote]
bez zmian[b]yossarian
Włóczykij[/b]
libxtst6[/quote]
zainstalowałem już wcześniej a komunikat wciąż ten samKod:
$ wklej wklej: error while loading shared libraries: libXtst.so.6: cannot open shared object file: No such file or directoryOffline
W Debianie do kompilacji trzeba mieć pliki nagłówkowe z rozszerzeniem dev.
U mnie na Gentoo skompilował się bez problemu, i uruchamia się bez problemu.
./wklejacz Program is running!
i pojawia się czarne okienko.
Ale na chacie wp nie wkleja, widocznie są potrzebne jakieś inne czary. ;P
Ostatnio edytowany przez Jacekalex (2013-06-27 21:12:29)
Offline
@spook:
To jeszcze pokaz ten swój skrypt. I jaka to w ogóle wersja systemu?
Albo zrób jak Jacekalex napisał.
Offline
[b]Jacekalex[/b]
Skoro Tobie udało się odpalić programik skompilowany ze źródła, to może i ja spróbuję.
Poradź mi proszę, co doinstalować by kompilacja ruszyła; jak na razie otrzymuję taki komunikat
$ g++ -L/usr/X11R6/lib -lX11 -lXtst wklejacz.c -o wklejacz wklejacz.c:8:34: fatal error: X11/extensions/XTest.h: Nie ma takiego pliku ani katalogu compilation terminated
Offline
[deb]libxtst-dev[/deb]
BTW u mnie działa sposób z [tt]permission java.awt.AWTPermission "accessClipboard";[/tt] w ~/.java/java-policy
Sprawdzałem na kurniku.
Offline
Time (s) | Query |
---|---|
0.00012 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00115 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.190.153.77' WHERE u.id=1 |
0.00062 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.190.153.77', 1732918664) |
0.00046 | SELECT * FROM punbb_online WHERE logged<1732918364 |
0.00045 | SELECT topic_id FROM punbb_posts WHERE id=235675 |
0.00006 | SELECT id FROM punbb_posts WHERE topic_id=23818 ORDER BY posted |
0.00045 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=23818 AND t.moved_to IS NULL |
0.00006 | SELECT search_for, replace_with FROM punbb_censoring |
0.00208 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=23818 ORDER BY p.id LIMIT 0,25 |
0.00621 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=23818 |
Total query time: 0.0117 s |