Autor Beitrag
MartinBush
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46



BeitragVerfasst: Di 15.07.08 13:45 
Hallo,

im Forum habe ich nichts gefunden und bei MSDN auch nicht.

Ich schreibe ein CF Anwendung und möchte markierten Text kopieren. Da mir die Webbrowserkomponente keie Möglichkeit erlaubt habe ich die Tastatureingaben Strg+C ... simulier. Isinputkey gibt es auch nicht - im Netz habe ich die Möglichkeit einer eigenen SendKey Klasse gefunen (abgeleitet aus dem Open .Net Framework.

Das kopieren in die Zwischenlage klappt generell auch (Aufruf der Methode SendControlC();

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
 public static void SendControlC()
        {
            try
            {
                keybd_event(0x11000);// press ctrlkeybd_event
                keybd_event(0x43000); // press c
                keybd_event(0x430, KEYEVENTF_KEYUP, 0); //release c
                keybd_event(0x110, KEYEVENTF_KEYUP, 0); //release ctrl
            }
            catch
            {
                throw new ArgumentException("error to copy");
            }
        }


Gleich nachdem diese Methode aufgerufen ist möchte ich mit den Werten der Zwischenablage arbeiten - aber das klappt nicht es steht nur ein alter Wert drin.

So funktioniert es nicht:
ausblenden C#-Quelltext
1:
2:
  SendKeys.SendControlC();
      MessageBox.Show((string)Clipboard.GetDataObject().GetData(DataFormats.Text));


Jetzt habe ich es anders probiert.
Eine Methode A in der ich SendKeys.SendControlC(); aufrufe und Methode B in der ich den Inhalt des Clipboards ausgebe MessageBox.Show((string)Clipboard.GetDataObject().GetData(DataFormats.Text));.
Nun bekomme ich wirklich das was zuletzt kopiert wurde.


A:
SendKeys.SendControlC();
MessageBox.Show((string)Clipboard.GetDataObject().GetData(DataFormats.Text));

B:
MessageBox.Show((string)Clipboard.GetDataObject().GetData(DataFormats.Text));

Bei B würde ich wieder den alten Wert bekommen - er verliert ihn irgendwie - bzw kann ihn nicht speichern warum?

Bekommt keiner Notiz das was neues im Clipboard steht?
MartinBush Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46



BeitragVerfasst: Di 15.07.08 21:18 
Thread notwendig?
MartinBush Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46



BeitragVerfasst: Fr 18.07.08 18:42 
Ok habs hinbekommen und die Queue erstmal abgearbeitet vor dem Zugriff:

ausblenden C#-Quelltext
1:
Application.DoEvents();