Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

WindowDeactivate für alle Zielfenster

WindowDeactivate für alle Zielfenster
05.10.2020 22:18:04
Daniel
Liebe alle
ich habe eine kleine Frage, ev. weiss grad jemand, ob das geht resp. auch nicht.
Ich habe in Excel eine Testumgebung erstellt, in welcher meine Studierenden Aufgaben lösen müssen.
Öffnen, Speichern und Schliessen werden geloggt mit Zeitstempel, User, etc.
Soweit so gut.
Nun möchte ich einigermassen verhindern resp. loggen, wenn sie das Excel-Fenster verlassen, um beispielsweise zu surfen. WindowDeactivate wird aber offensichtlich nur ausgelöst, wenn ich in ein anderes Excel-Fenster wechsle. Ich müsste aber jedes Deaktivieren des Fensters haben, also auch, wenn sie in einen Browser oder sonst wohin wechseln.
Geht das irgendwie? In all meinen schlauen Büchern finde ich nichts, auch im Internet komme ich nicht zu einer Lösung.
Als Alternative könnte man Vollbild erzwingen, aber dann müsste ich noch Alt + Tab und anderes Zeugs sperren, und das wird glaub ich noch um einiges mühsamer.
Vielen Dank und schöne Grüsse
Daniel

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: WindowDeactivate für alle Zielfenster
05.10.2020 23:11:06
onur
Bei dieser Datei wird alle 5 sec überprüft, ob Excel das Focus hat - sobald ein anderes Fenster (Anwendung) den Focus bekommt, wird dies registriert (siehe Zelle A1).
Öffne sie und ein anderes Fenster (z.B. Browser) nebenaneinander zum Testen.
https://www.herber.de/bbs/user/140676.xlsm
frage an onur
05.10.2020 23:25:44
chris
Hallo, mich würde die Lösung auch Interessieren.
Aber ich verwende Excel 2007 und bei mir läuft der Code so nicht.
Könntest du oder ein anderer mir helfen ? Ich schaffe es nicht alleine.
grüße Chris
AW: frage an onur
05.10.2020 23:26:31
onur
32 Bit?
AW: frage an onur
05.10.2020 23:27:05
chris
Ich glaube 64 bit
Anzeige
AW: frage an onur
05.10.2020 23:29:04
onur
Schau doch mal nach (Konto/Info zu Excel).
AW: frage an onur
05.10.2020 23:30:44
chris
Mein Windows hat 64 Bit daher denke ich das Excel auch.
AW: frage an onur
05.10.2020 23:35:30
chris
Wo muss ich nachschauen ? Das gibt es bei mir nicht ?
Anbei füge ich ein Bild von meinem Excel als Screenshot.
Userbild
AW: frage an onur
05.10.2020 23:36:51
onur
Unter Datei/Konto
AW: frage an onur
05.10.2020 23:29:54
chris
Bei diesen beiden Zeilen bekomme ich einen fehler gemeldet.
Also die erscheinen rot.
Declare PtrSafe Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Declare PtrSafe Function GetActiveWindow Lib "user32.dll" () As LongPtr
Anzeige
AW: frage an onur
05.10.2020 23:34:40
onur
Lass ptrrsafe weg, denn du hast 32 bit (Hat nix mit der Windows-Version zu tun - Du kannst 64 bir Windows haben, aber 32 bit Excel - aber nicht umgekehrt.
Mach aus LongPtr Long und aus CLongPtr LongPtr, dann sollte es laufen.
AW: frage an onur
05.10.2020 23:40:01
chris
So habe ich es jetzt läuft aber nicht.
Meckert LongPtr an.
Option Explicit
Public StartZeit
Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Declare Function GetActiveWindow Lib "user32.dll" () As Long
Public Sub Check()
If LongPtr(Application.Hwnd) = GetActiveWindow Then
ThisWorkbook.ActiveSheet.Cells(1, 1) = "Excel"
Else
ThisWorkbook.ActiveSheet.Cells(1, 1) = "NON-Excel"
End If
StartZeit = Now + TimeValue("00:00:05")
Application.OnTime StartZeit, "Check"
End Sub

Anzeige
AW: frage an onur
05.10.2020 23:41:09
onur
Immer ALLES lesen!
"Mach aus LongPtr Long und aus CLongPtr LongPtr"
AW: frage an onur
05.10.2020 23:43:31
chris
Bin ich jetzt blöd.... sorry aber habe ich doch.
AW: frage an onur
05.10.2020 23:45:25
onur
Dann speichern, schliessen und neu starten oder die Sub "Check" manuell starten.
tip: PtrSafe weg und läuft, .. bei mir. owt
05.10.2020 23:47:26
ralf_b
AW: tip: PtrSafe weg und läuft, .. bei mir. owt
05.10.2020 23:49:22
onur
Gern geschehen !
AW: tip: PtrSafe weg und läuft, .. bei mir. owt
05.10.2020 23:50:40
chris
Sorry noch mal bitte hilfe.
Das ist mein Code aktuell.
Public StartZeit
Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Declare Function GetActiveWindow Lib "user32.dll" () As Long
Public Sub Check()
If CLngPtr(Application.Hwnd) = GetActiveWindow Then
ThisWorkbook.ActiveSheet.Cells(1, 1) = "Excel"
Else
ThisWorkbook.ActiveSheet.Cells(1, 1) = "NON-Excel"
End If
StartZeit = Now + TimeValue("00:00:05")
Application.OnTime StartZeit, "Check"
End Sub

Und er sagt in dieser zeile:
If CLngPtr(Application.Hwnd) = GetActiveWindow Then
Sub oder funktion nicht definiert bei CLngPtr
Aber löschen darf ich das ja auch nicht oder ?
Anzeige
AW: tip: PtrSafe weg und läuft, .. bei mir. owt
05.10.2020 23:53:13
onur
zum DRITTEN mal:
"Mach aus LongPtr Long und aus CLongPtr LongPtr"
Also:
Public Sub Check()
If CLng(Application.Hwnd) = GetActiveWindow Then
ThisWorkbook.ActiveSheet.Cells(1, 1) = "Excel"
Else
ThisWorkbook.ActiveSheet.Cells(1, 1) = "NON-Excel"
End If
StartZeit = Now + TimeValue("00:00:05")
Application.OnTime StartZeit, "Check"
End Sub

AW: tip: PtrSafe weg und läuft, .. bei mir. owt
05.10.2020 23:55:10
chris
Vielen Dank !!!!!!!!!!!!
Aber du Hast ja das daraus gemacht CLng und nicht LongPtr
AW: tip: PtrSafe weg und läuft, .. bei mir. owt
05.10.2020 23:55:59
onur
Wie gesagt - Sorry, ich hatte mich verschrieben.
AW: tip: PtrSafe weg und läuft, .. bei mir. owt
05.10.2020 23:53:33
chris
Und wenn ich aus CLngPtr - LongPtr mache kommt der gleiche Fehler?
Anzeige
AW: tip: PtrSafe weg und läuft, .. bei mir. owt
05.10.2020 23:53:55
onur
Sorry, mein Fehler - ich hatte mich verschrieben!
AW: tip: PtrSafe weg und läuft, .. bei mir. owt
05.10.2020 23:56:03
chris
Na zum Glück ich habe schon gedacht was ist jetzt los mit mir :))
VieleN Dank noch einaml für die Geduld !
Jetzt läuft es auch bei mir.
AW: WindowDeactivate für alle Zielfenster
06.10.2020 00:06:36
Daniel
perfekt, herzlichen Dank!
Gerne !
06.10.2020 00:07:20
onur
Gerne !
06.10.2020 00:16:53
onur

Declare PtrSafe Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

KANN WEG (Restmüll aus der Testphase).

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige