schließt alle Fenster die in der Toolbar sichtbar sind

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

schließt alle Fenster die in der Toolbar sichtbar sind

Beitrag 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()

Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Andreas
ToolbarKönig
Beiträge: 142
Registriert: 08.09.2004 08:33

Beitrag 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)
Gruss Andreas
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag 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:
Win11 x64 | PB 6.20
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag 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 :)
Win11 x64 | PB 6.20
Antworten