Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
840to844
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
840to844
840to844
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Trick mit Sendkeys für Fokusierung?!

Trick mit Sendkeys für Fokusierung?!
06.02.2007 19:55:30
Till
Hallo Leute,
ich muss ein anderes Programm aus Excel fernsteuern.
Das gelingt mir mittels VBA auch schon ganz gut. Natürlich ist mir klar, dass zur Ausführung des sendkeys-Befehls das jeweilige Fenster den Fokus haben muss.
Eigentlich ist mein Ziel die Mausklicks und Tastaturbefehle im Hintergrund ablaufen zu lassen, ohne dass der User etwas davon mitbekommt, da die Userform der Hauptbedienung nach wie vor im Vordergrund bleibt!
Gibt es evtl. einen Trick, durch das man trotzalledem die Befehle auf dem Fenster im Hintergrund ausführen kann, ohne das eigentliche Sendkeys zu sehen?
Wenn einer das weiß, dann ihr!!
Ich hoffe, das Problem ist nicht unlösbar. Nehme auch evtl. Tools, die das für mich erledigen. Hab bereits Sendkeys von "http://orlando.mvps.org/#SendKeys" eingebunden, was ein wenig konfortabler ist als der eigentliche sendkeys-Befehl von VBA....aber leider noch mit dem Fokusproblem!
Schon mal vielen Dank für konstruktive Vorschläge!
Danke!
Gruß Till

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Trick mit Sendkeys für Fokusierung?!
06.02.2007 20:30:09
Ramses
Hallo
Erklär doch mal welche Applikation du fernsteuern, und was du dann machen willst.
Gruss Rainer
AW: Trick mit Sendkeys für Fokusierung?!
06.02.2007 21:48:23
Till
Hallo Rainer!
O.k. ich versuch es mal 'kurz' zu beschreiben.
Ich möchte mit Excel (also einer im Vordergrund stehenden Userform) ein Office-externes Programm bedienen.
Hier der Ablauf:
Beim ersten Starten der Arbeitsmappe öffnet sich die Userform in den Vordergrund, der Rest des Arbeitsblattes verschwindet (wird ausgeblendet), danach wird das externe Programm aufgestartet.
Sobald das aktiv ist, werden verschiedene Meldungen automatisch weggeklickt. Danach ist man in der Hauptansicht des Programmes. Auf der rechten Seite sind verschiedene Messquerschnitte, abgebildet (in einer Liste untereinander und insgesamt 38 an der Zahl).
Nun bietet dieses Programm die Funktion, die Betriebsmeldungen der einzelnen Messquerschnitte abzurufen. Hierzu muss man in der Hauptliste auf den jeweiligen Querschnitt klicken und danach über das Hauptmenü des Programms über "STRG-O" ein weiteres Unterprogramm auswählen und dort dann mit "O.k." den Datenabruf der Meldungen anstoßen. Danach nur noch die Daten per "Alt-D-S" in eine Txt-Datei speichern. Danach lasse ich das UnterProgramm schließen und kehre zurück zur Userform (mit Fokus auf diese Userform in Excel).
Bisweilen hab ich diese oben geschilderte Prozedur für alle Messpunkte in die entsprechenden Makros für die Auswahl über eine Combobox geschrieben, wodurch man relativ komfortabel nur die Namen der Messpunkte auswählt und das Makro dann automatisch den Fokus auf das externe Programm setzt und die geschilderten Mausklicks und Aufrufe durchführt. Gleiches gilt für die anderen 37 Messpunkte analog, aber mit Mausklick immer einen Schritt weiter unten.
Mittels einer zweiten Combobox auf der Userform lass ich dann (wieder per Auswahl in Abhängigkeit von den einzelnen Querschnitten) im Hintergrund diese eben erzeugten Meldungen öffnen und in einer entsprechenden Listbox anzeigen.
Sobald ich hier eine zweite Auswahl treffe, wird die Listbox geleert und mit dem neuen Inhalt angezeigt.
Die zweite Combobox kann ich auch ganz gut ohne Sendkeys bedienen. Hier ist also nicht das Problem.
Alles andere klappt eigentlich auch ziemlich gut, nur soll der User (falls irgendwie möglich!!) nicht mitbekommen, dass zwischenzeitlich (im ersten Part) für ihn geklickt wird.
Kann man das irgendwie anders lösen?
Gruß Till
Hier mal ein Ausschnitt von meinem Code:
Option Explicit
Dim y, z, zz, yy
Declare

