Toon posts:

[vb] Klik op 'Show Desktop' detecteren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor een progje dat ik aan het maken ben is het nuttig om te weten wanneer er op 'Show Desktop' is geklikt (dat ding naast Start :P ). Ik heb een hoop gezocht, maar heb geen idee hoe ik dit zou kunnen doen :)

Iemand suggesties?

Bedankt! :)

  • koffercomputer
  • Registratie: Oktober 2000
  • Laatst online: 15-09 16:57
Show Desktop doet niets anders dan alle openstaande windows minimaliseren. Je zou dus op minimize kunnen controleren.

Ik heb het opgegeven om nog correct Nederlands te blijven typen. 22.10.02


Verwijderd

Bij MS Developer Studio 4 zat een programma Spy++. Daarmee kon je zien wat er allemaal heen en weer werd gestuurd tussen vensters en het OS enz...
Zoek een zo'n programma en kijk wat er gebeurd als je op die knop drukt :)
Verder weet ik neits, overigens :)

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Op woensdag 12 december 2001 20:13 schreef koffercomputer het volgende:
Show Desktop doet niets anders dan alle openstaande windows minimaliseren. Je zou dus op minimize kunnen controleren.
Da's niet helemaal waar hoor. Show desktop haalt je desktop on-top. Alle vensters worden verborgen. Dus ook vensters die normaal gesproken niet eens kunt minimaliseren (neem bijvoorbeeld LAN-Status van Windows 2000).

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Op woensdag 12 december 2001 20:14 schreef sir5 het volgende:
Verder weet ik neits, overigens :)
Hehe, jij weet dan ook weinig. :)

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Topicstarter
Op woensdag 12 december 2001 20:14 schreef sir5 het volgende:
Bij MS Developer Studio 4 zat een programma Spy++. Daarmee kon je zien wat er allemaal heen en weer werd gestuurd tussen vensters en het OS enz...
Zoek een zo'n programma en kijk wat er gebeurd als je op die knop drukt :)
Verder weet ik neits, overigens :)
Heb ik geprobeerd, komt geen boeiende info uit :(

Verwijderd

Topicstarter
Op woensdag 12 december 2001 20:16 schreef jelmervos het volgende:

[..]

Da's niet helemaal waar hoor. Show desktop haalt je desktop on-top. Alle vensters worden verborgen. Dus ook vensters die normaal gesproken niet eens kunt minimaliseren (neem bijvoorbeeld LAN-Status van Windows 2000).
Idd, ik wil kunnen zien of de desktop 'on top' is.

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Op woensdag 12 december 2001 20:24 schreef dev het volgende:

[..]

Idd, ik wil kunnen zien of de desktop 'on top' is.
Hoe moeilijk... :)
code:
1
2
3
If GetForegroundWindow = GetDesktop Then
   ' blaat
End If

Zou dan moeten werken...

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Werkt die oplossing die hierboven wordt beschreven???

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Config
  • Registratie: Januari 2000
  • Laatst online: 06-01-2025
Op donderdag 13 december 2001 10:53 schreef jelmervos het volgende:
Werkt die oplossing die hierboven wordt beschreven???
Install M$ VB es :? :P

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Op donderdag 13 december 2001 11:00 schreef Config het volgende:

[..]

Install M$ VB es :? :P
Nee, Delphi is genoeg, geloof me.

Maar ik zou het ook kunnen uitproberen in Delphi hoor, is gewoon API wat hier wordt gebruikt.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Topicstarter
Sja, dat heb ik zelf ook geprobeerd uiteraard :P

Het probleem is dat als je op Show Desktop klinkt de desktop NIET het foregroundwindows is (vaag ja). Pas als je dan bijvoorbeeld op een item in de taskbar klinkt wordt ie ff het foregroundwindow.

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 13-09 23:09

Skinny

DIRECT!

Dit vond ik op MSDN... misschien dat je daar iets kan vinden. (Ben zelf niet zo thuis in Shell API's )

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/Shell/objects/IShellDispatch4/IShellDispatch4.asp

SIZE does matter.
"You're go at throttle up!"


Verwijderd

Topicstarter
Requires Windows XP. :(

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 23:21

mulder

ik spuug op het trottoir

Kun je niet alle active apps langslopen en checken of deze Minimized zijn? Met active apps bedoel ik de draaiende applicaties, services onderscheiden, je moet dit wel goed definieeren in je code. Lijkt me wel waarschijnlijk dat apps een WindowState heben

oogjes open, snaveltjes dicht


Verwijderd

Dat gaat nie werken, als je bv je window markeert als topmost window zal ie 'm niet minimizen als je show-desktop doet..

Waarom wil je het eigenlijk detecten?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 23:21

mulder

ik spuug op het trottoir

Weet je dat zeker, Show Desktop gooit echt alle windows plat als het goed is. Moet je niet kunnen checken op IsMinimized in plaats van CanMinimize?

oogjes open, snaveltjes dicht


Verwijderd

Op donderdag 13 december 2001 21:02 schreef El_Mundo het volgende:
Weet je dat zeker?
Jup :Y)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Const SWP_NOMOVE = 2
Private Const SWP_NOSIZE = 1
Private Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2

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 Function SetTopMostWindow(hwnd As Long, Topmost As Boolean) As Long
    If Topmost = True Then 'Make the window topmost
      SetTopMostWindow = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)
    Else
      SetTopMostWindow = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS)
      SetTopMostWindow = False
    End If
End Function
    
Private Sub Form_Load()
    Dim lR As Long
    lR = SetTopMostWindow(Me.hwnd, True)
End Sub

Verwijderd

Topicstarter
Idd :)

Voor een progje moet ik detecteren of de muis op de desktop is.

Da's eenvoudig op zo'n soort manier:

Progman = FindWindow("Progman", vbNullString)
Desktop = GetWindow(Progman, GW_CHILD)

En dan checken met WindowFromPoint of ie op Desktop is.

Maar als er nu op Show Desktop geklinkt wordt, dan is het WindowFromPoint als de muis op de desktop is opeens niet meer de hWnd van de Desktop. Pas als je weer een venster activeerd gaat alles weer normaal.

Ik zou dus willen weten in welke "Mode" de desktop is.


Dit staat in het 'Show Desktop' file-tje:

[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop

Zo'n ToggleDesktop dus, er zou toch een manier moeten zijn om dat te detecteren.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 23:21

mulder

ik spuug op het trottoir

Op donderdag 13 december 2001 21:07 schreef Yarvieh het volgende:

[..]

Jup :Y)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Const SWP_NOMOVE = 2
Private Const SWP_NOSIZE = 1
Private Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2

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 Function SetTopMostWindow(hwnd As Long, Topmost As Boolean) As Long
    If Topmost = True Then 'Make the window topmost
      SetTopMostWindow = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)
    Else
      SetTopMostWindow = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS)
      SetTopMostWindow = False
    End If
End Function
    
Private Sub Form_Load()
    Dim lR As Long
    lR = SetTopMostWindow(Me.hwnd, True)
End Sub
Word bij mij dus onder XP geminimized....

oogjes open, snaveltjes dicht


Verwijderd

Op donderdag 13 december 2001 21:35 schreef El_Mundo het volgende:
Word bij mij dus onder XP geminimized....
Hmmz minimize button killen helpt in dat geval ;)
Pagina: 1