| |

Fortgeschrittene ProgrammierungRe: Kidnappen wir doch glatt mit der VBEx32.DLL  | |  | Autor: Dieter (Moderator) | Datum: 05.07.02 11:39 |
| Hi Elwood,
hmmm.... hast Recht. Ich habe den Tipp mal eben etwas erweitert.
Der Code sieht jetzt wie folgt aus:
<code><font color=#000099>Option</font> <font color=#000099>Explicit</font>
<font color=green>' zunächst die benötigten API-Deklarationen</font>
<font color=#000099>Private</font> <font color=#000099>Declare</font> <font _
color=#000099>Function</font> GetWindowThreadProcessId <font _
color=#000099>Lib</font> _
"user32" (<font color=#000099>ByVal</font> hWnd <font color=#000099>As</font> _
<font color=#000099>Long</font>, lpdwProcessId <font color=#000099>As</font> _
<font color=#000099>Long</font>) _
<font color=#000099>As</font> <font color=#000099>Long</font>
<font color=#000099>Private</font> <font color=#000099>Declare</font> <font _
color=#000099>Function</font> FindWindow <font color=#000099>Lib</font> _
"user32" _
<font color=#000099>Alias</font> "FindWindowA" (<font _
color=#000099>ByVal</font> lpClassName <font color=#000099>As</font> <font _
color=#000099>String</font>, _
<font color=#000099>ByVal</font> lpWindowName <font color=#000099>As</font> _
<font color=#000099>String</font>) <font color=#000099>As</font> <font _
color=#000099>Long</font>
<font color=#000099>Private</font> <font color=#000099>Declare</font> <font _
color=#000099>Function</font> GetWindow <font color=#000099>Lib</font> _
"user32" _
(<font color=#000099>ByVal</font> hWnd <font color=#000099>As</font> <font _
color=#000099>Long</font>, <font color=#000099>ByVal</font> wCmd <font _
color=#000099>As</font> <font color=#000099>Long</font>) <font _
color=#000099>As</font> <font color=#000099>Long</font>
<font color=#000099>Private</font> <font color=#000099>Declare</font> <font _
color=#000099>Function</font> GetParent <font color=#000099>Lib</font> _
"user32" _
(<font color=#000099>ByVal</font> hWnd <font color=#000099>As</font> <font _
color=#000099>Long</font>) <font color=#000099>As</font> <font _
color=#000099>Long</font>
<font color=#000099>Private</font> <font color=#000099>Const</font> GW_HWNDNEXT _
= 2
<font color=green>' benötigte API-Deklaration</font>
<font color=#000099>Private</font> <font color=#000099>Declare</font> <font _
color=#000099>Function</font> WaitForSingleObject <font _
color=#000099>Lib</font> _
"kernel32" ( _
<font color=#000099>ByVal</font> hHandle <font color=#000099>As</font> <font _
color=#000099>Long</font>, _
<font color=#000099>ByVal</font> dwMilliseconds <font color=#000099>As</font> _
<font color=#000099>Long</font>) <font color=#000099>As</font> <font _
color=#000099>Long</font>
<font color=green>' benötigte VBEX-Funktion</font>
<font color=#000099>Private</font> <font color=#000099>Declare</font> <font _
color=#000099>Sub</font> VBEX_MakeChild <font color=#000099>Lib</font> _
"vbex32.dll" _
<font color=#000099>Alias</font> "VBMAKECHILD" ( _
<font color=#000099>ByVal</font> zhWnd <font color=#000099>As</font> <font _
color=#000099>Long</font>, _
<font color=#000099>ByVal</font> ownerhWnd <font color=#000099>As</font> _
<font color=#000099>Long</font>, _
<font color=#000099>ByVal</font> x <font color=#000099>As</font> <font _
color=#000099>Long</font>, <font color=#000099>ByVal</font> y <font _
color=#000099>As</font> <font color=#000099>Long</font>)
<font color=green>' Ewartet wird die Zeitangabe in Millisekunden!</font>
<font color=green>' z.B. 1000 für 1 Sekunde</font>
<font color=#000099>Public</font> <font color=#000099>Function</font> Wait( _
<font color=#000099>ByVal</font> mSek <font color=#000099>As</font> <font _
color=#000099>Long</font>)
WaitForSingleObject -1, mSek
<font color=#000099>End</font> <font color=#000099>Function</font>
<font color=green>' Anwendung starten und Fenster-Handle zurückgeben</font>
<font color=#000099>Private</font> <font color=#000099>Function</font> _
Shell2hWnd(<font color=#000099>ByVal</font> sFilename <font _
color=#000099>As</font> <font color=#000099>String</font>, _
Optional <font color=#000099>ByVal</font> Mode <font color=#000099>As</font> _
VbAppWinStyle)
<font color=#000099>Dim</font> lngAppTaskID <font color=#000099>As</font> _
<font color=#000099>Long</font>
<font color=#000099>Dim</font> lngProcTaskID <font color=#000099>As</font> _
<font color=#000099>Long</font>
<font color=#000099>Dim</font> lnghWnd <font color=#000099>As</font> <font _
color=#000099>Long</font>
<font color=green>' TaskID der zu startenden Anwendung</font>
<font color=#000099>Dim</font> lTime <font color=#000099>As</font> <font _
color=#000099>Long</font>
lTime = Int(Timer)
<font color=#000099>Do</font>
lngAppTaskID = Shell(sFilename, Mode)
<font color=#000099>Loop</font> <font color=#000099>Until</font> lngAppTaskID _
<> 0 <font color=#000099>Or</font> Int(Timer) - lTime > 2
<font color=green>' Anwendung konnte nicht gestartet werden</font>
<font color=#000099>If</font> lngAppTaskID = 0 <font _
color=#000099>Then</font> <font color=#000099>Exit</font> <font _
color=#000099>Function</font>
<font color=green>' Jetzt noch kurz warten</font>
DoEvents
Wait 25
<font color=green>' Fenster durchlaufen und nach Process-ID suchen</font>
lnghWnd = FindWindow(vbNullString, vbNullString)
<font color=#000099>Do</font> <font color=#000099>While</font> lnghWnd <> 0
<font color=green>' Existiert kein Eltern-Fenster, dann ProcssID</font>
<font color=green>' ermitteln und mit TaskID vergleichen</font>
<font color=#000099>If</font> GetParent(lnghWnd) = 0 <font _
color=#000099>Then</font>
GetWindowThreadProcessId lnghWnd, lngProcTaskID
<font color=green>' Handelt es sich um die gesuchte TaskID?</font>
<font color=#000099>If</font> lngProcTaskID = lngAppTaskID <font _
color=#000099>Then</font>
<font color=green>' Fenster-Handle zurückgeben und Schleife</font>
<font color=green>' verlassen!</font>
Shell2hWnd = lnghWnd
<font color=#000099>Exit</font> <font color=#000099>Do</font>
<font color=#000099>End</font> <font color=#000099>If</font>
<font color=#000099>End</font> <font color=#000099>If</font>
<font color=green>' Nächstes Fenster</font>
lnghWnd = GetWindow(lnghWnd, GW_HWNDNEXT)
<font color=#000099>Loop</font>
<font color=#000099>End</font> <font color=#000099>Function</font>
<font color=#000099>Private</font> <font color=#000099>Sub</font> _
Command1_Click()
<font color=#000099>Dim</font> zhWnd <font color=#000099>As</font> <font _
color=#000099>Long</font>
<font color=green>' DOS-Box starten und kidnappen</font>
zhWnd = Shell2hWnd(Environ$("COMSPEC"), vbNormalFocus)
VBEX_MakeChild zhWnd, Me.hWnd, 0, 0
<font color=#000099>End</font> <font color=#000099>Sub</font></code> Cu
Dieter |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevWizard für VB5/6 
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|