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 8488 28.04.2019, 19:31
Ostatni post: koneton
  Jaki kod pod takie okno formularza w visualbasicu 2010? aktywny27 11 20723 26.11.2017, 23:26
Ostatni post: Ajgor
Question Czy znacie jakąś stronę, gdzie można zostać tłumaczem aplikacji FredixGaming 0 6432 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
  Silnik do gier ZigglerGames 1 9677 23.08.2018 09:03
Ostatni post: Szachista
  Chciałbym zrobić prosty plik exe z jedną funkcją densour 4 10454 09.08.2018 16:24
Ostatni post: Ajgor
  Który język wybrać do stworzenia aplikacji synchronizujące pliki z urządzeniem mobiln Elemental 2 2582 18.07.2018 12:05
Ostatni post: Ajgor
  Pomysł napisania programu ROM FireBytes 3 11040 28.06.2018 16:56
Ostatni post: FireBytes
  [VBA] Tworzenie nowego arkusza z danymi z TextBox'a Pioro 4 11467 19.06.2018 23:24
Ostatni post: broda99
  Potwierdzenie na maila po wysłaniu pliku coci 0 10561 13.06.2018 20:37
Ostatni post: coci
  Pieczętowanie Archiwum Jar - Po co? wanhelsing 3 11156 19.05.2018 20:55
Ostatni post: koneton
  Wyszukiwarka w spawnerze nie reaguje na polskie znaki kazik666 0 10827 16.05.2018 12:04
Ostatni post: kazik666
  BASH symulator silnika dawswi1 3 10884 13.05.2018 10:43
Ostatni post: Szachista
  Autohotkey automatyczny zapis TheProgson 0 10438 07.05.2018 21:27
Ostatni post: TheProgson
  VBA Pobieranie wybranych plików z danymi julietta03 1 10772 04.05.2018 08:25
Ostatni post: broda99
  [VBA] Przenoszenie danych między formularzami Pioro 4 11245 23.04.2018 11:48
Ostatni post: broda99
  Skrypt, który szuka i zamienia armen10 2 10686 23.04.2018 10:04
Ostatni post: armen10
  Liniowa regresja w Pythonie a budowanie modelu Trojan3000 2 10795 16.04.2018 13:26
Ostatni post: Trojan3000
  Początki z bashem - jak napisać skrypty: wysłanie maila i kalkulator? Kristov81 4 14621 21.03.2018 18:32
Ostatni post: Szachista