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 Class
Aihe on jo aika vanha, joten et voi enää vastata siihen.