Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Sendkeys an andere Anwendung

Begonnen von cyberchris, August 21, 2012, 17:27:32

⏪ vorheriges - nächstes ⏩

cyberchris

Hallo Access-Freunde,

ich habe mir ein Code gebastelt, mit dem geprüft wird, ob eine bestimmte Software (zum Drucken von Etiketten) installiert ist und bereits geöffnet ist.
Falls nicht geöffnet wird die Software geladen. Die funktioniert soweit - auch die Funktion, dass die gestartete Anwendung  den Focus erhält.
Nun möchte ich mittels SendKeys bestimmte Aktionen in der der Anwendung durchführen. Da klappt nur sporadisch..

...
AppActivate "Titel der Software", Wait:=True
        SendKeys "%", True
        SendKeys "F", True
        SendKeys "G", True
        SendKeys "{DOWN}", True
        SendKeys "{ENTER}", True
        SendKeys "12345", True
...
Zuerst wird im Menü eine Option aufgerufen und anschließend mit Enter bestätigt (%, F, G, DOWN, ENTER). Anschließend soll eine Zeichenkombination in ein Textfeld eingegeben werden. Das klappt manchmal - jedoch auch manchal etwas verkehrt. Die Buchstaben F und G sind teilweise noch dabei. Bsp. "FG12345"

Kann das sein, dass Access die SendKeys teilweise zu schnell übergibt, so dass dies nicht richtig ausgeführt wird?

PS: Verwende Access 2010

Ich habe noch eine kleine Frage im Anschluss... Wie kann ich wieder den Focus auf die Datenbank bekommen?

Vielen Dank
Gruß Christoph

daolix

Hallo

zu Frage 1: ein sleep nach AppActivate könnte helfen

Declare Sub apiSleep Lib "KERNEL32.DLL" Alias "Sleep" (ByVal dwMilliseconds As Long)

...
AppActivate "Titel der Software", Wait:=True
ApiSleep 500
SendKeys "%", True
....


zu Frage 2:
Declare Function SetForegroundWindow Lib "USER32.DLL" (ByVal hWnd As Long) As Long

Aufruf dann
SetForegroundWindow me.hwnd oder
SetForegroundWindow Application.hWndAccessApp


cyberchris

Hi, danke

Ab         apiSleep 25
funktioniert es.

Hatte es auch mal mit doevents probiert - hatte aber seltsame Nebenwirkungen...