Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Fenster mit VBS neu positionieren

Mitglied: format-c

format-c (Level 1) - Jetzt verbinden

22.11.2013 um 17:12 Uhr, 3960 Aufrufe, 6 Kommentare

Hallo zusammen!

Ich suche nach einer Möglichkeit die Position eines Fensters mit möglichst wenig Interaktion (d.h. automatisch, vorzugweise mittels eines VBScripts) und ausschließlich mit Bordmitteln von Windows zu verändern. Das Ausführen von "Fremdsoftware" ist auf dem Rechner per GP unterbunden, womit Tools wie AutoHotkey wegfallen.

Ich stelle mir ein solches Scenario vor:
  1. Die Anwendung wird per Batch-Skript gestartet.
  2. In dem selben Skript wird anschließend ein VBScript gestartet, welches
    1. das gewünschte Fenster anhand des Fenstertitels ermittelt,
    2. die Abmessungen des Desktops erfasst (zwei Monitore, unterschiedliche Auflösung),
    3. Das Fenster so über beide Bildschirme ausbreitet, dass es ein in das von den Monitoren gebildete Polygon eingeschriebenes Rechteck maximaler Größe darstellt. (geiler Satz, was? ) Die Logik ist an dieser Stelle nebensächlich – die Aufgabe reduziert sich darauf, ein bestimmtes Fenster mit gegebenen Koordinaten (links,oben),(rechts,unten) neu zu positionieren.

Hat jemand Erfahrung damit?


Danke im Voraus
format_c
Mitglied: rubberman
22.11.2013 um 19:07 Uhr
Hallo format_c

VBScript bietet dafür keinerlei Möglichkeiten. PowerShell vielleich, aber da fehlt mir die Erfahrung.
msmvps.com/blogs/richardsiddaway/archive/2011/07/23/moving-windows.aspx

Grüße
rubberman
Bitte warten ..
Mitglied: iTesla
22.11.2013 um 20:41 Uhr
Zitat von rubberman:

Hallo format_c

VBScript bietet dafür keinerlei Möglichkeiten. PowerShell vielleich, aber da fehlt mir die Erfahrung.
[http://msmvps.com/blogs/richardsiddaway/archive/2011/07/23/moving-windows.aspx
msmvps.com/blogs/richardsiddaway/archive/2011/07/23/moving-windows.aspx]

Grüße
rubberman

.. schau mal hier:
http://www.vbaccelerator.com/home/VB/Tips/Working_with_Multiple_Monitor ...
Bitte warten ..
Mitglied: rubberman
22.11.2013 um 21:04 Uhr
Hallo iTesla,

das ist kein VBScript! Dort ist es leider nicht möglich auf die WinAPI zuzugreifen

Grüße
rubberman
Bitte warten ..
Mitglied: format-c
23.11.2013 um 11:59 Uhr
Gegen die Verwendung von PS wäre auch nichts einzuwenden
Bitte warten ..
Mitglied: colinardo
23.11.2013, aktualisiert um 12:07 Uhr
Hallo format_c,
mit VBS kannst du es wie schon gesagt vergessen (Fehlende Unterstützung der Win32API).
Mit Powershell hatte ich mal eine Prozedur geschrieben, die eine Anwendung an einer bestimmten Position startet. Leider funktioniert sie bei bestimmten Fenstertypen nicht, musst du also mit deiner Anwendung ausprobieren:

01.
function initTools() { 
02.
    [String]$SourceCode = @" 
03.
Namespace colinardo 
04.
Public Class MyFunctions 
05.
<System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)> _ 
06.
    Private Structure RECT 
07.
        Public left As Integer 
08.
        Public top As Integer 
09.
        Public right As Integer 
10.
        Public bottom As Integer 
11.
    End Structure 
12.
 
13.
    <System.Runtime.InteropServices.DllImport("user32.dll")> _ 
14.
    Private Shared Function MoveWindow(ByVal hWnd As System.IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal bRepaint As Boolean) As Boolean 
15.
    End Function 
16.
 
17.
    <System.Runtime.InteropServices.DllImport("user32.dll")> _ 
18.
    Private Shared Function GetWindowRect(ByVal hWnd As System.IntPtr, <System.Runtime.InteropServices.Out()> ByRef lpRect As RECT) As <System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)> Boolean 
19.
    End Function 
20.
 
21.
    <System.Runtime.InteropServices.DllImport("user32.dll")> _ 
22.
    Private Shared Function SetForegroundWindow(ByVal hWnd As System.IntPtr) As Boolean 
23.
    End Function 
24.
 
