Programmfenster von fremden Programm ändern

Anfängerfragen zum Programmieren mit PureBasic.
moin
Beiträge: 59
Registriert: 03.07.2007 08:38
Wohnort: Norddeutschland

Programmfenster von fremden Programm ändern

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Programmfenster von fremden Programm ändern

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
moin
Beiträge: 59
Registriert: 03.07.2007 08:38
Wohnort: Norddeutschland

Re: Programmfenster von fremden Programm ändern

Beitrag 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
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: Programmfenster von fremden Programm ändern

Beitrag 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 
Signatur und so
moin
Beiträge: 59
Registriert: 03.07.2007 08:38
Wohnort: Norddeutschland

Re: Programmfenster von fremden Programm ändern

Beitrag von moin »

Vielen Dank.
Ich werde erst einmal eine Nacht darüber schlafen. Dann lässt sich der Fehler leichter finden ;-)
Grüße moin
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Re: Programmfenster von fremden Programm ändern

Beitrag 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,
Zuletzt geändert von Coder Pinhead am 14.10.2011 21:21, insgesamt 1-mal geändert.
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
Ramihyn_
Beiträge: 61
Registriert: 20.06.2007 10:56

Re: Programmfenster von fremden Programm ändern

Beitrag 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
Coder Pinhead
Beiträge: 234
Registriert: 27.02.2007 10:54
Wohnort: Germany

Re: Programmfenster von fremden Programm ändern

Beitrag von Coder Pinhead »

Danke, hat geklappt. :allright: :mrgreen:
Windows 8.1 x64 | PureBasic v5.x x86/x64

Sämtliche Syntax, Tipp und Rechtschreibfehler unterliegen dem Copyright des Verfassers.
Antworten