Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
216to220
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
216to220
216to220
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

tasten per api an ein window senden

tasten per api an ein window senden
13.02.2003 23:55:19
marcus
hallo api-profis...

wie kann ich per vba z.b. eine tastenkombination an ein fenster senden ? ich habe ein programm, dass (wie der explorer) ein ALT benötigt, um in den menu-modus zu kommen. dann soll mit D das pulldown-menu "datei" geöffnet werden und dann mit T der punkt "Transkription".

also eine tastenfolge ALT, D, T

das handle des programms bzw. des fensters habe ich auch, da es ja die hauptklasse (hauptfenster) ist.

aber wie kann ich diese tastenkombinationen benutzen ?
ich möchte das ganze mit api-funktionen und nicht mit dem vba-sendkeys machen.

gruss,

marcus

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: tasten per api an ein window senden
14.02.2003 01:10:14
Peter Haserodt
Hi marcus,
lade dir bei:
http://www.allapi.net/agnet/apiguide.shtml
den Api-Guide und schaue dir dort die Keyboard - Gruppe an.
Alles was das Herz begehrt.

Gruss Peter

www.haserodt.de

Re: tasten per api an ein window senden
14.02.2003 08:47:55
marcus
hallo !!

das tool kenne ich, aber was noch besser ist, weil es auch deutsch ist: www.vbapihelpline.de

allerdings finde ich einfach keine funktion, die tasten zu einem bestimmten handle oder fenster sendet... ob ich den wald vor lauter bäumen nicht sehe?

ich finde echt nix... :((

gruss,

marcus

Re: tasten per api an ein window senden
14.02.2003 09:32:25
Peter Haserodt
Hi Marcus,
vielleicht hilft dir

PutFocus
respektive
SetFocus
weiter.
(Fenster für die Eingabe den Keyboardfokus setzen. Näheres bei den APITools)

Gruss Peter

Anzeige
gut, dass du "setfocus" ansprichst...
14.02.2003 10:14:00
marcus
hi peter!

setfocus macht mich wahnsinnig!

Declare Function SetFocusWnd Lib "user32.dll"Alias "SetFocus" (ByVal hwnd As Long) As Long

normalerweise gibt die funktion ja das vorher aktive handle zurück. allerdings bekomme ich IMMER eine 0 zurück (fehler!).

man kann doch bei dem aufruf nicht so viel falsch machen:

a=setfocus(handle)

mehr parameter verlangt die funktion doch nicht...

langsam verzweifle ich echt! :(((

gruss,

marcus

Re: gut, dass du "setfocus" ansprichst...
14.02.2003 12:23:39
Peter Haserodt
Hi Marcus,

mal zum testen VBA-Editor:


Option Explicit

Private Declare Function GetForegroundWindow Lib "user32" () As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Declare Function Putfocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long

Sub Finden()
Dim iHwnd As Long, iHwndMain As Long
iHwndMain = GetForegroundWindow
Debug.Print iHwndMain
iHwnd = FindWindow("XlMain", vbNullString)
Debug.Print iHwnd
iHwnd = Putfocus(iHwnd)
Debug.Print iHwnd
iHwnd = Putfocus(iHwnd)
Debug.Print iHwndMain
End Sub

Code eingefügt mit: Excel Code Jeanie

Es könnte Sein, dass das Fenster welches du ansprichst, keinen Tastaturfokus erhalten kann.


Alternativ kannst du ja auch mal mit BringWindowToTop oder ähnlichen Geschichten experementieren.

Gruss Peter

Anzeige
:(((
14.02.2003 12:43:02
marcus
hi peter...

die setfocus routine klappt bei mir nicht... ich bekomme immer eine 0 als rückgabewert!

ich geb's langsam auf! :(((

Re: :(((
14.02.2003 13:23:44
Peter Haserodt
Hi,
bekommst du genau mit meinem Code auch nur 0 zurück ???

Ich erhalte die Handles ausgegeben.

Gruss Peter

Re: :(((
14.02.2003 16:30:17
marcus
hi peter,

also bei deinem code bekomme ich auch ein handle, aber ich verstehe nicht, warum es bei meinem code überhaupt nicht funktioniert.
kann es daran liegen, dass du das handle von excel abfragst und ich ein handle von einem anderen programm ?

das habe ich bei www.allapi.net gelesen: "The SetFocus function sets the keyboard focus to the specified window. The window must be associated with the calling thread’s message queue."

mit anderen worten, man kann nur fenster "fokussieren", die mit dem vba code sprich mit excel zu tun haben.
aber es muss doch eine möglichkeit geben, auch externe programme bzw. fenster zu fokussieren.

also wie gesagt, bei deinem code klappt es!

mann! wer hätte gedacht, dass es so problematisch ist! :-/


gruss,

marcus

Anzeige
klasse !!
16.02.2003 20:16:43
marcus
vielen dank, gerd !
das scheint genau der richtige weg zu sein!

hätte echt nie gedacht, dass es teilweise so problematisch sein kann mit den api-routinen... ;-)

gruss,

marcus

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige