mit keybd_event(VK_CANCEL,0,0,0) in die Zwischenablage ?



  • Bin leider kein Profi; muß aber auch “nur“ mit Ctrl-C in die Zwischenablage schreiben (kopieren).
    Die Funktion keybd_event klappt bei mir (WIN98) bei Zeichen ja gut. Z.B. wird mit
    keybd_event('X',0,0,0);
    keybd_event('X',0,2,0);
    ein 'x' in Notepad geschrieben (wenn es geöffnet ist und die Maus auf der Pos. steht).

    Leider klappt das mit Ctrl-C aus unerfindlichen Gründen nicht:
    keybd_event(VK_CANCEL,0,0,0 ); // passiert nichts
    keybd_event(VK_CANCEL,0,2,0 ); // passiert nichts

    Auch wenn ich die Ctrl und Ins-Taste nehme, kommt nichts Neues in die Zwischenablage:
    keybd_event(VK_LCONTROL,0,0,0); // passiert nichts
    keybd_event(VK_INSERT,0,0,0); // passiert nichts
    keybd_event(VK_LCONTROL,0,2,0); // passiert nichts
    keybd_event(VK_INSERT,0,2,0); // passiert nichts

    Ich verzweifele hier noch. Sitze seit Nächten vor dem Rechner. Brauche dringend Hilfe !!!

    P.S. Ein Versuch mit SendInput(...) scheitert übrigens schon am Unbekanntsein beim Linker trotz Einbindung von user32.lib. 😕



  • Das Problem hat sich teilweise erledigt: Wenn ich nämlich

    keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
    keybd_event('C',0, 0, 0);
    Sleep(6500);
    keybd_event('C',0, 2, 0);
    keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0);

    d.h. 6,5 Sekunden beim Kopieren warte, kommt der markierte Text doch schon in die Zwischenablage.

    Warum das so unzumutbar lange dauert muß ich dann wohl anderweitig klären...
    😡



  • Das habe ich mal zum Einfügen gemacht.

    keybd_event(VK_CONTROL,0,0,NULL); // [Strg] [0x11] drücken
    keybd_event('V',0,0,NULL); // [v] [0x56] drücken
    keybd_event('V',0,KEYEVENTF_KEYUP,0); // [v] [0x56] loslassen
    keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);	// [Strg] [0x11] loslassen
    

    Alternativ:

    MSDN => SetClipboardData()


Anmelden zum Antworten