Newsgroup: it.comp.lang.visual-basic
Titolo: Nascondere le icone del desktop

Esiste un'API di Windows che permette di nascondere le icone del desktop?
Grazie anticipatamente a tutti
Marco Minerva

...


 Fammi sapere.
Io ti faccio sapere anche subito.  :-)
Se hai anche i sorgenti di quel OCX molto meglio, diversamente va bene lo stesso.
Mandami l'OCX, che gli do un'occhiata, che se e' carino lo piazzo sul Sito Comune.
ps) L'addr del webmaster e'   
it_la...@usa.net
pps) l'attuale webmaster sono io.
Salutoni
-- 
Hi, Ciao
Ettore                 By -MES-
http://freeweb.aspide.it/freeweb/ilmes
Il sito comune di programmatori VB
http://members.xoom.com/it_lang_vb


Scusate (ormai sapete tutti della mia apatia verso gli OCX "futili"...
Ma e' proprio necessario un OCX per nascondere le icone del desktop?
Non c'e' una soluzione semplice, tipo l'API ShowWindow() passandogli
l'handle del desktop?
--
Roal Zanazzi
z...@iol.it

...

Purtroppo ho provato la soluzione ipotizzata da Roal, cioč di utilizzare
l'API ShowWindow passandogli  l'handle del desktop, senza alcun risultato.
In ogni caso, riporto qui di seguito le istruzioni che ho utilizzato, nella
speranza che possano aiutare a trovare una soluzione definitiva.
Le dichiarazioni che ho usato sono le seguenti:
Const SW_HIDE As Long = 0
Const SW_SHOW As Long = 5
Declare Function GetDesktopWindow Lib "User32.dll" () As Long
Declare Function ShowWindow Lib "User32.dll" (ByVal hWnd As Long, ByVal
nCmdShow As Long) As Long
Ho poi definito la seguente Sub:
Sub ShowDesktop(Visible As Boolean)
    Dim DesktopWnd As Long
    DesktopWnd = GetDesktopWindow
    If Visible = True Then
        ShowWindow DesktopWnd, SW_SHOW
    Else
        ShowWindow DesktopWnd, SW_HIDE
    End If
End Sub
Infine, nella routine Form_Load, ho inserito l'istruzione:
ShowDesktop (False)
Come giŕ detto, questa procedura non porta alcun risultato, le icone del
Desktop di Windows continuano ad essere visibili e perfettamente
funzionanti. Faccio presente che, se uso la funzione ShowWindow passandogli
l'handle di un'applicazione VB o della barra delle applicazioni, essa
funziona correttamente. Una precisazione: il risultato della funzione
ShowWindow con l'handle del Desktop č 16. Ho sbagliato qualcosa oppure
questa API non funzionerŕ mai per nascondere le icone del desktop? Puň
servire a qualcosa la funzione FindWindow, contenuta in USER32.DLL?
Qualche tempo fa, ho visto un programmino freeware scritto in Visual C++,
Magic Desktop, che permetteva di nascondere le icone del desktop con un
semplice clic del mouse; poiché tale software non faceva uso di alcuna
libreria esterna, deve pur esserci una API di Windows che permetta di
raggiungere lo scopo.
Scusate la lunghezza della lettera, ma tale funzione mi č, a dir poco,
indispensabile.
Ringrazio fin d'ora coloro che vorranno aiutarmi.
Marco Minerva


Lo sapevo che si poteva fare!!!!!!!!!!!!! Alla faccia degli OCX!!!!!!!!!!
Il problema era solo trovare la window giusta da nascondere :-)
Ci ho perso mezz'oretta, ma alla fine ce l'ho fatta, prova cosi':
fai una form con sopra un pulsante Command1, poi aggiungi il codice qui
sotto (modificato dal tuo)
Option Explicit
Const SW_HIDE = 0
Const SW_SHOW = 5
Const GW_CHILD = 5
Private Declare Function GetDesktopWindow Lib "User32.dll" () As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal
lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal
wCmd As Long) As Long
Private Declare Function ShowWindow Lib "User32.dll" (ByVal hwnd As Long,
ByVal nCmdShow As Long) As Long
Sub ShowDesktop(Visible As Boolean)
    Dim DesktopWnd As Long
    ' La window che contiene le icone del desktop e' la prima child della
    ' window "Program Manager" ed e' di classe "SHELLDLL_DefView".
    ' Questa a sua volta contiene una finestra di classe "SysListView32",
    ' ossia una ListView che contiene le icone del desktop.
    '
    ' ATTENZIONE! non nascondere la window SysListView32, perche' cosi' non
    ' viene eseguito il refresh del desktop!
    DesktopWnd = FindWindow("Progman", "Program Manager")
    DesktopWnd = GetWindow(DesktopWnd, GW_CHILD)
'MsgBox Hex(DesktopWnd)
    If Visible Then
        ShowWindow DesktopWnd, SW_SHOW
    Else
        ShowWindow DesktopWnd, SW_HIDE
    End If
End Sub
Private Sub Command1_Click()
    If (Command1.Caption = "Show") Then
        Command1.Caption = "Hide"
        ShowDesktop True
    Else
        Command1.Caption = "Show"
        ShowDesktop False
    End If
End Sub
P.S. Per Ettore Maronese: se vuoi sistemalo un po' e mettilo sul sito
comune.
--
Roal Zanazzi
z...@iol.it

 
K,
Ricevuto, passo e chiudo  :-))
(il caldo fa male)
