Diskuze: Schránka

C# .NET .NET (C# a Visual Basic) Schránka American English version English version

Avatar
matesax
Redaktor
Avatar
matesax:

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 Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 8.9.2012 14:07
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

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
Redaktor
Avatar
Odpovídá na David Čápka
matesax:
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.