NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
IT rekvalifikace s podporou uplatnění. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Avatar
matesax
Tvůrce
Avatar
matesax:8.9.2012 12:40

Dobrý den,
potřeboval bych uložit jakákoliv data ze schránky jako soubor. Tedy potřeboval bych schránku nějak hlídat (abych nemusel používat timer) - myslím vstup. Popř nějak hlídat události Cut a Copy. Kdyžtak sáhnu po timeru... No a prostě každá nová data ukládat - nejspíše jak jsem psal všechna do souborů a někam si budu dělat poznámky, co byly skutečně soubory a co ne. Děkuji za případné řešení...

 
Odpovědět
8.9.2012 12:40
Avatar
David Hartinger
Vlastník
Avatar
Nahoru Odpovědět
8.9.2012 14:07
New kid back on the block with a R.I.P
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:8.9.2012 14:27

To jsem již viděl - proto píši sem... Hold to budu muset udělat pro každý typ zvlášť. A spokojil jsem se s přetahováním do programu (schránku jsem tedy vzdal)...

 
Nahoru Odpovědět
8.9.2012 14:27
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Hartinger
matesax:30.9.2012 10:54
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System;

namespace Hiproar
{
    class ClipboardHandler : Form
    {
        IntPtr nextClipboardViewer;

        public ClipboardHandler()
        {
            nextClipboardViewer = (IntPtr)SetClipboardViewer((int)this.Handle);
        }

        [DllImport("User32.dll")]
        protected static extern int SetClipboardViewer(int hWndNewViewer);

        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern bool ChangeClipboardChain(IntPtr hWndRemove, IntPtr hWndNewNext);

        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);

        protected override void WndProc(ref Message m)
        {
            const int contentChange = 0x308, chainChange = 0x030D;

            switch (m.Msg)
            {
                case contentChange:
                    DisplayClipboardData();
                    SendMessage(nextClipboardViewer, m.Msg, m.WParam,  m.LParam);
                    break;

                case chainChange:
                    if (m.WParam == nextClipboardViewer)
                        nextClipboardViewer = m.LParam;
                    else
                        SendMessage(nextClipboardViewer, m.Msg, m.WParam, m.LParam);
                    break;

                default:
                    base.WndProc(ref m);
                    break;
            }
        }

        void DisplayClipboardData()
        {
            System.Windows.Forms.MessageBox.Show(":)");
        }
    }
}

A data jsem dostal přes FileDrop formát... :)

Editováno 30.9.2012 10:56
 
Nahoru Odpovědět
30.9.2012 10:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.