IT NEWS PC REVUE PC FORUM FreeBSDInternet time: @020
Obsah fóra
Pravidlá  •  Kontakt  •  Prihlásenie  •  Registrácia

RIBANA trade - plastové okná

Kvalita v oblasti výplní otvorov. Žalúzie, rolety, sieťky, garážové brány. www.ribanatrade.sk

Hľadáte CRM softvér?

SunSoft.CRM • množstvo funkcií • možnosť individuálnych úprav • výhodná cena crm.sunsoft.sk

Ako schudnúť 10 kg

Ktorý je najlepší spôsob chudnutia? Prečítajte si tipy na boj s nadváhou www.news2channel.net

Našiel som spôsob bieliť zuby

Podarilo sa mi vybieliť si zuby bez drahých procedúr u zubára. www.zuzaninblog.com

Problémy s nadváhou?

Zistite viac o dosiahnutí ľahšej a zdravšej hmotnosti. www.janinblog.com

[Delphi] Simulacia ctrl+v bez clipboardu

Zaslať odpoveď
AutorSpráva
ha2
Užívateľ
Užívateľ

Založený: 21.12.2008
Príspevky: 114

PríspevokZaslal: Pi 25.06.10 15:11Odpovedať s citátomNávrat hore

Vdaka Fico. Ten cyklus "for i:= 0 to length(buf) do" sa mi zda ok, ale pastuje mi to iba prvy znak. A co som skusal bezne programy, vsade to ide len do xchat nie :|

edit: no neviem neviem ci to je dobra cesta, ked si to dam na klav. skratku a dam sa napr. do mozily tak to namiesto vlozenia textu otvori novy tab pricom do notpadu to pekne vklada (s timerom to slo dobre)
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 1052

PríspevokZaslal: Pi 25.06.10 16:59Odpovedať s citátomNávrat hore

ha2 napísal:
ked si to dam na klav. skratku a dam sa napr. do mozily tak to namiesto vlozenia textu otvori novy tab

Mozilla má takisto svoje prednastavené hot keys, takže je možné, že tam vznikla akási kolízia. Preto je lepšie použiť nejakú skratku, ktorú nepoužíva. Skús program upraviť takto:
kód:
procedure TForm1.AddText(var Msg: TMessage);
var
  i: integer;
begin

  FillChar(buf, 1024, 0);
  strcopy(@buf, 'toto sa prida do textu');
  hForWindow:= GetForegroundWindow();                       // zisti handle aktivneho okna
  procID:= GetWindowThreadProcessID(hForWindow, nil);
  AttachThreadInput(procID, GetCurrentThreadId(), true);    // attachne sa do procesu tohto okna
  hForControl:= GetFocus();                                 // zisti fokus aktivneho komponentu v tomto okne
  AttachThreadInput(procID, GetCurrentThreadId(), false);   // spät do nasho procesu

  for i:= 0 to length(buf) do                               // posielaj spravy WM_CHAR
      if ( buf[i] <> 0 ) then SendMessage( hForControl, WM_CHAR, buf[i], 0 )
                         else break;

end;


procedure TForm1.FormCreate(Sender: TObject);
begin

  RegisterHotKey( Handle, 85, MOD_CONTROL OR MOD_ALT , 85 );
  RegisterHotKey( Handle, 117, MOD_CONTROL OR MOD_ALT, 117 );

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin

  UnregisterHotKey( Handle, 85 );
  UnregisterHotKey( Handle, 117 );

end;


Pričom do hlavnej triedy TForm1 pridaj riadok:
kód:
    procedure AddText(var Msg: TMessage);
      message WM_HOTKEY;


To zaistí, že táto funkcia sa spustí vždy po stlačení skratky CTR+ALT+U (to si zmeň ako treba vo funkcii RegisterHotKey. Vyhneš sa tak použitiu clipboardu, no tú skratku, ako vravím, musíš použiť tak, aby ju nemala zaregistrovaná žiadna aplikácia, v ktorej to chceš aplikovať.
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
ha2
Užívateľ
Užívateľ

Založený: 21.12.2008
Príspevky: 114

PríspevokZaslal: Pi 25.06.10 18:11Odpovedať s citátomNávrat hore

Zatial vdaka, no skusim az zajtra pretoze nemam cas ... skratky si preregistrujem nie? ved som si skusal aj napr. ctrl+c a prebil som si to na vlastnu udalost alebo alt+f4.
Zobraziť informácie o autoroviOdoslať súkromnú správu
ha2
Užívateľ
Užívateľ

Založený: 21.12.2008
Príspevky: 114

PríspevokZaslal: So 26.06.10 20:49Odpovedať s citátomNávrat hore

Mas pravdu, treba mat inu skratku, a co mam dat do "Msg" ?
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 1052

PríspevokZaslal: So 26.06.10 21:00Odpovedať s citátomNávrat hore

Nepochopil som otázke. Ale Msg je štruktúra, ktorú vyplňuje systém, ty nič nevyplňuješ. Sú v nej informácie o prijatej správe (window message správe). Funkcia AddText sa vykoná vždy, ak hlavnému oknu dorazí správa WM_HOTKEY (ak bude detekované stlačenie zaregistrovanej klávesovej skratky), tzn že ty ju v programe nikde volať nemusíš.
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
ha2
Užívateľ
Užívateľ

Založený: 21.12.2008
Príspevky: 114

PríspevokZaslal: So 26.06.10 21:18Odpovedať s citátomNávrat hore

Presne takto som to mal len v inej procedure (asi som prepracovany). No len to pastuje iba prvy znak neviem preco.
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 1052

PríspevokZaslal: So 26.06.10 21:26Odpovedať s citátomNávrat hore

Skúšal si to na viacerých aplikáciach? Lebo mne to zatiaľ na každej funguje. Ak ti to robí všade, skús nastaviť breakpoint niekde v tele funkcie AddText a sleduj, kde sa preruší alebo proste kde sa niečo nevykoná a potom sem napíš čo sa deje.
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
ha2
Užívateľ
Užívateľ

Založený: 21.12.2008
Príspevky: 114

PríspevokZaslal: Ne 27.06.10 14:07Odpovedať s citátomNávrat hore

tak prve co ma napadlo sa potvrdilo. V D7 to funguje dobre v 2010 nie...A tu 2010 potrebujem,pekne
Zobraziť informácie o autoroviOdoslať súkromnú správu
Zobraziť príspevky z predchádzajúcich:    
Zaslať odpoveď
Nemôžete pridávať nové témy do tohto fóra.
Nemôžete odpovedať na témy v tomto fóre.
Nemôžete upravovať svoje príspevky v tomto fóre.
Nemôžete mazať svoje príspevky v tomto fóre.
Nemôžete hlasovať v tomto fóre.

Powered by phpBB 2.x.x © 2005 - 2012 PCforum, webhosting by WebSupport, edited by JanoF

SEO - optimalizácia pre vyhľadávače

Freebsd