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. :allright: :mrgreen: