Solved

using sendkeys

Posted on 1998-12-31
8
456 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
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

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.

 

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 10 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

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

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

Suggested Solutions

Introduction While answering a recent question (http://www.experts-exchange.com/Q_27402310.html) in the VB classic zone, I wrote some VB code in the (Office) VBA environment, rather than fire up my older PC.  I didn't post completely correct code o…
When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

839 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