Fenster in einem Fremden Programm erstellen

MLelite

Mitglied
Hi
Weiß jemand ob das geht mit visual basic. Hab da schon etwas
Code:
Private Declare Function FindWindow Lib "user32" Alias _
  "FindWindowA" (ByVal lpClassName As String, _
  ByVal lpWindowName As String) As Long
jetzt brauch ich noch einen Befehl der in dem gefundenen Fenster ein weiteres einbaut schätze das geht irgendwie mit api funktionen
sendmessage würd da ja nicht gehen weil es einen Befehl im fremden Programm nur ausführt oder?
 
Hi MLelite,

was verstehst Du unter einem Fenster einbauen Also ich kann mir ja vorstellen, dass Du mittels SetParent eine Deiner Formen an ein fremdes Fenster andocken kannst. Aber vielleicht erklärst Du mal, was Du genau vorhast.

Gruß
Das Orakel
 
Ich hab das mal mit Purebasic gemacht, gib in die Console den Titel des Programms an, also zb öffne Teamspeak2 als fremdes Programm und schreib dann "Teamspeak 2" in die Console rin. Dann sollte die Form nur im Ts sein.

edit: könnte man eine dll datei erstellen mit Purebasic und die dann in vb einbinden, so das nur die Funktion benutzt wird
kann doch bestimmt jemand helfen bitte
 

Anhänge

  • Examples.zip
    5,7 KB · Aufrufe: 39
Zuletzt bearbeitet:
hi@all
ok die Zeit hat mich weiter gebracht
mit den Funktionen von api die aus der Lib von win32 kommen
FindWindow
GetWindow
SetParent

bin ich weiter gekommen, zum Glück habe ich einen Sourcecode gefunden hier das ein Fenster in einem anderen Fenster öffnet, allerdings anstat in einem Fremden Programm wird es auf dem Desktop eingefügt
ist ja fast genauso
Code:
'Variablen: "variable" und "hwnd"

variable = FindWindow("Progman", "Program Manager")
hwnd = GetWindow( variable , GW_CHILD)
GetWindow( hwnd , GW_CHILD)
Mit diesem Stück code komm ich überhaupt nicht zurecht, Hier wird mit der Funktion getwindow das Fenster gesucht und da liegt mein problem ich muss anstat das Fenster von Windows einfach nur das Fenster der App nehmen, wie kann ich denn nun rauskriegen wie das bei anderen Anwendungen aussieht? gw_child heißt das, dass erste kindfenster gesucht wird.
Naja ok ich kapier das, aber woher weiß ich welches Fenster das dann bei meiner app ist

mithilfe eines "get parents" das die klassennamen ausliest komme ich beim Desktop auf folgene Klassennamen SHELLDLL_DefView mit der unterclass.
SysListView32 da kann ich auch die nummern auslesen also ich wandel die dann nicht in namen um, wenn ich die zahlen direkt in set_parent einsetzte welches das Fenster dann öffnen soll setparent(usercontrol.hwnd , "9451876" ) passiert auch nichts

Jetzt kann ich das bei der Anwedung auch machen, aber das wiederum bringt mir nichts, außer ich kann zb die Titelanzeige ändern von einem fremden Programm mit sendmessage und der konstanten wm_settext, mithilfe des klassennamen,

Dieses Thema ist aber nicht nur in vb so sondern es wird in anderen Programmiersprachen fast genauso gemacht, nur bei Purebasic und paar anderen sprachen gibt es schon eine fertige Funktion mhf
und ich komm da halt nicht durch

vermutlich versteht ihr das nicht so, denke ich kann nicht so gut erklären! aber vielleicht besteht ja hoffnung
 
Hat sich erledigt thx für die super hilfe childsearch porgramm so kann man die Childs der Programme ansehen und dann kann man das richtige beim Getwindow eingeben
in meinem Fall:

---Mit childsearch---
mainprog
Child1
----------------------------
GetWindow(FindWindow("mainprog", vbNullString), GW_CHILD))
Man das war jetzt so schwer!
 
Zurück