2009-06-23 6 views
0

Ich habe einen Code, der PASTING zu jeder Drittanbieter-Anwendung durch Senden von Strg + V (siehe unten) auslöst, aber dies scheint nicht mit CITRIX zu arbeiten. Gibt es eine andere Methode, um Strg + v als Keyb-Simulation auszulösen?Gibt es eine Methode, um das Ereignis paste (ctrl + v) für eine Anwendung auszulösen?

keybd_event(VK_CONTROL, Lo(MapVirtualKey(VK_CONTROL,0)), 0,0); 
keybd_event(86, Lo(MapVirtualKey(86,0)), 0,0); 
keybd_event(86, Lo(MapVirtualKey(86,0)), KEYEVENTF_KEYUP,0); 

Antwort

1

Ah, die schönen Probleme mit Citrix!

  1. Ich würde zuerst auf der empfangenden Anwendungsseite überprüfen, dass Sie tatsächlich etwas in der Zwischenablage haben. Versuchen Sie manuell dort einzufügen. Wenn es leer ist, handelt es sich nicht um ein Automatisierungs-/Tastatur-Hook-Problem.
  2. Wenn der Inhalt der Zwischenablage in der Tat verfügbar ist, würde ich dann verschiedene Möglichkeiten zur Kommunikation mit der empfangenden Anwendung versuchen: Senden von Windows-Nachrichten (WM_PASTE, aber auch andere im Falle des Scheiterns zu sehen, ob irgendwelche durchgehen können), aber auch, ob Sie können DDE tun.
3

Vielleicht können Sie eine WM_PASTE Nachricht an die Anwendung senden?

0

Ich denke, die kritische Aussage hier ist - mit CITRIX.

Meine Erfahrung mit Interkommunikation mit Citrix-Anwendungen ist, dass viele Dinge, die auf einem normalen Desktop funktionieren, fehlschlagen, wenn sie in einer Citrix-Umgebung ausgeführt werden. Ich würde zuerst versuchen, eine WM_PASTE-Nachricht zu senden, wie Gamecat vorgeschlagen hat, und wenn das fehlschlägt, möchten Sie vielleicht sicherstellen, dass Ihre Clients Ihre Anwendung über einen Citrix-Desktop ausführen, NICHT indem sie die Anwendungen direkt von einer Verknüpfung auf ihrem Desktop ausführen. Wenn eine Citrix-Anwendung über eine externe Verknüpfung gestartet wird, erhält sie eine andere Sitzung als beim Start von einer internen Verknüpfung auf dem Citrix-Desktop.