Sendkeys

B

Basta1980

Hi all,

I'm using a simple sendkey statement to paste (ctrl v) cell content to
another application. However when running the code it sometimes works (I can
see the cell content copied and pasted to the application) but most of the
times it just jumps from Excel to the other application and stops (so nothing
is pasted). Anybody got a clue what might be going on here?


Code =

Gemini:

AppActivate ("CSM - Citrix Presentation Server Client")
SendKeys ("{^V}"), True

Kind regards,

Basta
 
G

Gary''s Student

If the problem is intermittent, it may be a timing issue. Try putting a
DoEvents between your statements
 
B

Basta1980

Hi Gary,

Thank you for your help but it doesn't solve my problem. What happens is
when I run the procedure;

1. It jumps to the other application (this works)
2. Select an inputbox with shortcode ALT+S (this does not work)
3. Paste data with shortcode CTRL+V (this works)

The code I use for the ALT+S is;
SendKeys "%S", True

The code I use for the CTRL+V is;
SendKeys "^V", True

In essence both lines are the same, though I tried putting one of them in
brackets which didn't solve my problem. This probably expalins my situation a
bit better. Maybe you, or someone else, can make something out if it 'cause
I'm lost here

Greetz

Basta
 
H

Helmut Meukel

A DoEvents might not be enough.
I would use a call to SLEEP API function within a loop to avoid
freezing Excel.

Declare Sub Sleep lib "kernel32" (ByVal dwMillisecs as Long)

Sub Doze(Millisecs as long)
Dim i as Long
for i = 1 to Millisecs/10
Sleep(10) 'freeze your code for 10 milliseconds
next i
End Sub

Depending on the sluggishness of your system, you may need to call
Doze with a value of up to 2000 (= 2 second) to allow the app getting
activated and able to receive the SendKeys.
Usually 200 to 300 should be sufficient.

HTH.

Helmut.
 
B

Basta1980

Gary,

Found the issue > s instead of S

:-S

Gary''s Student said:
If the problem is intermittent, it may be a timing issue. Try putting a
DoEvents between your statements
 
M

Matthew Herbert

Basta,

As noted by others on the thread, and from your observations, SendKeys is
quite temperamental. Initially, when I used to use SendKeys I discovered
issues with wait times and code debugging. For example, the "wait" argument
of SendKeys never seemed to work, DoEvents sometimes did the trick, and
Application.Wait or Sleep was almost always needed. Despite using these
tricks to get SendKeys to work properly, I found it to be unreliable. (As a
side note, I discovered that if I ran a procedure without any breakpoints, I
could better test SendKeys; however, if I stopped or interrupted the code
prior to a procedure completing its execution, then SendKeys never worked
properly).

Anyhow, I finally got so frustrated with SendKeys that I moved over to a
number of API calls that work by grabbing handles to specific windows (i.e.
windows, combo boxes, text boxes, etc.) and then sending messages to those
handles. Though this was a significant investment in time and resources,
I've never run into any SendKeys issues (including reliability).

Best,

Matthew Herbert
 
B

Basta1980

Hi Matthew,

Thanks for your comment on this. API and the corresponding coding something
which I'm not familiar with. Maybe, soom time soon, I will spend some time on
this.

Thnx

Basta
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top