Seite 1 von 1

Fenster aktivieren

Verfasst: Dienstag 4. September 2007, 21:04
von Anfänger1911
Hi!

Ich möchte das Programmfenster von FileMaker Pro aktivieren, also in den Vordergrund stellen. Wie mache ich das am einfachsten? Ich denke es müsste irgendwie mit win32com gehen aber wie? Hier ein Versuch (ich kann es leider nicht testen):

Code: Alles auswählen

import win32com.client
import win32con
FMP = win32com.client.Dispatch("FileMaker Pro.ApplicationFMP")
FMP.SW_SHOWNORMAL
Ich vermute mal es ist ziemlich falsch...
Geht das so überhaupt und wenn ja wie ist es richtig?

Mfg
Henne

Tk

Verfasst: Sonntag 7. Oktober 2007, 11:30
von linuxfan
Mein Vorschlag wäre ein Tk-Fenster. Dazu schreibe folgenden Text:

Code: Alles auswählen

from Tkinter import*
root=Tk() #"root" ist mein Vorschlag
root.focus_force() #focus_force aktiviert das Fenster bzw. stellt es in den Vordergrund
Viel Glück! :wink:
Gruß linuxfan

Verfasst: Sonntag 7. Oktober 2007, 11:50
von Andy
Hi,

mit pywinauto kann man Window-Programme fernsteuern. Ich weiß nicht, ob es Dir momentan hilft, aber wollt nur gesagt haben, dass es dies gibts.

Gruß Andy

Re: Tk

Verfasst: Sonntag 7. Oktober 2007, 13:44
von Leonidas
linuxfan hat geschrieben:Mein Vorschlag wäre ein Tk-Fenster. Dazu schreibe folgenden Text:

Code: Alles auswählen

from Tkinter import*
root=Tk() #"root" ist mein Vorschlag
root.focus_force() #focus_force aktiviert das Fenster bzw. stellt es in den Vordergrund
Viel Glück! :wink:
Und wie soll das - ein logisch gesehen - funktionieren? Filemaker Pro ist ein *bestehendes* Programm, welches zum Glück kein Tk benutzt. Also wie soll man solche Programme via Tkinter fernsteuern?

Verfasst: Sonntag 7. Oktober 2007, 18:41
von abgdf
Also, mit Word geht das so:

Code: Alles auswählen

word = win32com.client.Dispatch('Word.Application')
word.Visible = 1
word.WindowState = 1
Ich schätze mal, bei FileMaker wird das ähnlich sein.

Aber, wenn Du's nicht testen kannst :roll:, ich kann's erst recht nicht :wink:.

Gruß

Verfasst: Montag 8. Oktober 2007, 09:00
von gerold
Hallo Leute!

COM hat nichts damit zu tun. Also vergesst ``win32com.client.Dispatch``.

Code: Alles auswählen

>>> import win32ui
>>> hwnd = win32ui.FindWindow(None, "<Text aus der Titelleiste>")
>>> hwnd
object 'PyCWnd' - assoc is 01B8E7E0, vi=<None>, notify=0,ch/u=0/0, mh=0, kh=0
>>> hwnd.BringWindowToTop()
>>>
pywinauto kann das noch besser. Aber auf den Tipp von Andy ist niemand eingegangen. pywinauto kann auch dann ein Fenster identifizieren, wenn nur ein Teil des Titels bekannt ist. Wie man so ein Fenster findet und sich darauf bezieht, findet man auf der pywinauto-Website.

Code: Alles auswählen

>>> import pywinauto
>>> hwnd = pywinauto.findwindows.find_window(title=None, title_re="Das deutsche Python.*")
>>> pywinauto.win32functions.BringWindowToTop(hwnd)
1
>>>

mfg
Gerold
:-)

Sorry

Verfasst: Montag 8. Oktober 2007, 18:18
von linuxfan
Sorry wegen dem Beitrag mit Tk!!
War total verplant! :roll:

Re: Sorry

Verfasst: Montag 8. Oktober 2007, 19:27
von Leonidas
linuxfan hat geschrieben:Sorry wegen dem Beitrag mit Tk!!
War total verplant! :roll:
Nein, kein Problem. Ich habe nur nachgebessert, damit andere Leute die den Thread später lesen nicht durch den Tkinter-Code verwirrt werden. Nichts für ungut.