Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
720to724
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
720to724
720to724
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fokus im Wechsel

Fokus im Wechsel
18.01.2006 11:10:54
Ingo
Hallo Allerseits,
kleines Problem am Rande...
Ich habe eine Mappe geöffnet (ThisWorkbook)
Ein externes Programm wird durch die Mappe gestartet,
dem Programm eine ProcessID zugewiesen
Ich muß im weiteren Verlauf mehrfach jeweils im Wechsel
die Mappe, bzw. das Programm in den Vordergrund/Fokus holen.
Da tu'ich mich jetzt 'recht schwer.
Falls mir jemand helfen könnte, wäre ich sehr froh.
Danke und Gruß
Ingo

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fokus im Wechsel
18.01.2006 11:31:07
Heiko
Hallo Ingo,
das geht, glaube ich, nur mit API.
Guckst du hier: https://www.herber.de/forum/archiv/708to712/t709211.htm
Wenn du da auch noch den Handle für das externe Programm ausliest, dann kannst du ja über SetForegroundWindow zwischen den Fenstern hin und herschalten.
Mußt mal selbst ein bisschen rumspielen, viel Spaß dabei.
Gruß Heiko
PS: Rückmeldung wäre nett !
Fokus im Wechsel ..zur Hälfte ;-)
18.01.2006 14:38:36
Ingo
Hallo Heiko,
das war schon mal sehr hilfreich, was Du mir hast zukommen lassen.
Die Mappe öffnet nun die externe Anwendung, danach erfolgt jetzt auch der erste
Wechsel zurück auf die Mappe.
Terminieren kann ich das andere Programm auch - nur der Wechsel von Excel
auf das Programm haut einfach nicht hin.
Ein paar Seiten mit dem Thema Handle bin ich schon durch, aber das Thema
erschließt sich mir einfach nicht wirklich.
Ich finde dieses verd...Fenster nicht.
Da der Code erst ein paar Zeilen hat, füge ich das alles 'mal ein.
Evtl. magst Du ja mal auf die Stelle mit den "?" schauen und mir noch einmal
unter die Arme greifen ?
(die Funktionen FindWindow und SetForegroundWindow sind anderweitig als public )
So oder so, vielen Dank die Unterstützung
Ingo
Option Private Module
Option Explicit
Private Declare

Function TerminateProcess Lib "kernel32" ( _
ByVal hProcess As Long, _
ByVal uExitCode As Long) _
As Long
Private Declare 

Function OpenProcess Lib "kernel32" ( _
ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) _
As Long
Private Declare 

Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long) _
As Long
Const PROCESS_TERMINATE = &H1
Private ProcessId As Long
Private ProcessId_Exit As Long
Private RetVal As Variant

Sub TeubStarten()
On Error GoTo Errorhandler
'Überprüfen, ob Teub auf dem Rechner installiert ist.
'Falls nein, Programmabruch
If Dir("D:\Win32app\TUN\EMUL\3270_32.EXE") = "" Then
MsgBox "Auf diesem Client ist keine TUN Emulation installiert!"
Exit Sub
End If
'Teub starten und ProcessID festhalten
ProcessId = _
Shell("D:\Win32app\TUN\EMUL\3270_32.EXE", vbNormalFocus)
'Wartezeit, damit Dataport reagieren kann
Application.Wait (Now + TimeValue("0:00:10"))
'TEST Fensterwechsel******
Dim lngActiveW As Long
'Excel erhält den Fokus
lngActiveW = FindWindow("XLMAIN", Application.Caption)
SetForegroundWindow lngActiveW
Application.Wait (Now + TimeValue("0:00:2"))
'?zurück auf die ProcessId ?
Exit Sub
'Über die ProcessID Teub beenden
ProcessId_Exit = OpenProcess(PROCESS_TERMINATE, 0&, ProcessId)
RetVal = TerminateProcess(ProcessId_Exit, 1&)
RetVal = CloseHandle(ProcessId_Exit)
Errorhandler:
End Sub

