IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Tuer une tâche [AC-365]


Sujet :

VBA Access

  1. #1
    Membre émérite Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    977
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 977
    Par défaut Tuer une tâche
    Bonjour Forum !

    Je viens vers vous sur un sujet qui peut semble trivial: tuer une tâche.

    Le contexte: mon appli tourne sur un domaine avec plusieurs utilisateurs (admins ou users). Je développe en ce moment un outil d'administration qui, pour l'instant ne doit qu'assurer une messagerie (çà c'est ok) et un outil de surveillance des sessions users.
    Les PID (handles) sont enregistrés dans une table et je souhaite donner à l'admin la possibilité de tuer les processus users affichés et fermer leur session.

    L'idée est de tuer une tâche sur une session user depuis une session admin, au sein de la même session, un "GetObject" aurait suffi.

    J'essaie de mettre en œuvre la commande MSDOS TSKILL (ici).
    Mais je dois mal constituer ma chaine de paramètres.
    Nom : dos.jpg
Affichages : 163
Taille : 33,4 Ko
    Accessoirement, si qq1 pouvait me donner un tuyau pour transformer les noms de chemins longs en courts, çà m'enlèverait une épine du pied.

    Merci d'avance

  2. #2
    Membre émérite Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    977
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 977
    Par défaut Tuer une tâche
    Je viens de me rendre compte que ma session dos n'était pas lancée en mode admin, du coup mon processus est bien tué dans l'autre session.

    Il me reste 2 questions:
    . Comment lancer une commande dos en mode admin dans une procédure vba ?
    . Comment transformer automatiquement les noms longs en noms courts ?

    Merci encore de votre intérêt.

  3. #3
    Membre émérite Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    977
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 977
    Par défaut Tuer une tâche
    Je continue de "m'auto-répondre" pour ceux que çà intéresse:

    le formulaire :
    Nom : log.png
Affichages : 140
Taille : 42,4 Ko

    Lance le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub Commande26_Click()
        Dim laCde As String, strSQL As String, rep, Path_Application As String, usrShortDir As String
     
        '   Tue le process de la fouille
        Path_Application = SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE"
        usrShortDir = Chr(34) & GetShortPath(Replace(Path_Application, "\MSACCESS.EXE", "")) & "\MSACCESS.EXE" & Chr(34)
        Set fs = Nothing
     
        laCde = "TSKILL " & Trim(str(TSU_PID)) & " " & Chr(124) & " " & usrShortDir & _
                " /SERVER: " & Environ("UserDomain") & _
                " /ID: " & TSU_USR_Name
        rep = Shell(laCde, vbNormalFocus)
     
        '   Vide la ligne correspondante dans T_SessionUsers
        strSQL = "DELETE T_SessionUsers FROM T_SessionUsers " & _
            "WHERE T_SessionUsers.TSU_PID=" & TSU_PID & ";"
        CurrentDb.Execute strSQL
        Me.Requery
    End Sub
    ... Qui constitue la commande msDos:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TSKILL 7932 | "C:\PROGRA~1\MICROS~2\root\Office16\MSACCESS.EXE" /SERVER: V-NEXUS8-2016 /ID: Ric500
    Exécutée depuis la procédure VBA, rien ne se passe (cde Shell)
    Depuis la console MSDOS lancée depuis une session admin, çà tue le processus (malgré un message d'erreur).
    Nom : Serreur.jpg
Affichages : 139
Taille : 17,2 Ko

    J'y perds un peu mon latin !


  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 028
    Par défaut
    Voir si ce fil peut aider
    https://stackoverflow.com/questions/...rough-vba-code
    en particuliers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Dim oServ As Object
    Dim cProc As Variant
    Dim oProc As Object
    
    Set oServ = GetObject("winmgmts:")
    Set cProc = oServ.ExecQuery("Select * from Win32_Process")
    
    For Each oProc In cProc
    
        'Rename EXCEL.EXE in the line below with the process that you need to Terminate. 
        'NOTE: It is 'case sensitive
    
        If oProc.Name = "EXCEL.EXE" Then
          MsgBox "KILL"   ' used to display a message for testing pur
          oProc.Terminate()
        End If
    Next

  5. #5
    Membre émérite Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    977
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 977
    Par défaut Tuer une tâche
    Merci micniv,

    Au final tout çà me paraît compliqué, et je pense plutôt initialiser un flag de logout dans l'appli du user depuis mon outil d'admin: s'il est à 0, rien ne se passe, si je le mets à une valeur en secondes, l'appli attendra avant de lancer le logout.

  6. #6
    Membre émérite Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    977
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 977
    Par défaut Tuer une tâche
    @micniv,

    la méthode GetObject ne me permet d'interagir qu'avec les programmes lancés dans ma session courante (si je ne me trompe pas).

    L'idée était de tuer un process d'un autre user, mais je vais m'orienter vers la 2de solution.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [10gR1] Tuer une tâche Oracle
    Par Cereal123 dans le forum Oracle
    Réponses: 6
    Dernier message: 24/04/2006, 17h16
  2. Planifier une tâche
    Par maxnad dans le forum Langage
    Réponses: 4
    Dernier message: 24/10/2005, 18h01
  3. Effectuer une tâche à la fermeture de la fenêtre
    Par onipif dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/09/2005, 16h57
  4. Comment récupérer l'ID d'une tâche programmée avec AT ?
    Par langela94 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/09/2005, 11h01
  5. Comment tuer une frame
    Par tymous dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 28/07/2004, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo