Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Trasparenza explorer
Forum - C# / VB.NET - Trasparenza explorer

Avatar
Daniele93 (Normal User)
Expert


Messaggi: 226
Iscritto: 29/05/2009

Segnala al moderatore
Postato alle 17:59
Venerdì, 30/10/2009
Non so se questa cosa si possa fare o meno... e premesso che è una curiosità che forse in un futuro troverà riscontro in un programma, volevo chiedervi se essite un modo per impostare la trasparenza delle finestre di sistema, qualsiasi esse siano da programma visual basic .net.
Cioè mi servirebbe di rendere le finestre di explorer trasparenti quanto voglio io.

Grazie in anticipo.


Si vis pacem, para bellum

Se vuoi la pace, prepara la guerra.
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 20:14
Venerdì, 30/10/2009


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
Daniele93 (Normal User)
Expert


Messaggi: 226
Iscritto: 29/05/2009

Segnala al moderatore
Postato alle 11:00
Lunedì, 02/11/2009
Grazie delle proposte. Ho seguito la seconda, ma ho un problema. il codice è in c#(Almeno mi sembra) e ho provato a tradurlo ma non riesco. ho svariati problemi, come adesempio la dichiarazione delle variabili o l' utilizzo dei metodi che non corrispondono minimamente.

Se potevi aiutarmi... o almeno spiegarmi cosa bisognerebbe fare oltre a inserire questo nel codice:
Codice sorgente - presumibilmente VB.NET

  1. Public Declare Auto Function SetLayeredWindowAttributes Lib "User32.Dll" (ByVal hWnd As IntPtr, ByVal crKey As Integer, ByVal Alpha As Byte, ByVal dwFlags As Integer) As Boolean



Grazie ancora

EDIT: Non mi aggiunge nemmeno il riferimento alla libreria user32.dll nella finestra delle proprietà>Riferimenti mi dice di verificare che sia accessibile e di controllare l' assembly e il COM. Cosa posso fare?

Mi sono accorto adesso che non avevo specificato che il programma è in vb.net
Perdonatemi...:(

Ultima modifica effettuata da Daniele93 il 02/11/2009 alle 14:27


Si vis pacem, para bellum

Se vuoi la pace, prepara la guerra.
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:53
Lunedì, 02/11/2009
Esistono i convertitori apposta per questo, e poi il codice è immediato anche non conoscendo il C#: cosa potrà mai essere "public const int" se non una costante pubblica intera?

Codice sorgente - presumibilmente VB.NET

  1. Public Const GWL_EXSTYLE As Integer = -20
  2. Public Const WS_EX_LAYERED As Integer = &H80000
  3. Public Const LWA_ALPHA As Integer = &H2
  4. Public Const LWA_COLORKEY As Integer = &H1
  5.  
  6. 'set the window style to alpha appearance
  7. Private Sub button4_Click(ByVal sender As Object, ByVal e As EventArgs)
  8.    SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) Xor WS_EX_LAYERED)
  9.    SetLayeredWindowAttributes(Handle, 0, 128, LWA_ALPHA)
  10. End Sub



user32.dll è una libreria di sistema, non va aggiunta tra i riferimenti.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
Daniele93 (Normal User)
Expert


Messaggi: 226
Iscritto: 29/05/2009

Segnala al moderatore
Postato alle 18:24
Lunedì, 02/11/2009
Il problema lo risontravo nel "x" del valore 80x80000)

Comunque adesso ho richiamato anche le funzioni che mancavano e mi davano errore perchè non dichiarate traducendo e riadattando da msdn i vari parametri ecc... E ottengo questo come codice che nn dà nessun errore ma nemmeno il risultato sperato. Ho fatto qualche errore di traduzione? Devo aggiungere o modificare qualcosa? Non saprei perchè a parte il fatto che richiamo delle funzioni da una libreria non ho capito molto dei valori che uso nemmeno leggendo la documentazione msdn... Grazie ancora per la pazienza.

Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.     Public Declare Auto Function SetWindowLong Lib "User32.Dll" (ByVal hWnd As IntPtr, ByVal crKey As Integer, ByVal Alpha As Byte, ByVal dwFlags As Integer) As Boolean
  3.     Public Declare Auto Function SetLayeredWindowAttributes Lib "User32.dll" (ByVal hwnd As IntPtr, ByVal crKey As Integer, ByVal bAlpha As Byte, ByVal dwFlags As Integer) As Boolean
  4.     Public Declare Auto Function GetWindowLong Lib "User32.dll" (ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Long
  5.  
  6.     Public Const GWL_EXSTYLE As Integer = -20
  7.     Public Const WS_EX_LAYERED As Integer = &H80000
  8.     Public Const LWA_ALPHA As Integer = &H2
  9.     Public Const LWA_COLORKEY As Integer = &H1
  10.  
  11.     Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
  12.         SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) Xor WS_EX_LAYERED, dwFlags:=LWA_ALPHA)
  13.         SetLayeredWindowAttributes(Handle, 0, 128, LWA_ALPHA)
  14.     End Sub
  15.  
  16. End Class



Si vis pacem, para bellum

Se vuoi la pace, prepara la guerra.
PM Quote