Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Fremdes Programm per VBA minimieren und maximieren
zurück: Abfrage mit ActiveCell weiter: Tabellenausschnitt anzeigen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Information Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Hans_K.
VBA- und VB-Gelegenheitsnutzer


Verfasst am:
23. Dez 2010, 18:20
Rufname:

Fremdes Programm per VBA minimieren und maximieren - Fremdes Programm per VBA minimieren und maximieren

Nach oben
       Version: Office XP (2002)

Hallo,

ich habe ein nerviges Problem, das ich über ein VBA-Makro abstellen will. Eine von vielen Nutzern eingesetzte Unternehmenssoftware ist so eingestellt, dass sie einen nach 60 Minuten Inaktivität ausloggt. Dann besteht das Problem, dass man sich nicht wieder anmelden kann, weil die Zahl der gleichzeitig angemeldeten User die Maximalgrenze erreicht hat, also keine Lizenz mehr frei ist.
Dies zur Begründung und zum Verständnis. Ich möchte nun per Excel-Makro alle x Minuten dieses (fremde, nicht auf Excel basierende) Programm aktiv halten, indem z.B. dessen Fenster abwechselnd minimiert und wieder maximiert wird. Ich würde dieses Makro vor einer längeren Abwesenheit starten und bei der Rückkehr beenden.
Hat jemand eine Idee, wie das geht? Danke schon mal für Vorschläge!

Hans_K.
slowboarder
Im Profil kannst Du frei den Rang ändern


Verfasst am:
23. Dez 2010, 18:58
Rufname:


AW: Fremdes Programm per VBA minimieren und maximieren - AW: Fremdes Programm per VBA minimieren und maximieren

Nach oben
       Version: Office XP (2002)

HI
dein Vorhaben verbessert aber nicht die Situation sondern verschlechtert sie nur, vorallem für deine Kollegen, da du dann ja permanent Online bleibst, ohne aktiv zu sein. dh du blockierst die Software für deine Kollegen.
vielleicht solltet ihr den TimeOut kürzer stellen, damit die Anwenung schneller wieder freigegeben wird und somit mehr Kollegen damit arbeiten können.

gerade zum Fest der Liebe ein bedenkliches Ansinnen

Frohe Weihnacht, Daniel
Hans_K.
VBA- und VB-Gelegenheitsnutzer


Verfasst am:
24. Dez 2010, 10:13
Rufname:

AW: Fremdes Programm per VBA minimieren und maximieren - AW: Fremdes Programm per VBA minimieren und maximieren

Nach oben
       Version: Office XP (2002)

Hallo Daniel,

mit einer solchen Antwort musste ich ja eigentlich rechnen Wink
Aber zum einen bin ich nicht der Admin (dann könnte ich mir anders helfen), zum anderen ist das Problem ja der Geiz des Unternehmens, zu wenig Lizenzen zu kaufen. Es ist auch nicht so, dass ich mit diesem Trick tagelang eine Lizenz blockieren will. Ich arbeite gemischt im Innen- und Aussendienst, und da kommt es schon mal vor, dass Kundenbesuche länger als eine Stunde dauern. Wenn ich dann nach der Rückkehr nicht mehr ins System komme, kann ich nicht weiter arbeiten.

Mfg Hans K.
Hans_K.
VBA- und VB-Gelegenheitsnutzer


Verfasst am:
24. Dez 2010, 13:44
Rufname:

AW: Fremdes Programm per VBA minimieren und maximieren - AW: Fremdes Programm per VBA minimieren und maximieren

Nach oben
       Version: Office XP (2002)

Hallo an alle,

habe die Aufgabe selbst gelöst, fuktioniert einwandfrei. Wenn jemand ein ähnliches Problem hat, kann er sich gern an mich wenden. Zum hier posten ist der Code zu lang.

Hans K.
KeepCoolMan
VBA-NonExpert ;) Office 2010


Verfasst am:
24. Dez 2010, 15:50
Rufname: Thomas
Wohnort: Celle


