Seite 1 von 1
Programmfenster von fremden Programm ändern
Verfasst: 10.10.2011 20:58
von moin
Hallo,
ich möchte mit einem unter Purebasic geschriebenen Programm die Fenstergröße von einem fremden Programm ändern. Der Programmname ist bekannt und bleibt immer gleich.
Ist dieses Vorhaben machbar? Wie schwer ist es und wie könnte man vorgehen? Bisher habe ich noch keine Möglichkeit gefunden auf andere Programme zuzugreifen.
Grüße moin
Re: Programmfenster von fremden Programm ändern
Verfasst: 10.10.2011 21:06
von ts-soft
Ich nehme mal an, unter Windows. Also der einfache Weg:
FindWindow_() API
um das Handle zu ermitteln und:
MoveWindow_() API
um das Fenster zu verschieben / grösse zu ändern.
Gruß
Thomas
// edit - primitives Beispiel:
Code: Alles auswählen
EnableExplicit
Define hWnd
RunProgram("notepad.exe")
Delay(200)
hWnd = FindWindow_(0, "Unbenannt - Editor")
If hWnd
MoveWindow_(hWnd, 10, 10, 300, 300, #False)
EndIf
Re: Programmfenster von fremden Programm ändern
Verfasst: 10.10.2011 23:58
von moin
Hallo Thomas,
eine Nachfrage hätte ich noch:
Wenn ich diesen Code von einem Fenster aus ausrufen möchte (Button wird gedrückt, ...) funktioniert er plötzlich nicht mehr.
Kann es sein, das mein neues Programm mit dem Fenster-Änderungs-Code erst inaktiv geschaltet werden muss und das zu verändernde Fenster aktiv werden muss?
Grüße moin
Re: Programmfenster von fremden Programm ändern
Verfasst: 11.10.2011 00:40
von Derren
Nein.
Da hast du irgendwo einen Fehler.
Code: Alles auswählen
EnableExplicit
Define hWnd
RunProgram("notepad.exe")
Delay(200)
OpenWindow(0, 0, 0, 200, 100, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered )
ButtonGadget(0, 0, 0, 200, 100, "Drück Mich")
Repeat
Select WaitWindowEvent(20)
Case #PB_Event_Gadget
If EventGadget()=0
hWnd = FindWindow_(0, "Unbenannt - Editor")
If hWnd
MoveWindow_(hWnd, 10, 10, 300, 300, #False)
EndIf
EndIf
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Re: Programmfenster von fremden Programm ändern
Verfasst: 11.10.2011 00:59
von moin
Vielen Dank.
Ich werde erst einmal eine Nacht darüber schlafen. Dann lässt sich der Fehler leichter finden

Grüße moin
Re: Programmfenster von fremden Programm ändern
Verfasst: 14.10.2011 21:06
von Coder Pinhead
Hallo,
Wo wir Gerda schon beim Thema Programmfenster ändern sind wie kann ich in einer anderen anderen Applikation die ButtonGadget's ansprechen.
Code: Alles auswählen
Define hwnd
Define subhwnd
hwnd = FindWindow_(0,"Das Fenster") ;Den Fenstertitel ändern.
Debug hwnd
If hwnd
subhwnd=FindWindowEx_(hwnd, 0, Button, "Der Button") ;Den Klassen Namen und den Namen des Button ändern.
Debug subhwnd
If subhwnd
SendMessage_(subhwnd, #BM_CLICK, 0, 0)
EndIf
EndIf
Der Programmcode hier Funktioniert zwar aber nicht in jeder Applikation wo dran kann das liegen oder wie könnte man noch versuchen die ButtonGadget's einer fremden Applikation anzusprechen?
(Die stellen die ich Kommentiert habe, habe ich den jeweiligen Programm natürlich immer angepasst gehabt.)
Danke schon mal im voraus für die Hilfe

.
Grüße,
Re: Programmfenster von fremden Programm ändern
Verfasst: 14.10.2011 21:20
von Ramihyn_
@Pinhead
Das wurde auch grad im englischen Forum diskutiert:
http://www.purebasic.fr/english/viewtop ... 13&t=47854
Da findest Du Lösungen für XP und Windows 7
Re: Programmfenster von fremden Programm ändern
Verfasst: 14.10.2011 22:07
von Coder Pinhead
Danke, hat geklappt.
