Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VisualBasic 6.0 - Form immer im Hintergrund

Empfohlene Antworten

Veröffentlicht

Hallo!

Wie kann ich einer Form ein "Attribut" zuweisen, sodass sie immer im Hintergrund ist?

Konkret: Mein Programm, ein Terminplaner, soll direkt auf dem Desktop liegen und muss immer das unterste Programm sein; es soll nämlich so wirken, als wäre es in den Desktopbereich fest integriert.

Irgendwo hab ich den Code hier gefunden

Declare Function SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Public Const HWND_TOP = 0

Public Const HWND_TOPMOST = -1

Public Const HWND_NOTOPMOST = -2

Public Const SWP_NOMOVE = &H2

Public Const SWP_NOSIZE = &H1

Public Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE

Sub StayNotOnTop(the As Form)

SetWinOnTop = SetWindowPos(the.hWnd, HWND_NoTOPMOST, 0, 0, 0, 0, FLAGS)

End Sub

Ich habe den Code in ein bas-Modul eingefügt und eine Form (Form1) erzeugt.

Ins Initialize der Form1 habe ich

StayNotOnTop(Form1)

gestellt.

Der Code macht aber gar nix; Fehler bei Compilieren gibt es nicht, aber er macht eben nix...

Schon mal vielen Dank falls mir da jemand weiterhelfen kann,

Technician

Auf jeden Fall muss zuerst die Form mal sichtbar sein, also z.B. bei Form_Activate einbauen.

Dann sieht es so aus, als ob diese Funktion nur das Fenster nach "Hinten", also hinter alle andere Fenster dieser Applikation (oder aller Programme?) legt. Das ist aber keine feste Eigenschaft der Form sondern nur so was wie bei der Reihenfolge der Controls einer VB-Form. Sobald ein anderes weiter hinten liegt (weil man es minimiert oder ähnliches) weil man das Fenster anklickt, kommt es natürlich wieder nach vorne.

Eine Lösung wäre, dieses Fenster zu einem Control auf dem Screen zu machen. Was gehen könnte ist folgendes: nehme einen Frame auf einer Form und schreibe im Programm:

set Frame.Container = Screen

leider klappt das nicht (gerade probiert). Aber man kann eine Systemfunktion benutzen, heiss irgendwie "SetWindow". Mit der kann man sagen, dass das Framecontrol auf dem Desktop liegt.

kenne ich aber nicht auswendig

Vielleicht eine kleine Hilfe... :confused:

Ich habe ein Beispiel, um eine Form dauerhaft in den Vordergrund zu stellen - und der Code ist dem was ich da unten gepostet habe, ziemlich ähnlich - geht auch auf eine Systemfunktion

SetWindowPos Lib "User32"

drauf. Und es muss irgendein Parameter sein, der entscheidet, ob die Form dauerhaft im Hintergrund positioniert ist...

Aber leider kenn ich mich mit den Systemfunktionen nicht aus :(

Technician

Hi!

Falls irgendjemandem was hilft (um mir zu helfen ;)) - das hier ist der Code für "Form immer in den VORDERgrund".

Dieser Code funktioniert einwandfrei; der Code für "immer in den HINTERgrund" macht allerdings nixxxxx :-(

Private Declare Function SetWindowPos Lib "user32" _

(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _

ByVal X As Long, ByVal y As Long, ByVal cx As Long, _

ByVal cy As Long, ByVal wFlags As Long) As Long

Sub AlwaysOnTop(F As Form, OnTop As Boolean)

'Sub AlwaysOnTop(F As Form)

'OnTop = True: Fenster immer im Vordergrund

'OnTop = False: Fenster immer im Hintergrund

Dim Switch As Integer

If OnTop Then

Switch = -1 'im Vordergrund

Else

Switch = -2 'nicht im Vordergrund

End If

Call SetWindowPos(F.hwnd, Switch, 0, 0, 0, 0, &H53)

End Sub

Private Sub Command1_Click()

Form2.Show

End Sub

Private Sub Form_Load()

Call AlwaysOnTop(Form1, True)

End Sub

<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von siggy:

<STRONG>Auf jeden Fall muss zuerst die Form mal sichtbar sein, also z.B. bei Form_Activate einbauen.

Dann sieht es so aus, als ob diese Funktion nur das Fenster nach "Hinten", also hinter alle andere Fenster dieser Applikation (oder aller Programme?) legt. Das ist aber keine feste Eigenschaft der Form sondern nur so was wie bei der Reihenfolge der Controls einer VB-Form. Sobald ein anderes weiter hinten liegt (weil man es minimiert oder ähnliches) weil man das Fenster anklickt, kommt es natürlich wieder nach vorne.

</STRONG>

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.