AW: Fremdes Programm per VBA minimieren und maximieren - AW: Fremdes Programm per VBA minimieren und maximieren

Nach oben
       Version: Office XP (2002)

Ooops, da hab ich wohl etwas zu lange gebraucht und bin etwas zu spät Wink

Aber falls es jemanden interessiert, hier mal mein Vorschlag...

Um es flexibel zu machen, habe ich eine Userform zur Eingabe der notwendigen Daten (Titelleisten-Text der Applikation, Intervall-Dauer und -Zeiteinheit, Start und Stop des Timers; siehe Bild) genommen.

Die Auswertung der UserForm sieht so aus:
Code:
Option Explicit

Private Sub btnStartTimer_Click()
    Dim msIntervall As Long
   
    '** Korrekte Zeit eingegeben?
    '*
    If Not IsNumeric(txtIntervall) Then
        MsgBox "Bitte Intervall eingeben!"
   
    '** entsprechend in ms umrechnen
    '*  und Timer starten
    '*
    Else
        msIntervall = Val(txtIntervall) * 1000
        msIntervall = msIntervall * IIf(optMin, 60, IIf(optStd, 3600, 1))
        StartTimer msIntervall
        btnStartTimer.Enabled = False
        btnStopTimer.Enabled = True
    End If
End Sub

Private Sub btnStopTimer_Click()
   
    '** Timer stoppen
    '*
    StopTimer
    btnStartTimer.Enabled = True
    btnStopTimer.Enabled = False
End Sub

Private Sub btnEnde_Click()
    StopTimer
    Me.Hide
End Sub


Die eigentlichen Routinen stecken im Modul modMinMaxWnd, in der auch die nötigen APIs deklariert werden:
Code:
Option Explicit

'***** benötigte APIs *********************************************
'*

'** steuert Anzeige eines Fensters
'*
Private Declare Function ShowWindow Lib "user32" ( _
  ByVal hWnd As Long, _
  ByVal nCmdShow As Long) As Long
 
'** ermittelt Handle eines Fensters
'*
Private Declare Function GetWindow Lib "user32" ( _
  ByVal hWnd As Long, _
  ByVal wCmd As Long) As Long

'** ermittelt Anzahl Zeichen eines Titelleisten-Textes
'*  (benötigt für Buffer in GetWindowText)
'*
Private Declare Function GetWindowTextLength Lib "user32" _
  Alias "GetWindowTextLengthA" ( _
  ByVal hWnd As Long) As Long
 
'** ermittelt Titelleisten-Text eines Fensters
'*
Private Declare Function GetWindowText Lib "user32" _
  Alias "GetWindowTextA" ( _
  ByVal hWnd As Long, _
  ByVal lpString As String, _
  ByVal cch As Long) As Long
 
Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2

'** erzeugt Timer-Event in festgelegten Intervallen
'*
Private Declare Function SetTimer Lib "user32.dll" ( _
  ByVal hWnd As Long, _
  ByVal nIDEvent As Long, _
  ByVal uElapse As Long, _
  ByVal lpTimerFunc As Long) As Long
 
'** entfernt einen Timer-Event
'*
Private Declare Function KillTimer Lib "user32.dll" ( _
  ByVal hWnd As Long, _
  ByVal nIDEvent As Long) As Long
 
Public hEvent As Long