25.
    Public Shared Function StartAppAtPosition(strPath As String, posX As Integer, posY As Integer, Optional intWidth As Integer = 0, Optional intHeight As Integer = 0) As Boolean 
26.
        Dim proc As New System.Diagnostics.Process 
27.
        Dim hwnd As System.IntPtr 
28.
        Try 
29.
            proc.StartInfo.FileName = strPath 
30.
            proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal 
31.
            proc.Start() 
32.
            proc.WaitForInputIdle(True) 
33.
            While Not proc.HasExited 
34.
                proc.Refresh() 
35.
                If proc.MainWindowHandle <> System.IntPtr.Zero Then 
36.
                    hwnd = proc.MainWindowHandle 
37.
                    System.Console.WriteLine("Window Handle: " & hwnd.ToString()) 
38.
                    Exit While 
39.
                End If 
40.
            End While 
41.
            If SetForegroundWindow(hwnd) Then 
42.
                Dim rec As RECT 'structure to get size and location  
43.
                If GetWindowRect(hwnd, rec) Then 
44.
                    Dim sizeW As Integer 
45.
                    Dim sizeH As Integer 
46.
                    If intWidth > 0 And intHeight > 0 Then 
47.
                        sizeW = intWidth 
48.
                        sizeH = intHeight 
49.
                    Else 
50.
                        sizeW = rec.right - rec.left 'Width size 
51.
                        sizeH = rec.bottom - rec.top 'Heigth Size 
52.
                    End If 
53.
                    Dim ret As Boolean = MoveWindow(hwnd, posX, posY, sizeW, sizeH, True) 
54.
                    If ret Then 
55.
                        Return True 
56.
                    Else 
57.
                        Return False 
58.
                    End If 
59.
                End If 
60.
            Else 
61.
                Return False 
62.
            End If 
63.
            Return False 
64.
        Catch ex As System.Exception 
65.
            System.Console.WriteLine(ex.Message) 
66.
            Return False 
67.
        End Try 
68.
    End Function 
69.
End Class 
70.
End Namespace 
71.
"@ 
72.
 add-type -TypeDefinition $SourceCode -Language VisualBasic 
73.
74.
 
75.
initTools 
76.
 
77.
[colinardo.MyFunctions]::StartAppAtPosition("C:\Program Files\Paint.NET\PaintDotNet.exe",200,200,640,480)
Beschreibung der Parameter in der letzten Zeile des Scripts:
  • Parameter 1 = Pfad zum Programm das gestartet werden soll
  • Parameter 2 = X-Koordinate des Fensters
  • Parameter 3 = Y-Koordinate des Fensters
  • Parameter 4 = Breite des Fensters (Optional)
  • Parameter 5 = Höhe des Fensters (Optional)

Parameter 4 und 5 sind optional.

Grüße Uwe
Bitte warten ..
Mitglied: format-c
26.11.2013 um 14:44 Uhr
Danke, Uwe, für das Skript. Es ist für mich schon mal ein guter Einstieg.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Vbs in exist - wenn ein Fenster existiert dann

Frage von pdiddoBatch & Shell1 Kommentar

Hi Leute Ich versuch auf vbs zu realisieren, sobald ein Fenster (Programm was zuvor gestartet wird) existiert, dass eine ...

Batch & Shell

Vbs aus batch starten ohne neues fenster, batch soll weiterlaufen und sich wieder beenden

gelöst Frage von AlbertMinrichBatch & Shell5 Kommentare

Hallo, ich möchte aus einer cmd-Datei ein vb-Script starten, ohne daß sich ein neues Fenster öffnet und die cmd ...

Blogs

IT-Blog mit Werbung schalten - Joomla - Neues Fenster

gelöst Frage von samet22Blogs7 Kommentare

Hallo Leute, habe ein IT-Blog (www.dermodwarda.de) bei welchem ich kleine Einnahmen mit google adsense erzielen will (Webspace kosten etc ...

Outlook & Mail

Neue Email aufmachen: immer nur minimiertes Fenster

Frage von ralboeOutlook & Mail4 Kommentare

Hallo zusammen, vielleicht kann mir jemand helfen? Wenn eine neue Email aufgemacht wird erscheint Sie nur komplett minimiert. Man ...

Neue Wissensbeiträge
Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 19 MinutenWindows 10

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 3 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 1 TagWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 1 TagSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Heiß diskutierte Inhalte
C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++28 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
gelöst Frage von wusa88DSL, VDSL19 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...

Hyper-V
HyperV DC + DNS + AC
gelöst Frage von HardstylesHyper-V16 Kommentare

Hallo kann mir jemand sagen wieso meine Domänen Computer kein Internetzugang erhalten? Ich hab hier ein Server wo die ...