Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Barra del titolo in primo piano a tempo vb6
Forum - Visual Basic 6 - Barra del titolo in primo piano a tempo vb6

Avatar
PcBase (Normal User)
Newbie


Messaggi: 20
Iscritto: 19/04/2011

Segnala al moderatore
Postato alle 20:07
Martedì, 18/09/2012
Ciao

Ho creato un programma .exe in Vb6 dalle dimensioni ridotte, compare solamente la barra del titolo e il pulsante X per chiudere l'applicazione.
Chiedo quale tecnica codice devo utilizzare per richiamare la barra del titolo in automatico ogni tot secondi a partire da quando perde il Focus?
Ho assoluta necessità di effettuare questa operazione per ipedire ad un programma che utilizzo sul lavoro di rimanere per troppo tempo (10 minuti) col focus attivo.

Ringrazio anticipatamente per qualunque informazione in merito.

PM Quote
Avatar
Uno sciame di API (Member)
Pro


Messaggi: 66
Iscritto: 10/07/2012

Segnala al moderatore
Postato alle 9:51
Mercoledì, 19/09/2012
Non avendo a portata di mano Vb6, ho scritto un codice in vb.net ma credo che si possa convertire facilmente. :)
Ecco il codice:
Codice sorgente - presumibilmente VB.NET

  1. Public Class myTimer
  2. WithEvents mostrafrm As New Timer
  3. Dim disattivo As Boolean
  4. Dim trascorsi, minuti As Integer
  5. Private Sub mostrafrm_Tick() Handles mostrafrm.Tick
  6. If disattivo = True Then
  7. If trascorsi = 0 Then Activate() Else trascorsi -= 1
  8. End If
  9. End Sub
  10. Private Sub Deactivatefrm() Handles MyBase.Deactivate
  11. disattivo = True
  12. End Sub
  13. Private Sub Activatedfrm() Handles MyBase.Activated
  14. trascorsi = minuti * 60
  15. disattivo = False
  16. End Sub
  17. Private Sub Form1_Load() Handles MyBase.Load
  18. mostrafrm.Interval = 1000 '1 secondo
  19. mostrafrm.Enabled = True
  20. minuti = 10
  21. Activatedfrm()
  22. End Sub
  23. End Class


Ultima modifica effettuata da Uno sciame di API il 20/09/2012 alle 16:39
PM Quote
Avatar
PcBase (Normal User)
Newbie


Messaggi: 20
Iscritto: 19/04/2011

Segnala al moderatore
Postato alle 22:40
Mercoledì, 19/09/2012
Ciao

Ho provato invano ad eseguire il codice proposto...

Intanto ho preso alcuni spunti e ho ricreato un nuovo file

Ecco il codice che testerò domani penso possa bastare attivare il programma in questo modo ogni 60 secondi.

Codice sorgente - presumibilmente Visual Basic 6

  1. VERSION 5.00
  2. Begin VB.Form Form1
  3.    ClientHeight    =   0
  4.    ClientLeft      =   60
  5.    ClientTop       =   450
  6.    ClientWidth     =   915
  7.    LinkTopic       =   "Form1"
  8.    MaxButton       =   0   'False
  9.    MinButton       =   0   'False
  10.    ScaleHeight     =   0
  11.    ScaleWidth      =   915
  12.    StartUpPosition =   3  'Windows Default
  13.    Begin VB.Timer Timer1
  14.       Interval        =   60000
  15.       Left            =   360
  16.       Top             =   1560
  17.    End
  18. End
  19. Attribute VB_Name = "Form1"
  20. Attribute VB_GlobalNameSpace = False
  21. Attribute VB_Creatable = False
  22. Attribute VB_PredeclaredId = True
  23. Attribute VB_Exposed = False
  24. Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As Long, _
  25. ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, _
  26. ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
  27. Private Const HWND_TOP As Long = 0
  28. Private Const HWND_TOPMOST As Long = -1
  29. Private Const HWND_NOTOPMOST As Long = -2
  30. Private Const SWP_NOMOVE As Long = &H2
  31. Private Const SWP_NOSIZE  As Long = &H1
  32.  
  33. Private Sub Form_Initialize()
  34.     SetWindowPos Form1.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
  35. End Sub
  36.  
  37. Private Sub Timer1_Timer()
  38.     Form1.Show
  39. End Sub



PM Quote
Avatar
PcBase (Normal User)
Newbie


Messaggi: 20
Iscritto: 19/04/2011

Segnala al moderatore
Postato alle 12:52
Giovedì, 20/09/2012
Ciao

Oggi ho provato la mia soluzione:
Funziona solo al 98%

Codice sorgente - presumibilmente Visual Basic 6

  1. Private Sub Timer1_Timer()
  2.    Form1.Show
  3. End Sub



Non seleziona perfettamente la chiamata al Form, ciclo non disabilita la barra dell'applicazione come da richiesta.

Non so se può bastare un DoEvents altrimenti mi servirebbe attivare il form diversamente da codice.

PM Quote