Seite 1 von 2
Runprogram auf zweiten Monitor
Verfasst: 25.09.2009 18:31
von saimen
Ich möchte von meinem Programm aus eine Powerpointpräsentation öffnen und diese auf dem zweiten Monitor wiedergeben. Dazu nutze ich den Powerpointviewer von MS. Das Öffnen einer ppt klappt auch, aber ich weis nicht wie ich diese auf den zweiten Monitor bekommen. Ist das realisierbar?
Folgendes habe ich bis jetzt:
Code: Alles auswählen
dateiname$="D:\test.ppt"
PfadPPviewer$="C:\Programme\Microsoft Office\Office12\PPTVIEW.EXE"
RunProgram(PfadPPviewer$,datei$, "")
PS: der Viewer kann hier kostenfrei runtergeladen werden
http://www.microsoft.com/DOWNLOADS/than ... layLang=de
Re: Runprogram auf zweiten Monitor
Verfasst: 25.09.2009 19:02
von STARGÅTE
Da du den Viewer nicht selber geschrieben hast, wäre die die einzige Möglichkeit mal bei MS nachzugucken ob man der EXE irgend ein Parameter übergeben kann (zB. -x1280) sodass das Fenster dann woanders ist.
Re: Runprogram auf zweiten Monitor
Verfasst: 25.09.2009 19:05
von NicknameFJ
Ich weis nicht ob es auch einfacher geht, sprich sich das Fenster durch irgend einen API Aufruf direkt auf den zweiten Monitor setzen läßt. Aber als Gedankenschups in die Richtung könntest Du mal folgendes probieren:
mit ExamineDesktop die Koordinaten des zweiten Monitors ermitteln
mit FindWindow_() das Fenster suchen
und wenn Du dieses gefunden hast mit MoveWindow_() auf die ermittelten Koordinaten des zweiten Monitores setzen
Grüße
NicknameFJ
Re: Runprogram auf zweiten Monitor
Verfasst: 25.09.2009 19:48
von ts-soft
Code: Alles auswählen
EnableExplicit
Procedure.s GetSpecialFolder(CSIDL.l)
Protected *itemid.ITEMIDLIST
Protected location.s = Space(#MAX_PATH)
If SHGetSpecialFolderLocation_ (0, CSIDL, @*itemid) = #NOERROR
If SHGetPathFromIDList_(*itemid, @location)
If Right(location, 1) <> "\" : location + "\" : EndIf
ProcedureReturn location
EndIf
EndIf
EndProcedure
Define.s dateiname = "D:\test.ppt"
Define.s PfadPPviewer = GetSpecialFolder(#CSIDL_PROGRAM_FILES) + "Microsoft Office\Office12\PPTVIEW.EXE"
Define.i hWnd
Define.s title.s{200}
RunProgram(PfadPPviewer, dateiname, "")
Repeat
hWnd = GetForegroundWindow_()
If hWnd
GetWindowText_(hWnd, @title, 200)
EndIf
Until Left(title, 17) = "PowerPoint Viewer"
If ExamineDesktops() >= 2
MoveWindow_(hWnd, DesktopX(1), DesktopY(1), DesktopWidth(1), DesktopHeight(1), 1)
EndIf
ich denke mal das ist der simpelste weg.
Gruß
Thomas
Re: Runprogram auf zweiten Monitor
Verfasst: 26.09.2009 14:12
von ts-soft
Ist Dein Problem immer noch nicht gelöst?
Oder haste keine Zeit für nen dankeschön?
Geisterst in Deinen anderen Beiträgen und hier
kommt nichts

Re: Runprogram auf zweiten Monitor
Verfasst: 26.09.2009 18:08
von saimen
So, hatte erst jetzt die Möglichkeit nochmal einen zweiten Monitor anzuschließen.
Also es funktioniert ganz gut. Ein Problem ist nur, dass Desktop1 eine Auflösung von 1280 und Desktop2 nur 1024. Das Powerpoint Fenster wird leider nicht auf 1024 gestreckt, sondern abgeschnitten. D.h. es fehlen rechts 156 pix.
Liegt wohl daran dass Sich der Viewer die Einstellung vom Desktop1 holt.
Re: Runprogram auf zweiten Monitor
Verfasst: 26.09.2009 22:45
von NicknameFJ
Bei mir funzt der Code von TS auf dem zweiten Monitor unter PB 4.31 und PB 4.4B3 auf WinXP Home SP3 einwandfrei. Auch bei mir hat der zweite Monitor eine geringere Auflösung als der erste.
Die Größenanpassung muss eigentlich auch funktionieren, da das Fenster durch den MoveWindow_() ja nicht nur neue Koordinaten sondern auch eine neue Größe zugewiesen bekommt.
Grüße
NicknameFJ
Re: Runprogram auf zweiten Monitor
Verfasst: 28.09.2009 07:39
von saimen
Hast du das auch mit dem PowerpointViewer7 von MS probiert?
Re: Runprogram auf zweiten Monitor
Verfasst: 28.09.2009 07:54
von ts-soft
saimen hat geschrieben:Hast du das auch mit dem PowerpointViewer7 von MS probiert?
Mit einem anderen Programm wird mein Source nicht funktionieren
Ich hab 2x dieselbe native Auflösung, kanns also nicht so einfach testen.
Re: Runprogram auf zweiten Monitor
Verfasst: 28.09.2009 18:18
von NicknameFJ
Ich habe es mit dem PowerPoint Viewer (von MS) versucht der schon auf meiner Platte installiert war.
Muss es mal mit dem von der verlinkten versuchen.
Grüße
NicknameFJ
[EDIT]
Dat is ja mal n Ding. Mit der neuen von Dir verlinkten Version klappt das gar nicht mehr, Fehler wie von Dir beschrieben
[/EDIT]