ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Έλεγχος ανοικτού προγράμματος

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 14-12-11, 15:20
Όνομα: Δήμος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 05-01-2009
Περιοχή: ΛΑΡΙΣΑ
Μηνύματα: 83
Προεπιλογή Έλεγχος ανοικτού προγράμματος

Καλησπερα και καλές εορτές σε ολα τα μέλη του φόρουμ.

Εχω ενα προβλημα στην εφαρμογη που δουλευω στο μαγαζι μου και θα παρακαλουσα για την βοηθεια σας.

Μερικες φορες κλεινουμε κατα λαθος το φορολογικο προγραμα και εκδιδουμε παραστατικα χωρις συμβολοσειρα και (το προστιμο της εφοριας ειναι αρκετα καλο !!!!)
Το προβλημα θα λυνονταν κατα την γνωμη μου εαν μπορουσα να ελενξω πριν εκτυπωθει ενα παραστατικο εαν το προγραμα της φορολογικης μηχανης ειναι ανοικτο (δεν ξερω πως να το κανω ομως) η εαν υπαρχει αλλος τροπος.

Ευχαριστω.

Δημος
__________________
Δήμος
Απάντηση με παράθεση
  #2  
Παλιά 14-12-11, 18:10
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.249
Προεπιλογή

Καλησπέρα σε όλους!

Αγαπητέ Δήμο, για να ελέγξεις αν μια εφαρμογή είναι ανοιχτή θα πρέπει να γνωρίζεις:
  • είτε τον τίτλο του παραθύρου της εφαρμογής
  • είτε το όνομα της διεργασίας της (Process)
Για να βρεις το όνομα της διεργασίας μιας εφαρμογής:
  • Άνοιξε το παράθυρο Διαχείρισης εργασιών των Windows
    εξί κλικ στη γραμμή εργασιών > Εκκίνηση Διαχείρισης εργασιών).
  • Στην καρτέλα "Εφαρμογές" κάνε δεξί κλικ στο όνομα της εφαρμογής και επίλεξε "Μετάβαση στη διεργασία".
    Θα μεταφερθείς αυτόματα στην επόμενη καρτέλα όπου θα δεις το (επιλεγμένο) όνομα της διεργασίας (στη στήλη Όνομα εικόνας).
Υπάρχουν αρκετές προσεγγίσεις για να ελέγξεις αν μια εφαρμογή είναι ανοικτή.

Παρακάτω παρουσιάζω 3 από αυτές:

1) Αν γνωρίζεις τον τίτλο του παραθύρου της εφαρμογής, ο κώδικας που μπορείς να χρησιμοποιήσεις είναι:


Κώδικας:
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
        ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Function IsRunning(WindowTitle As String) As Boolean
    IsRunning = FindWindow(vbNullString, WindowTitle) <> 0
End Function

Sub test()
    If IsRunning("My Application window title") Then    ' Εδώ θα βάλεις τον τίτλο του παραθύρου της εφαρμογής.
        ' Ο κωδικας σου...
        '...............
        '...............
    Else
        MsgBox "Application Is not running!", vbCritical
    End If
End Sub
Προσοχή! Ο κώδικας δεν θα λειτουργήσει σωστά αν ο τίτλος του παραθύρου είναι διαφορετικός κάθε φορά.

2) Αν γνωρίζεις το όνομα της διεργασίας της εφαρμογής, ο κώδικας που μπορείς να χρησιμοποιήσεις είναι:

Κώδικας:
Function IsProcessRunning(strProcess As String) As Integer
    Dim Process, ProcessList, strComputer, objWMIService
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
            & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set ProcessList = objWMIService.ExecQuery _
            ("Select * from Win32_Process Where Name = '" & strProcess & "'")
    IsProcessRunning = ProcessList.Count
End Function

Sub test1()
    If IsProcessRunning("MyApp.exe") Then     ' Εδώ θα βάλεις το όνομα της διεργασίας της εφαρμογής.
        ' Ο κωδικας σου...
        '...............
        '...............
    Else
        MsgBox "Application Is not running!", vbCritical
    End If
End Sub
Ίσως ο παραπάνω κώδικας μπορεί να μην λειτουργήσει αν ο λογαριασμός χρήστη των Windows έχει περιορισμένα δικαιώματα.

3) Υπάρχει και η εντολή VBA AppActivate title[, wait] αλλά... δεν είναι ότι καλύτερο. Θα την παρουσιάσω όμως:

Κώδικας:
Function AppIsRunning(WindowTitle As String) As Boolean
    On Error Resume Next
    AppActivate WindowTitle
    AppIsRunning = Err = 0
    On Error GoTo 0
End Function

Sub test2()
    If AppIsRunning("My Application window title") Then     ' Εδώ θα βάλεις τον τίτλο του παραθύρου της εφαρμογής.
        ' Ο κωδικας σου...
        '...............
        '...............
    Else
        MsgBox "Application Is not running!", vbCritical
    End If
End Sub
Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 15-12-11 στις 18:45.
Απάντηση με παράθεση
  #3  
Παλιά 15-12-11, 18:01
Όνομα: Δήμος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 05-01-2009
Περιοχή: ΛΑΡΙΣΑ
Μηνύματα: 83
Προεπιλογή

Καλησπερα σε ολους

Τασο σε ευχαριστω δοκιμασα την δευτερη μεθοδο και δουλευει αψογα
(Γλυτωσα μερικα προστιμα)

Καλες εορτες
__________________
Δήμος
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Δημιουργία έκθεσης εβδομαδιαίου προγράμματος διατροφής γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 9 12-11-14 07:02
[Συναρτήσεις] Σύνταξη εβδομαδιαίου Πρόγραμματος Οδηγών ΑΠΟΣΤΟΛΗΣΚ Excel - Ερωτήσεις / Απαντήσεις 4 10-12-13 18:41
Access Σύνταξη Εβδομαδιαίου Προγράμματος ΑΠΟΣΤΟΛΗΣΚ Access - Ερωτήσεις / Απαντήσεις 1 01-12-13 18:29
[Γενικά] Δημιουργία προγράμματος panos24 Excel - Ερωτήσεις / Απαντήσεις 9 11-07-12 16:14
Εντολή εκτέλεσης προγράμματος stratos75 Access - Ερωτήσεις / Απαντήσεις 1 05-05-12 10:00


Η ώρα είναι 23:25.