'** Diese Prozedur maximiert und aktiviert ein Fenster,
'*  dessen Titelleisten-Text WND_FINDTITLE enthält
'*  und minimiert es gleich wieder
'*
Public Sub MinMaxWnd()
    Dim lhWnd As Long
    Dim sTitle As String, sFindTitle As String
    Dim lTitleBuffer As Long
     
    '** gesuchter Titelleisten-Text der Applikation
    '*    oder ein Teil davon (möglichst eindeutig!)
    '*
    sFindTitle = ufMinMaxWnd.txtFindTitle
     
    '** erstes Handle ermitteln
    '*
    lhWnd = GetWindow(Application.hWnd, GW_HWNDFIRST)
   
    '** alle verfügbaren Fenster...
    '*
    Do
       
        '** Buffer für Titelleisten-Text ermitteln,
        '*  String zur Aufnahme der Titelleisten-Textes vorbereiten
        '*  und Titelleisten-Text holen
        '*
        lTitleBuffer = GetWindowTextLength(lhWnd) + 1
        sTitle = Space(lTitleBuffer)
        GetWindowText lhWnd, sTitle, lTitleBuffer
       
        '** gesuchter Text im Titelleisten-Text?
        '*  dann entsprechendes Fenster aktivieren
        '*  und wieder minimieren
        '*
        If InStr(sTitle, sFindTitle) Then
            ShowWindow lhWnd, vbNormalFocus
            ShowWindow lhWnd, vbMinimizedNoFocus
        End If
       
        '** nächstes WindowHandle
        '*
        lhWnd = GetWindow(lhWnd, GW_HWNDNEXT)
       
    Loop Until lhWnd = 0

End Sub

'** Diese Prozedur startet den Timer
'*
Public Function StartTimer(ByVal msInterval As Long)

    '** wenn bereits ein Timer gestartet wurde,
    '*  dann nicht noch einen starten
    '*
    If hEvent <> 0 Then Exit Function
   
    '** Timer starten und Handler-ID merken
    '*
    hEvent = SetTimer(0&, 0&, msInterval, AddressOf MinMaxWnd)

End Function

'** Diese Prozedur beendet den Timer
'*
Public Function StopTimer()
   
    '** wenn kein Timer gestartet wurde, dann nichts tun
    '*
    If hEvent = 0 Then Exit Function
   
    '** Timer beenden und Handler-ID löschen
    '*
    KillTimer 0&, hEvent
    hEvent = 0
   
End Function

_________________
Gruß Thomas

Ich freue mich über Feedback, Kritik und Verbesserungsvorschläge...
Wer will, findet Möglichkeiten; wer nicht will, findet Gründe! :: Unt wär Rächdshraibfela fint, daaf sie behaltn!



Userform ufMinMaxWnd.gif
 Beschreibung:
 Dateigröße:  7.59 KB
 Angeschaut:  1940 mal

Userform ufMinMaxWnd.gif



MinMaxWnd.xls
 Beschreibung:

Download
 Dateiname:  MinMaxWnd.xls
 Dateigröße:  46.5 KB
 Heruntergeladen:  66 mal

toms777
Interesse: EXCEL/VBA


Verfasst am:
24. Dez 2010, 18:09
Rufname:

AW: Fremdes Programm per VBA minimieren und maximieren - AW: Fremdes Programm per VBA minimieren und maximieren

Nach oben
       Version: Office XP (2002)

Vielleicht genügt es auch, eine WM_KEYDOWN Nachricht an das Fenster zu senden.
_________________
Gruß,
Thomas

PS: Bitte Rückmeldung geben ob eine Lösung funktioniert hat oder nicht damit andere User davon profitieren können!
API
Gast


Verfasst am:
28. Dez 2010, 22:01
Rufname:

AW: Fremdes Programm per VBA minimieren und maximieren - AW: Fremdes Programm per VBA minimieren und maximieren

Nach oben
       Version: Office XP (2002)

Zitat:
Vielleicht genügt es auch, eine WM_KEYDOWN Nachricht an das Fenster zu senden.


Reicht - es müssen nicht immer viele Zeilen Code sein. Laughing
RO_SCH
Mädchen für (fast) alles


Verfasst am:
29. Dez 2010, 00:27
Rufname: Roland
Wohnort: Nürnberg

AW: Fremdes Programm per VBA minimieren und maximieren - AW: Fremdes Programm per VBA minimieren und maximieren

Nach oben
       Version: Office XP (2002)

Hi Leute,

