• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 488
  • Last Modified:

using sendkeys

I'm having problems getting sendkeys to work in photoshop. I could get it to work in notepad. I think with Photoshop is that when it first starts up, there is a splash screen that comes up and stays there for a while. During that time, I'm using sendkeys to photoshop and they're not getting through. Below is the code.

Private Sub cmdNotePad_Click()
   Dim RetVal
   RetVal = Shell("Notepad.exe", 1)
   SendKeys "ab", True
   SendKeys "%fa", True
End Sub

Private Sub cmdPhotoshop_Click()
   Dim RetVal
   RetVal = Shell("D:\Program Files\Adobe\Photoshop 5.0\Photoshp.exe", 1)
   SendKeys "%fn", True
End Sub

My question is how do I wait for that splash screen to go away and then send the sendkeys command?
0
furley
Asked:
furley
1 Solution
 
VBDesignsCommented:
Doesn't Photoshop have an ActiveX/OLE interface you can use to communicate with it?  (I know it doesn't answer your sendkeys, but that would be the way to use it)
0
 
furleyAuthor Commented:
yes it does. It's called OLE Automation. Even if I use it, I would still need to use sendkeys. Unfortunately, Photoshop's support for OLE doesn't seem to be very reliable. I've tried the above code on Word, which has a splash screen come up and everything worked fine, so it may not be a splash screen problem.
0
 
kswinneyCommented:
Change your code to look like this:

Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

Private Sub cmdPhotoshop_Click()
   Dim RetVal
   RetVal = Shell("D:\Program Files\Adobe\Photoshop 5.0\Photoshp.exe", 1)
   'The 3000 makes it sleep for 3 seconds. Add for longer sleep
   Sleep 3000
   SendKeys "%fn", True
End Sub

0
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

 
furleyAuthor Commented:
That didn't work. I don't think the splash screen is the problem and I don't think there's anything wrong with the code. I think there's something wrong with Photoshop.
0
 
grooneCommented:
Try the keyb_event, I think this should work in photoshop

' in a bas module past
Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

' your code
Private Sub cmdNotePad_Click()
       Dim RetVal
       RetVal = Shell("Notepad.exe", 1)
       keybd_event 65, 0, 0, 0 'A press Down
       keybd_event 65, 0, 2, 0 'A released
       keybd_event 66, 0, 0, 0 'B press Down
       keybd_event 66, 0, 2, 0 'B released

       keybd_event 18, 0, 0, 0 'Alt press Down
       keybd_event 70, 0, 0, 0 'f press Down
       keybd_event 65, 0, 0, 0 'A press Down
       keybd_event 70, 0, 2, 0 'f released
       keybd_event 65, 0, 2, 0 'A released
       keybd_event 18, 0, 2, 0 'Alt released
    End Sub

    Private Sub cmdPhotoshop_Click()
       Dim RetVal
       RetVal = Shell("D:\Program Files\Adobe\Photoshop 5.0\Photoshp.exe", 1)
       SendKeys "%fn", True
    End Sub
0
 
hobsterCommented:
where did you get those numbers for each keybd_event?
0
 
grooneCommented:
in vb help, do a search for  "Key Codes" then select the "key codes constants" its a great list.
0
 
eduncCommented:
make a new timer and make sure enabled = false
then use this code:
Private Sub cmdPhotoshop_Click()
   Dim RetVal
   RetVal = Shell("D:\Program Files\Adobe\Photoshop 5.0 Photoshp.exe", 1)
   timer1.interval = 100 * 'how ever many seconds the splash screen usually takes
   timer1.enabled = true
End Sub

private sub timer1_timer
  SendKeys "%fn", True
end sub

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now