Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

using sendkeys

Posted on 1998-12-31
8
Medium Priority
?
475 Views
Last Modified: 2008-03-17
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
Comment
Question by:furley
8 Comments
 
LVL 2

Expert Comment

by:VBDesigns
ID: 1453473
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
 

Author Comment

by:furley
ID: 1453474
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
 
LVL 2

Expert Comment

by:kswinney
ID: 1453475
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
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 

Author Comment

by:furley
ID: 1453476
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
 
LVL 3

Expert Comment

by:groone
ID: 1453477
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
 
LVL 2

Expert Comment

by:hobster
ID: 1453478
where did you get those numbers for each keybd_event?
0
 
LVL 3

Expert Comment

by:groone
ID: 1453479
in vb help, do a search for  "Key Codes" then select the "key codes constants" its a great list.
0
 

Accepted Solution

by:
edunc earned 20 total points
ID: 1453480
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

Featured Post

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
When trying to find the cause of a problem in VBA or VB6 it's often valuable to know what procedures were executed prior to the error. You can use the Call Stack for that but it is often inadequate because it may show procedures you aren't intereste…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

824 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question