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

Frage Entwicklung VB for Applications

Fenster mit VBS neu positionieren

Mitglied: format-c

format-c (Level 1) - Jetzt verbinden

22.11.2013 um 17:12 Uhr, 3800 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 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 ...

Outlook & Mail
Fenster für neue Email schließt automatisch während dem Schreiben
gelöst Frage von johnnywOutlook & Mail7 Kommentare

Hallo zusammen, wenn ich mit Outllook 2010 (WInXP) eine email schreibe, kommt es immer häufiger vor, dass das Emailfenster ...

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
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...