On 11/09/2010 01:45, Jakson A. Aquino wrote:
On Thu, Sep 9, 2010 at 8:24 PM, Jakson A. Aquino<jaksonaqu...@gmail.com> wrote:
On Thu, Sep 9, 2010 at 5:40 PM, Michel Claveau - MVP
<enleverlesx_xx...@xmclavxeaux.com.invalid> wrote:
Hi!
Example for send ^V (with PyWin32):
import time,win32api,win32con
win32api.keybd_event(win32con.VK_CONTROL, 0, 0, 0)
win32api.keybd_event(ord('V'), 0, win32con.KEYEVENTF_EXTENDEDKEY | 0, 0)
time.sleep(0.05)
win32api.keybd_event(ord('V'), 0, win32con.KEYEVENTF_EXTENDEDKEY |
win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(win32con.VK_CONTROL, 0, win32con.KEYEVENTF_KEYUP, 0)
Thank you very much! Your code solved my problem. I added some lines
to set the focus into R before the ^V and then back to Vim:
Unfortunately, I was wrong. Your code do send the ^v as expected, but
I have problem with the selection of the Windows which will receive
the ^v. The code above was OK in a Windows XP running inside
VirtualBox, but when tested in a real machine, it proved to be highly
inconsistent. Sometimes the ^v gets pasted into R, but more frequently
it is pasted into Vim itself or nowhere. Below is the complete code
that I'm using. It's a vim script. The python code is delimited by
"python<< EOL" and "EOL":
function! SendToRPy(aString)
python<< EOL
import time
import win32api
import win32con
import win32com.client
import win32clipboard
import vim
aString = vim.eval("a:aString")
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(aString)
win32clipboard.CloseClipboard()
shell = win32com.client.Dispatch("WScript.Shell")
ok = shell.AppActivate("R Console")
if ok:
win32api.keybd_event(win32con.VK_CONTROL, 0, 0, 0)
win32api.keybd_event(ord('V'), 0, win32con.KEYEVENTF_EXTENDEDKEY | 0, 0)
time.sleep(0.05)
win32api.keybd_event(ord('V'), 0, win32con.KEYEVENTF_EXTENDEDKEY |
win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(win32con.VK_CONTROL, 0, win32con.KEYEVENTF_KEYUP, 0)
shell.AppActivate("Vim")
else:
vim.command("call RWarningMsg('Is R running?')")
time.sleep(1)
EOL
endfunction
When R isn't running, the script correctly shows the warning message
"Is R running?". Does anyone know what should I do to correctly use
the AppActivate function or is there a better approach to this
problem?
I'd add some more small sleeps to give Windows/R time to act, IYSWIM. I
learned that from experience. :-)
--
http://mail.python.org/mailman/listinfo/python-list