Miten voin tehdä formin joka on läpinäkyvä (reunaton) ja näkyy AINA kaikkien ohjelmien päällä? (Ei tarvitse edes olla formi kunhan saa jotenki grafiikkaa näkyviin)
Ihan perusformissa toi topmost ei näy kaikkien ohjelmien päällä (esim. fullscreen-ohjelmat/pelit jättävät sen taakseen).
Oletetaan että olisi mahdollista tehdä ikkunoita, jotka näkyisi aina kaikkien ikkunoiden päällä. Entä jos tekisikin kaksi niitä ja laittaisi ne päällekkäin. Räjähtäisikö tietokone vai mitä tapahtuisi?
Tosin minulla on ratkaisu miten oman ikkunan saa täysin varmasti kaikkien muiden päälle: Printtaa sen paperille ja laittaa vaikka paperiliimalla kiinni näyttöön.
Moikka JoonasK!
oheisen esimerkin viritelmällä pääset melko pitkälle...
'Väännetty SharpDevelop 3.2:lla
Imports System.Drawing
Imports System.Runtime.InteropServices
Public Partial Class MainForm
<DllImport("user32.dll", SetLastError:=True)> _
Private Shared Function SetWindowPos(ByVal hWnd As IntPtr, _
ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, _
ByVal Y As Integer, ByVal cx As Integer, _
ByVal cy As Integer, ByVal uFlags As UInt32) As Boolean
End Function
'Private Shared ReadOnly HWND_NOTOPMOST As IntPtr = New IntPtr(-2)
'Private Shared ReadOnly HWND_TOP As IntPtr = New IntPtr(0)
Private Shared ReadOnly HWND_TOPMOST As IntPtr = New IntPtr(-1)
'Private Const SWP_NOSIZE As UInt32 = &H0001
'Private Const SWP_NOMOVE As UInt32 = &H0002
'Private Const SWP_NOZORDER As UInt32 = &H0004
'Private Const SWP_NOREDRAW As UInt32 = &H0008
'Private Const SWP_NOACTIVATE As UInt32 = &H0010
'Private Const SWP_FRAMECHANGED As UInt32 = &H0020
'Private Const SWP_SHOWWINDOW As UInt32 = &H0040
'Private Const SWP_HIDEWINDOW As UInt32 = &H0080
'Private Const SWP_NOCOPYBITS As UInt32 = &H0100
'Private Const SWP_NOOWNERZORDER As UInt32 = &H00200
'Private Const SWP_NOSENDCHANGING As UInt32 = &H0400
'Private Const TOPMOST_FLAGS As UInt32 = SWP_NOMOVE Or SWP_NOSIZE
Public Sub New()
Me.Opacity = 0
Me.StartPosition = _
FormStartposition.CenterScreen
Me.ShowInTaskbar = False
Me.FormBorderStyle = 0
Me.InitializeComponent()
End Sub
Sub MainFormLoad(sender As Object, e As EventArgs)
Me.PictureBox1.Left = 0
Me.PictureBox1.Top = 0
Me.PictureBox1.Width = Me.Width
Me.PictureBox1.Height = Me.Height
Me.PictureBox1.BackColor = Color.Transparent
Me.CheckImage
Me.Timer1.Interval = 100
Me.Timer1.Enabled = True
Me.Timer1.Start
Me.TransparencyKey = Me.pictureBox1.BackColor
End Sub
Sub CheckImage()
If Me.PictureBox1.Image Is Nothing Then
Me.Opacity = 0
Else
Me.Opacity = 100
End If
End Sub
Sub Timer1Tick(sender As Object, e As EventArgs)
Me.Timer1.Stop
SetWindowPos(Me.Handle, HWND_TOPMOST, 0, 0, 0, 0, 3)
Me.CheckImage
Me.Timer1.Start
End Sub
End ClassAihe on jo aika vanha, joten et voi enää vastata siihen.