Anzeige
AW: Fokus im Wechsel ..zur Hälfte ;-)
18.01.2006 15:45:08
Heiko
Hallo Ingo,
über
Private Declare Function GetActiveWindow Lib "user32" () As Long
kann man den handle des Activewindow bekommen, z.B. so:
' Mal Testweise mit Notpad
varHelp = Shell("C:\Windows\Notepad.exe", vbNormalFocus)
lngNotPadHandle = GetActiveWindow
Aber ich habe es noch nicht hingekriegt damit auch wirklich zwischen den Fenstern hin und herzuschalten.
Schau dazu auch mal hier: http://www.activevb.de/tipps/vb6tipps/tipp0214.html
Und eigentlich ist das ne Frage für unseren API Spezi Nepumuk, habe ich aber bei Herber lange nicht mehr gesehen. Poste deine Frage doch zur Not nochmal hier, http://www.online-excel.de/fom/fo_na.php?f=1
da ist Nepumuk noch aktiv.
Nett wäre es dein endgültiges Ergebniss hier zu posten, damit ich dann auch weis wie es richtig geht.
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Fokus im Wechsel ..zur Hälfte ;-)
18.01.2006 18:53:04
Ingo
Hallo Heike,
danke für Deine Bemühungen - noch bin ich allerdings
eher erfolglos am basteln.
Dein Tip (VB Seite) werde ich morgen mal in der Fa. versuchen
einzubauen. Kann allerdings gut möglich sein, dass es dort
Unverträglichkeiten mit der VB-Version gibt.
Wir werden sehen und ich sage Bescheid, ob das Problem
gelöst ist oder ich mich in Tränen auflöse ;-))
Gruß, Ingo
AW: Fokus im Wechsel ..zur Hälfte ;-)
19.01.2006 07:41:16
Heiko
Moin Ingo,
habe nochmal ein bisschen gespielt, siehe Beispielmappe, vielleicht ist das ja die Lösung.
https://www.herber.de/bbs/user/30178.xls
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
...oder so
19.01.2006 15:07:37
Ingo
Hallo Heiko,
Du hast Dich ja richtig in's Zeug gelegt ;-)
Danke für die Unterstützung!
Gelöst habe ich es ähnlich, aber noch einfacher.
Falls Du Dich noch an den Eingangs eingestellten Code erinnerst,
siehe die Stelle mit den Fragezeichen
Sieht nun so aus :
'Teub starten und ProcessID festhalten
ProcessId = _
Shell("D:\Win32app\TUN\EMUL\3270_32.EXE", vbNormalFocus)
'Wartezeit, damit Dataport reagieren kann
Application.Wait (Now + TimeValue("0:00:10"))
'Beide Anwendungsfenster an die Variablen übergeben
Start_Aktiv = FindWindow("XLMAIN", Application.Caption)
Teub_Aktiv = FindWindow(vbNullString, "LIT-MVS-HOSTRECHNER - Tun 3270")
und nun wechseln die Fenster mit
SetForegroundWindow Teub_Aktiv ( oder Start_Aktiv )
wie geschmiert in den Vordergrund / Fokus.
Gruß, Ingo
Anzeige
AW: ...oder so
19.01.2006 15:14:48
Heiko
Hallo Ingo,
danke für die Rückmeldung, läuft bei mir hier auf XP und EXCEL 2003 auch mit deiner Version. Werde es zuhause mal auf ME und EXCEL 2000 testen.
Das ist dann immer das Problem oder der Vorteil (je nachdem wie man es sieht) wenn zuhause und in der Firma verschiedene Versionen laufen. Da kann man gleich testen wie stabil das eigene Programm in verschiedenen Umgebungen ist.
Freut mich dir geholfen zu haben. So bleibe ich bei API auch am Ball, man verlernt die Feinheiten da immer wieder so schnell ;-)
Gruß Heiko
w2k und 0ffice9 geht auch - oT
19.01.2006 15:25:24
ingo
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige