Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Benutzeräktivität innerhalb eines bestimmten Programmes überprüfen mit VB.Net

Frage Entwicklung Visual Studio

Mitglied: ProgrammierFreund91

ProgrammierFreund91 (Level 1) - Jetzt verbinden

26.10.2010, aktualisiert 14.12.2012, 6246 Aufrufe, 4 Kommentare

Ich versuche für den Betrieb meines Vaters ein Programm zu schreiben, welches ein bestimmtes Programm (z.B "notepad.exe") öffnet und es solange geöffnet lässt, bis der Benutzer mehr als eine viertel Stunde nichts mehr in diesem Programm gemacht hat. Es soll nochmal eine Nachricht geben, in der der Benutzer aufgefordert wird das Programm zu beenden oder wieder zu nutzen, da sonst alle nicht gespeicherten Daten verloren gehen werden.

Ich habe schon einen Versuch gestartet, doch leider überprüft er bei dem Programm die Aktivität im ganzen System und dies ist nicht ganz das Gewollte.
Kann mir bitte zufällig wer helfen? Komme leider selber derzeit nicht weiter, auch wenn ich meine Versuche icht aufgeben werde.

Hier ist mein Programmcode, den ich bis jetzt schon habe:
01.
Public Class Form1 
02.
 
03.
    Private Prozess As System.Diagnostics.Process 
04.
    Private Inaktiv, Meldung, Beenden As Integer 
05.
 
06.
    <Runtime.InteropServices.StructLayout(Runtime.InteropServices.LayoutKind.Sequential)> _ 
07.
    Public Structure LASTINPUTINFO 
08.
        Public cbSize As UInteger 
09.
        Public dwTime As UInteger 
10.
    End Structure 
11.
 
12.
    <Runtime.InteropServices.DllImport("USER32.DLL")> _ 
13.
    Private Shared Function GetLastInputInfo(ByRef ii As LASTINPUTINFO) As Boolean 
14.
    End Function 
15.
 
16.
    Public Function GetIdleTime() As Long 
17.
        Try 
18.
            Dim lastInPut As New LASTINPUTINFO() 
19.
            lastInPut.cbSize = CUInt(System.Runtime.InteropServices.Marshal.SizeOf(lastInPut)) 
20.
            If GetLastInputInfo(lastInPut) Then 
21.
                Dim el As Long = lastInPut.dwTime 
22.
                Dim ui As Long = (Environment.TickCount - el) 
23.
                ' Overflow 
24.
                If ui < 0 Then 
25.
                    ui = ui + UInteger.MaxValue + 1 
26.
                End If 
27.
                Return ui 
28.
            Else 
29.
                Throw New ApplicationException("Timespan") 
30.
            End If 
31.
        Catch ex As Exception 
32.
            Beep() 
33.
        End Try 
34.
    End Function 
35.
 
36.
    Public Function GetIdleTimeSpan() As TimeSpan 
37.
        Return New TimeSpan(GetIdleTime() * 10000) 
38.
    End Function 
39.
 
40.
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 
41.
        If Prozess.HasExited = False Then 
42.
            Prozess.Kill() 
43.
        End If 
44.
    End Sub 
45.
 
46.
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
47.
        Timer1.Interval = 100 'ms 
48.
        Timer1.Enabled = True 
49.
        Prozess = System.Diagnostics.Process.Start("notepad.exe") 
50.
    End Sub 
51.
 
52.
    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick 
53.
        Label1.Text = Me.GetIdleTime.ToString 
54.
        Inaktiv = Int(Label1.Text) 
55.
        Meldung = 10000 
56.
        Beenden = 20000 
57.
        If Prozess.HasExited = False Then 
58.
            If Meldung - Inaktiv = 0 Then 
59.
                MsgBox("Bitte benutzen Sie '...' wieder, da sonst das Programm ohne zu speichern in 10 Sekunden geschlossen wird. Durch diesen Vorgang gehen alle nicht gespeicherten Daten verloren! Sie werden jedesmal nach 10 Sekunden inaktivität aufgefordert, wieder Eingaben zu machen!", MsgBoxStyle.Critical) 
60.
            ElseIf Beenden - Inaktiv <= 0 Then 
61.
                Prozess.Kill() 
62.
                Close() 
63.
            End If 
64.
        Else 
65.
            Close() 
66.
        End If 
67.
    End Sub 
