Demander toujours l'identité sur laquelle se connecter au démarrage d'Outlook Ex

Résolu
306xshdi Messages postés 29 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 février 2007 - 6 nov. 2004 à 18:10
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 7 nov. 2004 à 16:36
J'ai téléchargé cette application "OUTLOOK EXPRESS 6.0 AUTOMATIC DECONNECTER" (http://www.vbfrance.com/code.aspx?ID=8535). Le but de cette application est de demander à chaque démarrage d'Outlook Express sur quelle identité se connecter. Mais elle ne marche pas complétement. C'est-à-dire, si je clique sur l'application, ca marche mais si ensuite je ferme Outlook Express et que je cliques sur une adresse mail alors Outlook Express s'ouvre sur la dernière identité sans demander de mot de passe. Apparemment, l'application supprime 3 clés dans la base de registre et ensuite ouvre Outlook Express. L'idéal serait de supprimer ces 3 clés aussi à la fermeture d'Outlook Express. Donc, il faudrait surveiller en arrière plan (au moins invisible dans la barre de tâche), l'activité d'Outlook Express pour supprimer ces 3 clés à la fermeture d'Outlook Express. J'ai des idées mais malheureusement pas toute les compétences techniques pour les réaliser. Si quelqu'un peut m'aider !

6 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
6 nov. 2004 à 19:06
Salut, dans Outlook Express, s'il y a +sieurs identités, il te suffit de cliquer dans le menu Fichier/Changer d'identité.. puis sur le bouton "se déconnecter de l'identité".
Faut croire que l'appli que tu as essyé a oublié ou mal traité la partie déconnexion.

Cordialement, CanisLupus
306xshdi Messages postés 29 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 février 2007
6 nov. 2004 à 21:15
Oui, le problème est justement là. Lorsque l'on quitte Outlook Express sans se déconnecter (Fichier-> quitter ou la croix en haut à droite) alors lors de la prochaine ouverture, celui s'ouvre sur la dernière identité sans demander de mot de passe. Donc, au niveau sécurité 0 (car je n'ai pas envie que tout le monde lise mes messages). Donc, l'idée de cette aplli n'était pas mauvaise mais si tu as une autre solution, je suis preneur !!!!
306xshdi Messages postés 29 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 février 2007
7 nov. 2004 à 11:15
Salut,
Donc, en fait je voudrais savoir comment:

- vérifier dans les processus du système si "MSIMN.EXE" est toujours lancé ?
- faire pour mon appli n'apparaisse pas dans la barre de tâche ni dans application du gestionnaire de tâches mais juste dans processus ?

Pour ceux qui trouve que le but de cet appli est idiote, je répondrais peut-être mais cela me permettra de m'améliorer en vba ! Il faut bien apprendre un jour !!!!

Merci à tous
306xshdi Messages postés 29 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 février 2007
7 nov. 2004 à 12:41
Salut,
Je m'amuse comme un petit fou à la recherche de la solution. J'ai l'impression que mes préoccupations n'interressent pas grand monde mais tant pis. Peut-être que la solution interessera plus de monde !!!!

Voilà ce que j'ai trouvé :
Pour rendre l'appli invisible dans la barre de tâche faire:
Private Sub Form_Load()
App.TaskVisible = False
End Sub

Sinon il y a possibilité de le faire en démarrant un service à partir d'un ocx (SvcIt.ocx). Par contre, pour la méthode, je ne sais pas !!!!

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
7 nov. 2004 à 13:15
Salut,

J'ai vu ton appli. C'est une bonne idée.

Pour vérifier les process en cours sur le pc, j'ai quelquechose. C'est un peu complexe, je vais essayer de le commenter et je te le poste.

Pour l'apparition en taskbar, il y a comme tu l'a trouvé App.TaskVisible = False et aussi dans les propriétés de tes forms la propriété ShowInTaskBar à mettre à false mais cette propriété est en lecture seule au moment de l'exécution.
La méthode de démarrer en service que je connais ne fonctionne pas sous xp.
Je te la livre quand même, des fois que tu aurais encore 98 :

' Pour que l'EXE n'apparaisse pas dans la liste des tâches quand on fait
' ctrl+alt+suppr, une des solutions c'est de le faire passer pour un service.

' Explications : exécuter "CacherAppli True" au démarrage de l'appli
' puis "CacherAppli False' quand on quitte l'appli

Private Const RSP_SIMPLE_SERVICE = 1
Private Const RSP_UNREGISTER_SERVICE = 0

Private Declare Function GetCurrentProcessId _
  Lib "kernel32.dll" () As Long

Private Declare Function RegisterServiceProcess _
  Lib "kernel32.dll" _
    ( _
      ByVal dwProcessID As Long, _
      ByVal dwType As Long _
    ) As Long

' ----------------------------------
' Incscrire l'appli comme un service
' ----------------------------------
Public Sub CacherAppli(State As Boolean)
  
  RegisterServiceProcess GetCurrentProcessId(), IIf(State, RSP_SIMPLE_SERVICE, RSP_UNREGISTER_SERVICE)

End Sub


Pour SvcIt.ocx, je vais voir ça car ça pourrais m'intéresser aussi.

@+

Cordialement, CanisLupus
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
7 nov. 2004 à 16:36
Comme promis, un prog pour lister les process. Pour les commentaires, g pas eu trop le temps. Pour le tester, une form avec une listbox (list1) et 2 command buttons (cmdEnum et cmdQuit) + un module.

Dans le form :

Private Sub cmdEnum_Click()

  List1.Clear

  Select Case getVersion() ' suivant la version de l'OS

    Case 1 ' 95/98
      Dim f As Long
      Dim sname As String
      Dim hSnap As Long
      Dim proc As PROCESSENTRY32
      
      ' Récupération de la liste des process
      hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
      If hSnap = hNull Then Exit Sub
      proc.dwSize = Len(proc)
      ' Lecture du nom (avec son chemen) de l'exe du process
      f = Process32First(hSnap, proc)
      Do While f
        sname = Split(proc.szExeFile, Chr$(0))(0)
        List1.AddItem sname
        f = Process32Next(hSnap, proc)
      Loop
    
    Case 2 ' XP
      Dim cb As Long
      Dim cbNeeded As Long
      Dim NumElements As Long
      Dim ProcessIDs() As Long
      Dim cbNeeded2 As Long
      Dim NumElements2 As Long
      Dim Modules(1 To 200) As Long
      Dim lRet As Long
      Dim ModuleName As String
      Dim nSize As Long
      Dim hProcess As Long
      Dim i As Long
       
      cb = 8
      cbNeeded = 96
      Do While cb <= cbNeeded
        cb = cb * 2
        ReDim ProcessIDs(cb / 4) As Long
        lRet = EnumProcesses(ProcessIDs(1), cb, cbNeeded)
      Loop
      NumElements = cbNeeded / 4
      For i = 1 To NumElements
        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, ProcessIDs(i))
        If hProcess <> 0 Then
          lRet = EnumProcessModules(hProcess, Modules(1), 200, cbNeeded2)
          If lRet <> 0 Then
            ModuleName = Space(MAX_PATH)
            nSize = 500
            lRet = GetModuleFileNameExA(hProcess, Modules(1), ModuleName, nSize)
            List1.AddItem Left(ModuleName, lRet)
          End If
        End If
        lRet = CloseHandle(hProcess)
      Next
    
  End Select
  
