Gå til innhold

Sjekke om vinduet har fokus


Anbefalte innlegg

Jeg husker jeg en gang i min tid som VB6.0-programmerer hadde en API som kunne fortelle meg hvilket vindu som hadde fokus/var aktivt.

 

Og derfor tenker jeg at det sikkert eksisterer noe som (i VB .NET) kan fortelle meg om vinduet til programmet mitt har fokus.

 

Noen som har noe?

 

Takk,

Degeim

Lenke til kommentar
Videoannonse
Annonse
Jeg husker jeg en gang i min tid som VB6.0-programmerer hadde en API som kunne fortelle meg hvilket vindu som hadde fokus/var aktivt.

 

Og derfor tenker jeg at det sikkert eksisterer noe som (i VB .NET) kan fortelle meg om vinduet til programmet mitt har fokus.

 

Noen som har noe?

 

Takk,

Degeim

7190244[/snapback]

 

if( System.Diagnostics.Process.GetForegroundWindow() == System.Diagnostics.Process.Current )

 

ca. ellerno....

Lenke til kommentar
System.Windows.Forms.Form.ActiveForm

tror jeg, den gir tilbake vinduet som er aktivt for programmet ditt.

 

Haha! jeg slo deg, jorn!

7190795[/snapback]

 

Hihi... faen... jaja, men forskjellig svar da... Kombiner dem hvis man jobber med programmer som har flere vinduer ;)

Lenke til kommentar

Beklager, men ingen av de to funket :!:

 

GeirGrusom sitt gir meg jo bare den aktive formen i prosjektet, mens Jorn79 sin ikke fantes.

 

Men jeg søkte på GetForeGroundWindow (jeg fant nemlig ikke på noe spesielt uten om "active form" og lignende å søke på før), og da fant jeg jammen det jeg trengte!

 

Her er en liten kodesnutt jeg lagde for å teste det ut, og som virker fint (variabelnavnene er bare kopiert fra stedet jeg fant dem):

 

Public Class Form1
   Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Integer, ByVal lpString As String, ByVal cch As Integer) As Integer
   Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Integer) As Integer
   Private Declare Function GetForegroundWindow Lib "user32" () As Integer

   Dim handle_renamed As Integer
   Dim length As Integer
   Dim title As String

   Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
       handle_renamed = GetForegroundWindow

       length = GetWindowTextLength(handle_Renamed)

       title = New String(Chr(0), length)

       GetWindowText(handle_renamed, title, length + 1)

       Msgbox(title)
   End Sub
End Class

 

Så takk likevel!

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...