68.
 
69.
End Class
Mitglied: 91087
26.10.2010 um 15:27 Uhr
Bitte warten ..
Mitglied: ProgrammierFreund91
26.10.2010 um 15:39 Uhr
Wie ich einen Prozess beende, weiß ich ja.

Es handelt sich eher um das Problem, dass Person X ein Programm von einem Betriebserver gestartet hat, aber es eigentlich nicht mehr brauch. Nun hat er das Programme jedoch selber noch nicht geschlossen und verbraucht somit Arbeitsspeicher von Server, der nicht verbraucht werden müsste. Nun ist die Frage, wie VB erkennen kann, dass genau dieses Programm nicht mehr genutzt wird.

In meinem Beispiel ist es nun halt ein Editor und zudem wird halt eben dummerweise noch die Aktivität des Users systemweit auf dem Rechner von Person X überprüft.

Nun möchte ich gerne die Überprüfung der Aktivität des Users nur auf den Editor beziehen, damit sich dieser automatisch ohne zu speicher schließt, wenn der User eine gewisse Zeit das Programm nicht mehr genutzt hat.

Daher die Frage: Wie bekomme ich es hin, dass nur die Aktivität in dem Editor abgefragt wird?

P.S. Dein Link ist für die VisualBasic 5 und 6, also bringt es mir eh nichts, da ich VB.Net (bzw. VB 2008) nutze.
Bitte warten ..
Mitglied: ProgrammierFreund91
28.10.2010 um 10:13 Uhr
Leider haben meine Versuche bisher nichts gebracht.
Würde mich also sehr freuen, wenn jemand einen Ansatzlösung hätte.

Was meines erachtens auch gehen würde und vielleicht einfacher umzusetzen ist, dass das gewünschte Programmfenster immer im Vordergrung und immer Maximiert ist.

Also wenn wer etwas in diese Richtung hat, das würde ich auch als provesorische Lösung nehmen.

Danke schonmal im Vorraus für eure Hilfe und einen netten Gruß

Jens
Bitte warten ..
Mitglied: ProgrammierFreund91
29.10.2010 um 12:40 Uhr
Ich habe endlich eine Lösung gefunden. Zwar etwas anders als eigentlich von mir vorgesehen,
doch es reicht für die Ansprüche, die mir für das Programm gestellt wurden.
Bitte warten ..
Ähnliche Inhalte
Windows Tools
Programm auf bestimmten Monitor starten
gelöst Frage von djevil-adWindows Tools4 Kommentare

Hallo, ich hab da mal eine recht simple Frage, aber ich weiss nicht wie ich es am Besten machen ...

Visual Studio
Office-Programm mit vb.net starten und Fenstertitel beeinflussen
gelöst Frage von ahstaxVisual Studio2 Kommentare

Hallo, ich starte mit diesem vb.net-Code Outlook 2010: Nun würde ich gerne noch die Titelleiste des sich dann öffnenden ...

VB for Applications
Spalten, Zeilen und Diagonalen nach bestimmtem Zeichen überprüfen
gelöst Frage von windelterroristVB for Applications2 Kommentare

Hallo! Ich hatte letztens schon eine Frage gepostst, komme aber immer noch nicht ganz klar Für das Spiel 4 ...

Windows 8
Laendereinstellungen-Zahlenformat für ein bestimmtes Programm aendern
gelöst Frage von XolgerWindows 810 Kommentare

Hallo zusammen, ich suche eine Möglichkeit einem bestimmten Programm (Acclaro - Projektverwaltung und Zeiterfassung) die passenden Ländereinstellungen/Zahlenformate zur Verfügung ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 105 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 2 TagenInternet5 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 TagenDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
Frage von HelloWorldBatch & Shell16 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

Windows Server
Ping auf einen bestimmten Server nicht möglich
gelöst Frage von a.thierWindows Server7 Kommentare

Hallo, ich habe folgendes Problem. srv-dc1: Ping srv-nav > geht Ping srv-exchange > geht nicht srv-exchange: Ping srv-dc1 > ...

Hardware
Fujitsu Workstation mit K80 und Quadro P5000, Fehlermeldung: Connect Power Adapter
Frage von MachelloHardware7 Kommentare

Hallo Zusammen, ich benötige euren Rat da ich ratlos bin. Folgende Konfiguration im Büro: Fujitsu Workstation Celcius R940 Power ...