End Sub

Private Sub cmdQuit_Click()
  Unload Me
End Sub


Dans le module :

' Constantes
Public Const PROCESS_QUERY_INFORMATION = 1024
Public Const PROCESS_VM_READ = 16
Public Const MAX_PATH = 260
Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
Public Const SYNCHRONIZE = &H100000
Public Const PROCESS_ALL_ACCESS = &H1F0FFF
Public Const TH32CS_SNAPPROCESS = &H2&
Public Const hNull = 0

' Types
Public Type PROCESSENTRY32
  dwSize As Long
  cntUsage As Long
  th32ProcessID As Long
  th32DefaultHeapID As Long
  th32ModuleID As Long
  cntThreads As Long
  th32ParentProcessID As Long
  pcPriClassBase As Long
  dwFlags As Long
  szExeFile As String * 260
End Type

Public Type OSVERSIONINFO
  dwOSVersionInfoSize As Long
  dwMajorVersion As Long
  dwMinorVersion As Long
  dwBuildNumber As Long
  dwPlatformId As Long
  szCSDVersion As String * 128
End Type

' Fonctions API
Public Declare Function Process32First Lib "kernel32" _
  ( _
    ByVal hSnapshot As Long, _
    lppe As PROCESSENTRY32 _
  ) As Long

Public Declare Function Process32Next Lib "kernel32" _
  ( _
    ByVal hSnapshot As Long, _
    lppe As PROCESSENTRY32 _
  ) As Long

Public Declare Function CloseHandle Lib "Kernel32.dll" _
  ( _
    ByVal Handle As Long _
  ) As Long

Public Declare Function OpenProcess Lib "Kernel32.dll" _
  ( _
    ByVal dwDesiredAccessas As Long, _
    ByVal bInheritHandle As Long, _
    ByVal dwProcId As Long _
  ) As Long

Public Declare Function EnumProcesses Lib "psapi.dll" _
  ( _
    ByRef lpidProcess As Long, _
    ByVal cb As Long, _
    ByRef cbNeeded As Long _
  ) As Long

Public Declare Function GetModuleFileNameExA Lib "psapi.dll" _
  ( _
    ByVal hProcess As Long, _
    ByVal hModule As Long, _
    ByVal ModuleName As String, _
    ByVal nSize As Long _
  ) As Long

Public Declare Function EnumProcessModules Lib "psapi.dll" _
  ( _
    ByVal hProcess As Long, _
    ByRef lphModule As Long, _
    ByVal cb As Long, _
    ByRef cbNeeded As Long _
  ) As Long

Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" _
  ( _
    ByVal dwFlags As Long, _
    ByVal th32ProcessID As Long _
  ) As Long

Public Declare Function GetVersionExA Lib "kernel32" _
  ( _
    lpVersionInformation As OSVERSIONINFO _
  ) As Integer

' Pour détecter la version de windows
Public Function getVersion() As Long
Dim osinfo As OSVERSIONINFO

  osinfo.dwOSVersionInfoSize = 148
  osinfo.szCSDVersion = Space$(128)
  GetVersionExA osinfo
  getVersion = osinfo.dwPlatformId
  
End Function


J'espère que ça pourra t'être utile.

Cordialement, CanisLupus
Rejoignez-nous