Seite 1 von 1

schließt alle Fenster die in der Toolbar sichtbar sind

Verfasst: 22.12.2008 21:38
von hjbremer
vielleicht kanns ja einer gebrauchen, gibt es in der ein oder anderen Form schon, ich glaube aber für diesen Zweck noch nicht und wenn, macht auch nix.

Code: Alles auswählen

Procedure Api_CloseAllWindowsCB(hwnd,parameter) 

  ;hwnd wird von EnumChildWindows übergeben
  
  ;wenn Fenster in Toolbar und sichtbar
  If GetWindowLong_(hwnd,#GWL_EXSTYLE) ! #WS_EX_TOOLWINDOW And GetWindowLong_(hwnd,#GWL_STYLE) & #WS_VISIBLE 
     
     s$ = Space(100)                    ;Platz für Fenstertitel
     lg = GetWindowText_(hwnd, s$, 99)  ;hole Fenstertitel
     If lg                              ;anzahl kopierter Zeichen des Fenstertitels nach s$
        ShowWindow_(hwnd,#SW_MINIMIZE)  ;soll heißen Fenster ohne Titel werden nicht minimiert
     EndIf                              ;wer auch Fenster ohne Titel minimiert haben will,
                                         ;muß die if Abfrage weglassen
  EndIf 
    
  ProcedureReturn #True               ;#true muß sein 
EndProcedure 

Procedure Api_CloseAllWindows()
      
   ;findet alle Fenster die in der Toolbar sind
      
   EnumChildWindows_(FindWindow_("ToolbarWindow32",0), @Api_CloseAllWindowsCB(), parameter) 
   
   ;EnumWindows ruft sich solange selbst auf bis alle Fenster gefunden sind
  
EndProcedure


Api_CloseAllWindows()


Verfasst: 22.12.2008 22:17
von ts-soft
Alternative wäre dies:

Code: Alles auswählen

Procedure CreateShellObject()
  Protected obj, hResult

  CoInitialize_(#Null)
  hResult = CoCreateInstance_(?CLSID_Shell_Application, 0, 1, ?IID_IShellDispatch, @obj)

  If Not hResult
    ProcedureReturn obj
  Else
    ProcedureReturn #False
  EndIf

  DataSection
    CLSID_Shell_Application:  ; {13709620-C279-11CE-A49E-444553540000}
    Data.l $13709620
    Data.w $C279,$11CE
    Data.b $A4,$9E,$44,$45,$53,$54,$0,$0
    IID_IShellDispatch:  ; {D8F015C0-C278-11CE-A49E-444553540000}
    Data.l $D8F015C0
    Data.w $C278,$11CE
    Data.b $A4,$9E,$44,$45,$53,$54,$0,$0
  EndDataSection
EndProcedure

Procedure ReleaseShellObject(obj)
  Protected object.IUnknown = obj
  object\Release()
EndProcedure

Define.IShellDispatch shell

shell = CreateShellObject()
If shell
  shell\MinimizeAll() 
  ReleaseShellObject(shell)
EndIf
Viele Wege führen nach ROM :wink:

Verfasst: 22.12.2008 22:48
von Andreas
Kürzer !

Code: Alles auswählen

#VK_LWIN = $5B
keybd_event_(#VK_LWIN,0,0,0)
keybd_event_(#VK_M,0,0,0)
keybd_event_(#VK_LWIN,0,#KEYEVENTF_KEYUP,0)
keybd_event_(#VK_M,0,#KEYEVENTF_KEYUP,0)

Verfasst: 23.12.2008 19:44
von Andesdaf
von der Idee her gut aber in der Praxis richtet es Schaden an (zumindest bei
mir)

Denn seit ich das ausgeführt habe bockt meine Sidebar. :evil:

Verfasst: 23.12.2008 20:02
von ts-soft
Andesdaf hat geschrieben:von der Idee her gut aber in der Praxis richtet es Schaden an (zumindest bei
mir)

Denn seit ich das ausgeführt habe bockt meine Sidebar. :evil:
Bei welchem Code? Wie äußert es sich, wenn ein Programm bockt?

Verfasst: 24.12.2008 14:48
von Andesdaf
Naja, ich hatte glaube ich das von hjbremer genommen und wollte dann noch
die anderen ausprobieren.

Zum Bocken: Die Sidebar ist minimiert worden und wollte nicht mehr groß
werden. Aber ein Neustart und dann Doppelklick und ein bissl Geduld, und
dann war sie wieder normal :)