Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1160to1164
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

shell Fenstergröße bestimmen

shell Fenstergröße bestimmen
Michael
Hallo!
Wie bekommt man es hin, dass das Fenster beim öffnen auf der rechten Seite erscheint und max. _ 800 hoch und 800 breit ist.

Sub probe()
Dim Ergebnis
Visible = True
Ergebnis = Shell("C:\WINDOWS\system32\notepad.exe", 4)   ' Notpade starten.
End Sub
()

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: shell Fenstergröße bestimmen
08.06.2010 20:43:39
Josef

Hallo Michael,
probier mal.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function SetWindowPos Lib "user32" (ByVal _
  hwnd As Long, ByVal hWndInsertAfter As Long, _
  ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
  ByVal cy As Long, ByVal wFlags As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias _
  "FindWindowA" (ByVal lpClassName As String, ByVal _
  lpWindowName As String) As Long

Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

Const SM_CXSCREEN = 0 'X Size of screen

Const HWND_TOPMOST = -1


Sub Probe()
  Dim XhWnd As Long, lngRet As Long, lngYSize As Long, lngXSize As Long
  
  lngXSize = GetSystemMetrics(SM_CXSCREEN)
  
  lngRet = Shell("notepad.exe", vbNormalFocus)
  
  XhWnd = FindWindow(vbNullString, "Unbenannt - Editor")
  
  lngRet = SetWindowPos(XhWnd, HWND_TOPMOST, lngXSize - 800, 0, 800, 800, -1)
End Sub

Gruß Sepp

Anzeige
AW: shell Fenstergröße bestimmen
08.06.2010 21:44:42
Nepumuk
Servus Sepp,
ein dünner Ast der Titel. Würde ich so machen:
Option Explicit

Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByRef lpdwProcessId As Long) As Long
Private Declare Function GetWindow Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal wCmd As Long) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" ( _
    ByVal hwnd As Long, _
    ByVal nIndex As Long) As Long
Private Declare Function GetParent Lib "user32.dll" ( _
    ByVal hwnd As Long) As Long
Private Declare Function MoveWindow Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal x As Long, _
    ByVal y As Long, _
    ByVal nWidth As Long, _
    ByVal nHeight As Long, _
    ByVal bRepaint As Long) As Long
Private Declare Function GetSystemMetrics Lib "user32.dll" ( _
    ByVal nIndex As Long) As Long

Private Const GW_HWNDFIRST = 0&
Private Const GW_HWNDNEXT = 2&
Private Const SM_CXSCREEN = 0&
Private Const GWL_STYLE = -&H10
Private Const WS_VISIBLE = &H10000000
Private Const WS_BORDER = &H800000

Public Sub Test()
    
    Dim lngHwnd As Long
    
    lngHwnd = Get_Hwnd("C:\Windows\notepad.exe", vbNormalFocus)
    
    If lngHwnd <> 0 Then _
        Call MoveWindow(lngHwnd, GetSystemMetrics( _
        SM_CXSCREEN) - 800, 0, 800, 800, 1)
    
End Sub

Private Function Get_Hwnd(strPfad As String, enmMode As VbAppWinStyle) As Long
    
    Dim lngHwnd As Long, lngTaskId As Long
    Dim lngReturn As Long
    
    lngTaskId = Shell(strPfad, enmMode)
    
    lngHwnd = GetWindow(FindWindow(vbNullString, vbNullString), GW_HWNDFIRST)
    
    Do While lngHwnd <> 0
        
        If GetWindowLong(lngHwnd, GWL_STYLE) And (WS_VISIBLE Or WS_BORDER) Then
            
            If GetParent(lngHwnd) = 0 Then
                
                Call GetWindowThreadProcessId(lngHwnd, lngReturn)
                
                If lngReturn = lngTaskId Then
                    
                    Get_Hwnd = lngHwnd
                    Exit Do
                    
                End If
            End If
        End If
        
        lngHwnd = GetWindow(lngHwnd, GW_HWNDNEXT)
        
    Loop
    
End Function

Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige