WinFuture-Forum.de: Überprüfen ob ein Programm im Fullscreen läuft - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Überprüfen ob ein Programm im Fullscreen läuft siehe Titel


#1 Mitglied ist offline   Sorrow 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 31. Oktober 10
  • Reputation: 0

geschrieben 31. Oktober 2010 - 13:17

Hi Leute,

das Anliegen ist eigentlich leicht erklärt. (Fast) jeder kennt den Icq-Beschäftigt-Zustand, aber wie funktioniert er ?! Für die wo ihn nicht kennen, er erkennt immer sofort ob man im Fullscreenmodus ist oder nicht. Ganz egal ob es ein Spiel oder Film ist. Weiß einer wie man das Nachprogrammiert? Am besten wär C++, kann aber auch java und autoit.

Danke schon mal für die Antworten ;D

Grüße
0

Anzeige



#2 _der dom_

  • Gruppe: Gäste

geschrieben 20. November 2010 - 17:59

Der Logik nach zu urteilen würde ich sagen, dass ICQ den Fokus verliert wenn ein Programm maximiert wird. Versuch das doch mal
0

#3 Mitglied ist offline   airlight 

  • Gruppe: aktive Mitglieder
  • Beiträge: 36
  • Beigetreten: 27. August 04
  • Reputation: 0

geschrieben 20. November 2010 - 18:18

Mit C++ gehst du schon in die richtige Richtung. Ich habe in dunkler Erinnerung dass das System eine Nachricht sendet, wenn ein Programm den Fokus erhaelte und/oder den vollen Bildschirm nutzt. Diese Nachricht musst du abfangen, dann deinen Code ausfuehren und die Nachricht wieder weiterleiten.
0

#4 _der dom_

  • Gruppe: Gäste

geschrieben 20. November 2010 - 18:30

Beitrag anzeigenZitat (airlight: 20.11.2010, 18:18)

Mit C++ gehst du schon in die richtige Richtung. Ich habe in dunkler Erinnerung dass das System eine Nachricht sendet, wenn ein Programm den Fokus erhaelte und/oder den vollen Bildschirm nutzt. Diese Nachricht musst du abfangen, dann deinen Code ausfuehren und die Nachricht wieder weiterleiten.


Das kannst du auch mit C#, VB und Java - es kommt darauf an, was man genau vorhat. Hier würde, wenn ich das richtig sehe, c# sogar schon ausreichen - performance technisch
1

#5 Mitglied ist offline   Sorrow 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 31. Oktober 10
  • Reputation: 0

geschrieben 28. November 2010 - 21:00

Also erst mal danke für die Antworten... ich hatte schon die Hoffnung aufgegeben das mir jemand helfen kann :)

Das mit dem Fokus ist schon eine gute Idee dennoch kann das nicht die Technik von ICQ sein, da wenn ich zb in Firefox bin und der fokus auf firefox liegt - icq keine änderung zeigt bzw nicht in den "Beschäftigt"-Modus geht

Meine momentane Theorie geht dahin, das ICQ alle Prozesse abfragt ob Sie ihm Vollbildmodus abläuft - da wenn ich in C++ ein Fenster anzeigen lassen will muss ich die Funktion(/Methode - What ever xD)
"ShowWindow( hWnd, SW_SHOWDEFAULT )"
verwenden.
Das Fenster wird in dem Bsp normal gestartet im Vollbild würde des ganze so geschrieben
"ShowWindow( hWnd, SW_SHOWMAXIMIZED )"

die Frage ist jedoch ist so eine Abfrage realisierbar ?! :)
0

#6 Mitglied ist offline   Andi_84 

  • Gruppe: aktive Mitglieder
  • Beiträge: 391
  • Beigetreten: 30. November 08
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 01. Dezember 2010 - 09:59

Schau' dir mal die WM_ACTIVATE-Message an.
-> Link zur MSDN-Page: KLICK.

"Dein" Fenster bekommt diese Message, wenn ein anderes Fester aktiviert wird:

Zitat

WM_ACTIVATE Message
Sent to both the window being activated and the window being deactivated.
...

Aus den Parametern der Message siehst du, ob aus den Parametern (wParam und lParam):

Zitat

Parameters
wParam
The low-order word specifies whether the window is being activated or deactivated.
...
WA_INACTIVE: Deactivated.
...

lParam
A handle to the window being activated or deactivated, depending on the value of the wParam parameter. If the low-order word of wParam is WA_INACTIVE, lParam is the handle to the window being activated.
...

^^ Der rote Text ist wichtig: Mit dem Window-Handle (HWND), das du bekommst, kannst du abfragen, ob das Fenster, das aktiviert wurde, maximiert ist.
Dazu brauchst du die IsZoomed() API:

Zitat

IsZoomed Function
Determines whether a window is maximized.

BOOL WINAPI IsZoomed(__in HWND hWnd);

Der Parameter hWnd in dieser Funktion ist der lParam aus der obigen Message.

Also in einer typischen Window-Procedure eines Win32 GUI-Programms inc C:
LRESULT CALLBACK My_WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_ACTIVATE:
		if ((LOWORD(wParam) == WA_INACTIVE) && lParam && IsZoomed((HWND)lParam))
		{
		/* Maximiertes Fester wurde aktiviert
					Hier das machen, was du vorhast...
			*/
		}
		break;

		/* case xxx:
		break; 

		case yyy:
		break;
		*/

		default:
			return DefWindowProc(hwnd, message, wParam, lParam);	
	} 
}

^^ Obiger Code ist ungetestet.
Ich kann nicht versprechen, dass du damit über alle Maximierten Fenster informiert wirst, insbes. über solche, die schon aktiviert sind, und dann erst maximiert werden.

Viele Grüße,
Анди

Dieser Beitrag wurde von Andi_84 bearbeitet: 01. Dezember 2010 - 10:01

Laptop: HP EliteBook 8560p; Core i7-2720QM, 16 GB DDR3 1333, 500 GB HDD, Intel HD Graphics 3000, Win 7 x64 SP1 Build 7601.17514
Internetzugang: T-Home VDSL 50 @ 51392 kbit/s down, 10048 kbit/s up || Router: FritzBox 7360 @ FW 111.05.24
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0