Function WaitForSingleObject Lib "kernel32" _
(ByVal hHandle As Long, _
ByVal dwMilliseconds As Long) As Long

Sub Straße1() 'hier gibt es noch 37 analoge Fenster, die sich nur von einer jeweils anderen Mausposition und -klick (s.u.) unterscheiden
On Error Resume Next
'Keys an geöffneten Networkbrowser schicken mit sendkeys von <a href=""http://orlando.mvps.org/#SendKeys"">"http://orlando.mvps.org/#SendKeys"</a>
AppActivate "Autoscope Netzwerk Browser - v8.11" 'Fokus auf externes Programm setzen
Sleep 1500 'kurze Pause
SetCursorPos 340, 286 'Klick zur Auswahl des Messquerschnittes in Hauptliste des externen Programmes (Mausposition variiert dabei...)
DoEvents
mouse_event MOUSEEVENT_LEFTDOWN, 0&, 0&, 0&, 0&
DoEvents
mouse_event MOUSEEVENT_LEFTUP, 0&, 0&, 0&, 0&
DoEvents
Sleep 800
y = Shell("SendKeys.exe 2 2 ""Autoscope Netzwerk Browser - v8.11"" ""{PAUSE}%AA{DOWN}B""") 'Betriebsprotokoll STRG-O Starten
Sleep 3000
z = Shell("SendKeys.exe 1 2 ""Autoscope Betriebsprotokoll"" ""~"" 1") 'sofort Abfragen bestätigen
Sleep 3000
zz = Shell("SendKeys.exe 1 2 ""Autoscope Operations Log Viewer"" ""~"" 1") 'evtl. Fehler bestätigen
'danach noch als Txt-File speichern (muss noch eingebaut werden)
yy = Shell("SendKeys.exe 1 2 ""Autoscope Betriebsprotokoll"" ""%{F4}"" 1") 'Schließen des Betriebsmeldungsprogramms
Sleep 800
AppActivate "Verkehrsdaten- und Meldungsmanagement" 'so heißt das Fenster in Excel
End Sub

Anzeige
AW: Trick mit Sendkeys für Fokusierung?!
06.02.2007 22:11:11
Ramses
Hallo
Sorry, da habe ich leider keine Idee wie man Windows beibringt keine Desktopaktualisierung anzuzeigen.
Im Autoscope Development Kit findest du nichts dazu ?
Vielleicht liesse sich die DLL direkt ansprechen, dann musst du nicht den Umweg über das Applikationsfenster machen.
Gruss Rainer
AW: Trick mit Sendkeys für Fokusierung?!
06.02.2007 23:43:36
Till
Hallo Rainer,
da kennt sich aber einer aus..... ;-) Wusste gar nicht, dass Autoscope so bekannt ist... Hehe... Leider bin ich nicht wirklich Entwickler...kenn mich nur mit VBA ein wenig besser aus!
Weißt Du da näheres? Die für die Anwendung verantwortliche DLL heißt : "issclapi.dll". Könnte sie mal posten oder dir direkt mailen. Aber keine Ahnung wie man die direkt anspricht.
Trotzdem erst mal danke!
Gruß Till
Anzeige
AW: Trick mit Sendkeys für Fokusierung?!
07.02.2007 04:51:21
Ramses
Hallo
Sorry,.. aber das D-Kit habe ich auch nicht, ist ja auch nicht umsonst :-)
Um zu wissen was in der DLL steht, müsste man wissen mit was sie programmiert ist und dann dekompilieren,.... das ist allerdings nicht erlaubt :-)
Gruss Rainer
AW: Trick mit Sendkeys für Fokusierung?!
07.02.2007 17:40:16
Till
O.k. hast ja schon recht...
Ich werd versuchen es anders zu lösen!
Gruß Till

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige