Clipboard - zachycení události Copy   otázka

VB.NET, Algoritmy

Dobrý den, potřeboval bych poradit se zachycením události kopírování do schránky (ctrl+c) za běhu mé aplikace. Jediné co jsem našel, ale nefunguje mi je toto:

Private Const WM_COPY As Integer = &H301

Protected Overrides Sub WndProc(ByRef m As Message)

        If m.Msg = WM_COPY Then
            MsgBox("Do schránky bylo něco zkopírováno")
        End If

End Sub

Aktuálně to řeším poněkud zbaběle pomocí Timeru a pokaždé kontroluji pomoci Clipboard.GetText() zda se text změnil či ne. Ale určitě šikovnější by to bylo právě s použitím té události, kdy uživatel něco zkopíruje a až poté aplikace bude s daty ve schránce dále pracovat. Budu rád za každou radu. Děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Udělat to je podstatně složitější, napsal jsem tady na to snippet:

http://www.vbnet.cz/snippet--29-sledovan...

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Děkuji, zajímavé. Leč jsem myslel, že by to mohlo být "podstatně" jednodušší, ale funguje to skvěle. Ješte nikdy jsem nezasahoval do souboru Form.Designer.vb, tak snad to nemá nějaké "vedlejší účinky" :-)

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

A ani do něj nikdy nezasahujte! Je to soubor automaticky vytvářený Visual Studiem a cokoliv do něj zapíšete nebo v něm změníte se může kdykoliv ztratit.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

A jenom ještě jedna věc. Zkoušel jsem do Seznamu do vyhledávání něco napsat, zkopírovat to, a msgbox v pohodě napíše hlášku, když ale potom okno prohlížeče zavřu, msgbox se znovu objeví a to hned 2x. Udělal jsem snad něco špatně ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud jste v mém kódu nic neměnil, pak je vše v pořádku a pravděpodobně něco manipuluje se schránkou.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Udělal jsem vše podle vašeho snippetu, ovšem píšete tam, že se mají určité řádky kodu ve Form.Designer.cs přesunout do Form.cs, já jsem myslel, že koncovka .cs je určená pro CSharp, takže jsem bral, že Form.Designer.cs = Form.Designer.vb, takže jsem ty řádky přesunul odtud. Jaký je tedy správný postup ?

PS: nejsem si vědom, že by se se schránkou něco neobvyklého dělo.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, to .cs je překlep, jedná se o kód Visual Basic .NET (soubor .vb, opraveno). Pokud přesunete pouze tu metodu Dispose, nebude to vadit.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Prošel jsem to opět ještě jednou a stále to samé. Teď si nejsem jistý, při vkládání ze schránky se má Msgbox také zobrazit ? Mě se totiž zobrazuje. A je divné, pokud text vkládám (ctrl+v) do internetového prohlížeče (IE 8) do kolonky pro zadávání www, objeví se Msgbox 2krát. Pokud ale vkládám text (ctrl+v) do poznámkového bloku, žádný Msgbox se nezobrazuje. Že by dělal prohlížeč ten bordel se schránkou ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, je možné že to dělá ten idiotský internet explorer. Kód reaguje na změnu obsahu schránky a toť vše.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Asi ano, takže děkuji a můžete to tu LOCK.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback