kanegr has asked for the wisdom of the Perl Monks concerning the following question:

Hi I am looking for a way to simulate windows paste. For instance if you copied a file navigated to a different directory and right clicked->paste. I tried win32::clipboard but it doesn't behave the same way. I'm assuming the function would look like clipboard->paste("c:/hi/hi.data"); But i haven't found anything.

Replies are listed 'Best First'.
Re: Simulate windows paste
by Corion (Patriarch) on Aug 18, 2008 at 19:31 UTC

    "Paste" is a matter of the application. The most likely and general way is to use Win32::GUITest and send a CTRL+V key combination to its window. But maybe you just want File::Copy?

Re: Simulate windows paste
by Joost (Canon) on Aug 18, 2008 at 20:20 UTC
      Ok might as well cut to the chase. This is what I'm trying to do specifically. I want to export an embedded ole to a scrap file. I can copy the ole to the clipboard programmatically in the program which the ole is embedded in. Then if I right click the windows desktop and select paste the ole is made into a scrap file on the desktop. Now I want to be able to do this programmatically as well in perl. Preferably to a directory.
        find out what win32 api calls are involved first
Re: Simulate windows paste
by zentara (Cardinal) on Aug 18, 2008 at 20:07 UTC
    Here is a trick I used using Tk. The Tk's Text clipboard runs pretty good, and you can use the copy/paste functions without actually showing the text box. You can run it, then use the right mouse button click to paste it here in the text box. It is a mediocre solution, but copying and pasting between applications can be tricky, because the application will usually clear the clipboard when they exit. Also, there are different clipboards. There is the mouse paste, the Paste in Menu's, etc. In other words, there is no simple answer. Your best bet is to use something that has a clipboard, like Notepad, or Tk::Text, load your file into it, then copy it. I do something like that in Gtk2 Visual Grep, which is what I use to copy code from files, into the Paste buffer for pasting here on Perlmonks. I use "vgrep n somefile", click on the name to load it, the use the rightclick menu to select all and copy.

    Tk copy to mouse clipboard and

    #!/usr/bin/perl use warnings; use strict; use Tk; use Tk::Clipboard; my $mw = tkinit; $mw->withdraw; #use Tk without showing a window my $content = 'foobar'.time; print "$content\n"; $mw->clipboardClear; $mw->clipboardAppend($content); MainLoop;

    I'm not really a human, but I play one on earth Remember How Lucky You Are
Re: Simulate windows paste
by dHarry (Abbot) on Aug 18, 2008 at 19:30 UTC