VisualBasic Access - Window Handler ermitteln und an *.exe übergeben

palaber

Captain
Registriert
Juni 2006
Beiträge
3.856
Hallö,

sitz gerade an einem alten Programm. Das ist in Access und VB erstellt worden. Ich versuche gerade eine
VB.NET Funktion als exe Datei einzubinden. Das geht soweit auch. Jetzt bin ich aber an meine Grenze gestoßen.

Ich versuche den WindowHandler der aktiven Anwendung (des Access VB Codes) abzurufen und an die exe zu übergeben.
In VB.NET klappt es, hier nicht. In VB.NET muss ich eine Bibliothek einbinden (System.Runtime.InteropService) benötige ich das auch in Access? Wenn ja, wie geht das^^? Anbei mein Code:

Code:
Public Function callTest()

Dim windowHandler As Long
Dim Pfad_Datei As String

windowHandler = GetForegroundWindow()           'Benötigt user32 Library - ruft Public Declare Function GetForegroundWindow auf'
uebergabeParameter = windowHandler.ToString() 'Wandelt handler in String zum übergeben'

Pfad_Datei = "test.exe" & windowHandler


DoEvents
Shell Pfad_Datei

End Function

Public Declare Function GetForegroundWindow Lib "user32" _
     () As Long 'Ermittelt den Handler des aktiven Fensters
 
Komisch, in Zeile 9 ist kein Leerzeichen zwischen dem Namen der EXE und deinem Aufrufparameter
Code:
'Statt:
Pfad_Datei = "test.exe" & windowHandler
' wohl eher:
Pfad_Datei = "test.exe " & windowHandler

Und in Zeile 7 konvertierst du zwar das Window Handle in einen String uebergabeParameter, verwendest aber in Zeile 9 die Variable windowHandler. Die Konvertierung (Zeile 7) ist nicht notwendig, da windowHandler sicher implizit in String konvertiert wird in Zeile 9

Ansonsten wüsste ich auch nicht weiter ...

Rossibaer
 
Zuletzt bearbeitet:
Danke, bin jetzt auch selber drauf gekommen. Das mit dem Leerzeichen ist mir dann auch aufgefallen. Bei der Konvertierung war ich mir nicht sicher, da hab ich sie lieber rein gemacht. Problem war, die Methode muss ohne "()" aufgerufen werden :freak:. Wie folgt klappt es:

Code:
Public Function getHandler()

Dim hWnd As Long                    'Handler des eigenen Fensters'
Dim Pfad_Datei As String            'Pfad der exe die aufgerufen wird'

hWnd = GetForegroundWindow          'ermittelt Handler des aktiven Fensters - Benötigt user32 Library'
parameterUebergabe = CStr(hWnd)     'Konvertiert Long in String damit verwendbar als Übergabeparameter - SAVE ;)'

Shell Pfad_Datei & " " & parameterUebergabe 'Ruft exe im Pfad mit entsprechenden Parameter (Handler) auf'

End Function

Private Declare Function GetForegroundWindow Lib "user32" () As Long    'Ermittelt den Handler des aktiven Fensters
 

Ähnliche Themen

Antworten
13
Aufrufe
5.578
VisualBasic Sendmessage und CMD
Antworten
9
Aufrufe
3.034
D
Antworten
4
Aufrufe
3.079
derBobby
D
Zurück
Oben