Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

VB.NET - jak sprawdzić czy okno aplikacji jest widoczne ?

#1
VB.NET - jak sprawdzić czy okno aplikacji jest widoczne ?
Witam.
Jak sprawdzić, czy okno mojej aplikacji jest widoczne na ekranie, tzn. nie jest zasłonięte przez inne okna ?
Dotychas próbowałem tak:
1) Sprawdzić jaki obszar zajmuje moje okno (właściwości Left, Right, Bottom i Top formatki)
2) pobrać uchwyt do okna, które jest na wierzchu GetForegroundWindow i z kolej sprawdzić jaki obszar ono zajmuje GetWindowRect.
3) porównać obszary zajmowane przez okno mojej aplikacji uzyskane w 1) i porównać z obszarem zajmowanym przez okno na wierzchu uzyskanymi w punkcie 3)
Fragment kodu - deklaracje:
Kod:
Private Structure RECT
        Dim _Left As Integer
        Dim _Top As Integer
        Dim _Right As Integer
        Dim _Bottom As Integer
    End Structure

<DllImport("user32.dll", SetLastError:=True)> _
Private Function GetForegroundWindow() As IntPtr
    End Function

  <DllImport("user32.dll")> _
Private Function GetWindowRect(ByVal hWnd As IntPtr, ByRef lpRect As RECT) As Boolean
    End Function

Kod:
Kod:
Dim HandleForegoundWindows As IntPtr
Dim r As RECT
.......
.......
HandleForegoundWindows = GetForegroundWindow()
GetWindowRect(HandleForegoundWindows, r)

if (frmMain.Left > r._Left) And (frmMain.Right < r._Right) And (frmMain.Top > r._Top) And (frmMain.Bottom < r._Bottom) then
'moje okno jest niewidoczne
End if

To się jednak sprawdza tylko wtedy, gdy okno zasłaniające jest na wierzchu.
Jak sobie poradzić z następującą sytuacją:
- moje okno jest zmaksymalizowane, otworzyłem przykładowo notatnik i również zmaksymalizowałem jego okno. Moje okno jest całkowicie zasłonięte.
Następnie otwieram przykładowo menedżer zadań (jego okno jest mniejsze od okna mojej aplikacji). Funkcje GetForegroundWindow, GetWindowRect zwrócą mi informacje o oknie menedżera zadań a nie o oknie, które faktycznie zasłania okno mojej aplikacji.
Czy jednym sposobem jest tutaj porównanie obszaru zajmowanego przez moje okno ze wszystkimi nie-zminimalizowanymi otwartymi oknami ? Czy można zrobić to jakoś szybciej ?
Nie odpowiadam w tematach z działu 'Bezpieczeństwo', w których brakuje pełnego zestawu logów:
http://forum.pcformat.pl/WAZNE-Jak-zaloz...ec-WAZNE-t
Jeżeli prowadziłem wątek i w nim nie odpowiadam przez 3 dni-proszę o przypomnienie na PW.
Nie pomagam na PW.
Prośba o przetestowanie aplikacji: http://forum.pcformat.pl/Prosba-o-przete...L-OpenGL-t
 System operacyjny: windows_xp_2003 Przeglądarka: seamonkey
#2
RE: VB.NET - jak sprawdzić czy okno aplikacji jest widoczne ?
Sądząc po tym, co chcesz zrobić, możesz użyć GetNextWindow i dostać okno, które przykrywa bezpośrednio Twoje.
A SQL query goes into a bar, walks up to two tables and says, "Can I join you?"

[Obrazek: 15j3phh4_1 kopia2a.jpg]
 System operacyjny: windows_seven Przeglądarka: opera
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
vb jak sprawdzic czy okno jest otwartevb.net rozmiar okna innej aplikacji?

Podobne wątki (VB.NET - jak sprawdzić czy okno aplikacji jest widoczne ?)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Menu (Nie widoczne długie opisy) wanhelsing 5 8669 28.04.2019, 19:31
Ostatni post: koneton
  Jaki kod pod takie okno formularza w visualbasicu 2010? aktywny27 11 20774 26.11.2017, 23:26
Ostatni post: Ajgor
Question Czy znacie jakąś stronę, gdzie można zostać tłumaczem aplikacji FredixGaming 0 6450 20.01.2016, 20:37
Ostatni post: FredixGaming

Skocz do:


Wybrane wątki (VB.NET - jak sprawdzić czy okno aplikacji jest widoczne ?)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Big Grin Czy dostane sie technikum informatycznego klaudiusz20046 6 10194 21.03.2019 01:28
Ostatni post: UnableToSee
  [C#] Program do moderacji czatów gier wiktrom12 0 7414 07.03.2019 15:33
Ostatni post: wiktrom12
  Mój pierwszy projekt - Pomoc rafal12999 1 7880 07.02.2019 22:01
Ostatni post: Szachista
  pomoc projekt scilab piesel18 2 9285 04.02.2019 09:03
Ostatni post: piesel18
  Szkoła Informatyczna Zikinan 1 8141 02.02.2019 17:59
Ostatni post: wojownikhaha
  [Java] Strona z zadaniami do rozwiązania i odpowiedziami rafal12999 2 8872 27.01.2019 13:44
Ostatni post: rafal12999
  kompilacja biblioteki Agui - cmake jurek2 0 8179 10.01.2019 13:12
Ostatni post: jurek2
  Zamiana całego zestawu znaków wg przyporządkowania BarHorab 5 8879 19.12.2018 16:45
Ostatni post: Szachista
  Sumowanie licz excel - problem OxyGenE 2 11548 19.12.2018 16:29
Ostatni post: Szachista
  Jaki kod pod pewne zdarzenia visualbasic 2010 aktywny27 4 9336 07.11.2018 13:41
Ostatni post: Ajgor
Scared Ipad Pro programowanie? NissmoOne 4 10387 06.10.2018 12:22
Ostatni post: NissmoOne
  C# pierwsza pusta komórka Excel DonCorleone 0 9389 21.09.2018 16:58
Ostatni post: DonCorleone
  .bat nie kompresuje plików GIENTY 3 9930 06.09.2018 07:20
Ostatni post: broda99
  problem z programem .bat wiktrom12 4 11141 30.08.2018 08:25
Ostatni post: wiktrom12
  Silnik do gier ZigglerGames 1 9768 23.08.2018 09:03
Ostatni post: Szachista