wäre schön, wenn ihr auch einen Code posten könntet, nicht nur die Bemerkung, da hier sicher so gut wie niemand etwas mit eurer Bemerkung anfangen kann.

Danke schon mal - und einen guten Rutsch.

_________________
De nihilo nihil fit

Gruß Roland
toms777
Interesse: EXCEL/VBA


Verfasst am:
01. Jan 2011, 15:52
Rufname:


Re: AW: Fremdes Programm per VBA minimieren und maximieren - Re: AW: Fremdes Programm per VBA minimieren und maximieren

Nach oben
       Version: Office XP (2002)

RO_SCH - 28. Dez 2010, 23:27 hat folgendes geschrieben:

wäre schön, wenn ihr auch einen Code posten könntet, nicht nur die Bemerkung, da hier sicher so gut wie niemand etwas mit eurer Bemerkung anfangen kann.


Es gibt auch noch Google...

VBA WM_KEYDOWN senden

_________________
Gruß,
Thomas

PS: Bitte Rückmeldung geben ob eine Lösung funktioniert hat oder nicht damit andere User davon profitieren können!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Per Makro Datum in die Zelle kopieren 4 Gast 7350 02. Feb 2008, 12:56
Trustchen Per Makro Datum in die Zelle kopieren
Keine neuen Beiträge Excel Formeln: Per Doppelklick Zahl in Zelle einfügen 1 Frank4444 407 30. Dez 2007, 00:58
< Peter > Per Doppelklick Zahl in Zelle einfügen
Keine neuen Beiträge Excel Formeln: Per Wenn-Funktion Werte vergleichen und ausgeben 6 boxplot 1229 14. Sep 2007, 18:24
urs Per Wenn-Funktion Werte vergleichen und ausgeben
Keine neuen Beiträge Excel Formeln: Aktienkurse per Abfrage aus dem Internet importieren 3 AMLiebig 6913 29. Jun 2007, 14:18
styrnal Aktienkurse per Abfrage aus dem Internet importieren
Keine neuen Beiträge Excel Formeln: Per Drehfeld oder Button das Tabellenblatt wechseln 8 Bjoern 1 11208 08. Mai 2007, 14:05
Gast Per Drehfeld oder Button das Tabellenblatt wechseln
Keine neuen Beiträge Excel Formeln: Datenübernahme aus Verschiedenen Tabellen per Makro 15 Cassius 3187 25. Apr 2007, 09:35
Cassius Datenübernahme aus Verschiedenen Tabellen per Makro
Keine neuen Beiträge Excel Formeln: von Excel per DDE !!!!! auf Daten von Access zugreifen 1 Hoggle 1128 24. Feb 2007, 21:53
Hoggle von Excel per DDE !!!!! auf Daten von Access zugreifen
Keine neuen Beiträge Excel Formeln: Per Formel neues Tabellenblatt erstellen? 3 scorpion23 2574 16. Okt 2006, 18:28
scorpion23 Per Formel neues Tabellenblatt erstellen?
Keine neuen Beiträge Excel Formeln: Per Excel-Befehl ausgewählte Seiten drucken- Geht das? 2 jh312 4192 25. Sep 2006, 19:37
Gast Per Excel-Befehl ausgewählte Seiten drucken- Geht das?
Keine neuen Beiträge Excel Formeln: Darlehensrestschuld per bestimmten Tilgungsjahr berechnen 2 Kingralf 2854 14. Jun 2006, 14:04
Kingralf Darlehensrestschuld per bestimmten Tilgungsjahr berechnen
Keine neuen Beiträge Excel Formeln: Auffinden von Duplikaten per Formel 2 andrehamburg 606 25. März 2006, 18:10
andrehamburg Auffinden von Duplikaten per Formel
Keine neuen Beiträge Excel Formeln: Office 2000 - Zellen per Eingabe Löschen 3 pharlap 956 14. Feb 2006, 11:03
ae Office 2000 - Zellen per Eingabe Löschen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel Tricks