eigene form immer in den hintergrund setzen?

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    eigene form immer in den hintergrund setzen?

    hallo leute,

    da ich hier neu bin wollte ich erstmal hallo sagen :thumbsup:

    also mein problem ist folgendes:
    ich möchte das meine form permanent hinter allen anderen fenstern ist.
    wie wie funktioniert das in vb2010?

    immer im vordergrund geht ja mit der "TopMost" eigenschaft, aber immer im hintergrund?

    ich google schon seit tagen wegen dem problem...

    leider fand ich immer nur unpassende lösungen :(


    @BjöNi
    danke!
    ich habs jetzt etwas "blöd" gelöst :D


    VB.NET-Quellcode

    1. Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As IntPtr, ByVal hWndInsertAfter As Int32, _
    2. ByVal x As Int32, ByVal y As Int32, ByVal cx As Int32, _
    3. ByVal cy As Int32, ByVal wFlags As Int32) As Int32
    4. Const SWP_NOSIZE As Int32 = &H1
    5. Const SWP_NOMOVE As Int32 = &H2
    6. Const SWP_NOZORDER As Int32 = &H4
    7. Const SWP_NOACTIVATE As Int32 = &H10
    8. Const SWP_DRAWFRAME As Int32 = &H20
    9. Const SWP_SHOWWINDOW As Int32 = &H40
    10. Const SWP_HIDEWINDOW As Int32 = &H80
    11. Const HWND_TOPMOST As Int32 = -1
    12. Const HWND_NOTOPMOST As Int32 = -2
    13. Const HWND_BOTTOM As Int32 = 1


    dann noch

    VB.NET-Quellcode

    1. SetWindowPos(Me.Handle, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
    in einen timer gepackt und gut ists...

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „OrbitOne2010“ ()

    Bitte VB Tags benutzen - was ist damit gemeint?
    so kann das ja keiner lesen!

    Außerdem: Wenn ich in diesem Zusammenhang schon Timer höre - warum nimmst du nicht einfach den Code aus dem Link? Der ist garantiert deutlich performanter!

    OrbitOne2010 schrieb:

    ...
    ich google schon seit tagen wegen dem problem...
    ...


    Das kann ich dir jetzt beim besten Willen nicht glauben !
    Erstens, wundert es mich, das du grade jetzt eine Lösung gefunden hast,
    die auch noch dem stark ähnelt, was ich eben gefunden und überflogen habe.
    Und zweitens, hättest du dann ja zumindest einen ungefähren Plan zum Thema gehabt
    und konkretere Fragen gestellt.

    Also bitte, verarsch mich nicht ! :cursing:

    „Wer einen Fehler gemacht hat und ihn nicht korrigiert, begeht einen zweiten.“
    Konfuzius
    @BjöNi
    das war generell mein erster beitrag in einem forum...
    ich hatte von daher noch keine ahnung wie man das am besten macht, aber danke für den tip ;)
    ich hab es jetzt editiert (hoffe es passt jetzt?)

    wegen dem link:
    leider kann ich mit C# nicht viel anfangen da ich mit dem programmieren erst angefangen habe und erst einwenig vb kann...
    das mit dem konvertieren war mir dann zu umständlich, aber danke trotzdem!

    @timonator
    ist aber so.
    ich möchte hier absolut niemanden verarschen! ehrlich!
    ich habe nach abermaligen durchsuchen des vb-paradise forums dann doch etwas gefunden das mir weitergeholfen hat.

    danke trotzdem.

    OrbitOne2010 schrieb:

    das mit dem konvertieren war mir dann zu umständlich, aber danke trotzdem!
    wat? Das Konvertieren hat etwa 3 sec gebraucht:

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.Runtime.InteropServices
    3. Imports System.Windows.Forms
    4. Namespace TSQL.DeskCLASS
    5. Class Desk
    6. <DllImport("user32.dll", CharSet := CharSet.Auto)> _
    7. Public Shared Function FindWindow(<MarshalAs(UnmanagedType.LPTStr)> lpClassName As String, <MarshalAs(UnmanagedType.LPTStr)> lpWindowName As String) As IntPtr
    8. End Function
    9. <DllImport("user32.dll")> _
    10. Public Shared Function SetParent(hWndChild As IntPtr, hWndNewParent As IntPtr) As IntPtr
    11. End Function
    12. <DllImport("user32.dll")> _
    13. Public Shared Function GetDC(hwnd As UInt16) As IntPtr
    14. End Function
    15. Private desktop As IntPtr
    16. Private ParentForm As Form
    17. Public Sub New(senderForm As Form)
    18. ParentForm = senderForm
    19. End Sub
    20. Public Sub DockStart()
    21. Dim hwndParent As IntPtr = FindWindow("ProgMan", Nothing)
    22. SetParent(ParentForm.Handle, hwndParent)
    23. desktop = GetDC(0)
    24. End Sub
    25. Public Sub DockStop()
    26. Dim hwndParent As IntPtr = FindWindow("screenClass", Nothing)
    27. SetParent(ParentForm.Handle, hwndParent)
    28. desktop = GetDC(0)
    29. End Sub
    30. End Class
    31. End Namespace
    Bei dir hätte es vl. 10 sec gebraucht, weil du noch hättest suchen müssen...

    OrbitOne2010 schrieb:

    leider kann ich mit C# nicht viel anfangen da ich mit dem programmieren erst angefangen habe und erst einwenig vb kann...
    Vielleicht schiebst Du mal eine Lektion ein:
    Wie bekomme ich die Informationen, die ich brauche, ohne permanent einen Thread im Forum aufzumachen?
    Oder:
    Lerne zu finden, nict zu suchen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @BjöNi
    danke dir!
    colles ding :D

    @RodFromGermany
    loool, wo hab ich den sonst noch nen thread aufgemacht?
    ich google immer erst wie ein wahnsinniger und durchstöbere das forum eher ich jemanden frage.
    war wie schon gesagt das erste mal das ich selbst eine frage gestellt habe.
    egal, mein problem hat sich ja jetzt eh erledigt...

    mfg

    OrbitOne2010 schrieb:

    ...
    @timonator
    ist aber so.
    ich möchte hier absolut niemanden verarschen! ehrlich!
    ich habe nach abermaligen durchsuchen des vb-paradise forums dann doch etwas gefunden das mir weitergeholfen hat.
    ...

    Ok, ich glaube dir. :)

    Aber mit so einer Einstellung ("das mit dem konvertieren war mir dann zu umständlich"), kommst du beim coden nicht weit und machst dich hier im Forum, auch nicht gerade beliebt. ;)

    OrbitOne2010 schrieb:

    wo hab ich den sonst noch nen thread aufgemacht?
    Entschuldigung, ich konnte natürlich nicht wissen, dass Du hier der einzige Neuzugang bist, der vorher tatsächlich alle anderen Archive & Co abgeklappert hat.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!