begin process at 2012 02 17 11:53:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

Fermer un programme (shell)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fermer un programme (shell)

lundi 21 février 2005 à 12:48:15 | Fermer un programme (shell)

Mr Capone

Bonjour voila je souhaite enchainer des video pour cela je les ouvre avec un shell. Je me suis aidé d'un code deja présent sur vbfrance.fr qui m'aide drolement, apres l'exécution de la premiere video je peut recuperer la main. Cependant a la fin de la video j'aimerait qu'il me ferme le programme avec lequel j'ai lu la vidéo... pour ensuite passer a la suivante...

voici mon code que j'ai fait avec l'aide de Vbfrance

Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_DYN_DATA = &H80000004


Private Declare Function WaitForSingleObject Lib "kernel32" _
   (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" _
   (ByVal hObject As Long) As Long
  
Private Declare Function OpenProcess Lib "kernel32" _
   (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
    ByVal dwProcessId As Long) As Long


Private Const INFINITE = -1&
Private Const SYNCHRONIZE = &H100000


Public Enum HCle
    HKeyLocalMachine = 0
    HKeyCurrentUser = 1
    HKeyClassesRoot = 2
    HKeyUsers = 3
    HKeyDynamicData = 4
End Enum


'pour créer ou ouvrir une clé
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
    (ByVal HKey As Long, _
     ByVal lpSubKey As String, _
     phkResult As Long) As Long
   
'pour lire une valeur
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _
    (ByVal HKey As Long, _
     ByVal lpValueName As String, _
     ByVal lpReserved As Long, _
     lpType As Long, _
     lpData As Any, _
     lpcbData As Long) As Long

Private Sub bt_select_Click()
CD1.ShowOpen

If CD1.FileName <> "" Then
    listclip.AddItem (CD1.FileName)
End If
End Sub

Private Sub Command1_Click()
    Dim extension As String
    Dim pos As Integer
    Dim tmp1 As String
    Dim tmp2 As String
    Dim i As Integer
    Dim iTask As Long, ret As Long, pHandle As Long
  
 
 i = 0
 While i < listclip.ListCount
    tmp2 = ""
    textfichier = listclip.List(i)
    pos = InStrRev(textfichier.Text, ".")
    extension = Right(textfichier.Text, Len(textfichier.Text) - pos + 1)
    Debug.Print "extension :" & extension
    tmp1 = LireValeur(HKeyClassesRoot, extension, "")
    tmp2 = LireValeur(HKeyClassesRoot, tmp1 & "\shell\open\command", "")

    tmp2 = Replace(tmp2, "%SystemRoot%", WinDirectory)
    tmp2 = Replace(tmp2, Chr(34) & "%1" & Chr(34), Chr(34) & textfichier.Text & Chr(34))
    tmp2 = Replace(tmp2, "%L", textfichier.Text)
   
    Debug.Print tmp1
    Debug.Print tmp2
    iTask = Shell(tmp2, vbNormalFocus)
   
    pHandle = OpenProcess(SYNCHRONIZE, False, iTask)
   
    ret = WaitForSingleObject(pHandle, INFINITE)
   
    ret = CloseHandle(pHandle)
   
    Ici j'aimerai que mon programme se ferme tout seul  
           
    i = i + 1
   
 Wend
 

  

End Sub





Public Function LireValeur(HK As HCle, Chemin As String, Valeur As String) As String
    Dim lng As Long
    Dim Buff As Long
   
    Buff = 0
    Buff = RegCreateKey(HKConvert(HK), Chemin, lng)
    If Buff = 0 Then RegQueryValueEx lng, Valeur, 0&, 1, 0&, Buff
    If Buff < 2 Then
        LireValeur = ""
        Exit Function
    End If
    LireValeur = String(Buff + 1, " ")
    RegQueryValueEx lng, Valeur, 0&, 1, ByVal LireValeur, Buff
    LireValeur = Left(LireValeur, Buff - 1)
End Function

Private Function HKConvert(ByVal HK As HCle) As Long
    If HK = 2 Then HKConvert = HKEY_CLASSES_ROOT
    If HK = 1 Then HKConvert = HKEY_CURRENT_USER
    If HK = 0 Then HKConvert = HKEY_LOCAL_MACHINE
    If HK = 3 Then HKConvert = HKEY_USERS
    If HK = 4 Then HKConvert = HKEY_DYN_DATA
End Function

Si quelqun a une idée ca serait simpa
lundi 21 février 2005 à 13:34:45 | Re : Fermer un programme (shell)

ShareVB

salut,

il faut ouvrir le handle de processus avec le droit PROCESS_TERMINATE en plus et utiliser TerminateProcess avec le handle et le code d'exit renvoyé par GetExitCodeProcess...

le prb c'est que c'est pas très propre comme fermeture...

sinon tu as la solution d'envoyer le message WM_QUIT avec l'api PostMessage pour le handle de la fenêtre principale du processus (FindWindow...)

ShareVB
samedi 26 février 2005 à 17:30:58 | Re : Fermer un programme (shell)

ShareVB

salut,

donc :
tu rajoutes dans la zone de déclaration :
Private Const PROCESS_TERMINATE As Long = (&H1)
Private Declare Function TerminateProcess Lib "kernel32.dll" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

et ca à la place de ton même code :

   pHandle = OpenProcess(SYNCHRONIZE Or PROCESS_TERMINATE, False, iTask)
    ret = WaitForSingleObject(pHandle, INFINITE)
    TerminateProcess(pHandle,0)
    ret = CloseHandle(pHandle)

ShareVB


Cette discussion est classée dans : long, function, private, hkey, tmp2


Répondre à ce message

Sujets en rapport avec ce message

voivi un script pour désactiver le bouton fermer d'access [ par antipateik ] j'ai récupéré ce script sur le super site de http://access.seneque.free.fr/Mon pb c'est que j'y pige pas grand chose set que j'aimerai savoir comment quelqun peut maider pour faire marcher ce code [ par wcwmans ] ccest un code pour empecher que les fenetre contennat dans leur titre le mots sex ne souvre pas. Il est composé d'un timer d'une form et d'un module.m EnumWindow... [ par Franck67 ] Bonjour,J'aimerai pouvoir récupérer uniquement le Handle des fenêtres affichées sur le bureau de Windows pour pouvoir faire un traitement dessus !!!J' texte veticalement mais ! [ par hindhinf ] j'ai essayer le code suivant pour ecrire un texte verticalement :Private Declare Function GetDeviceCaps Lib "GDI32" (ByVal hdc As Long, ByVal nIndex A case system [ par JLB59 ] Bonjour,Par des API et grâce à NIX,Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As LongPrivate Decl Prob dans le listage des fentres actives [ par CCJ ] Voila le code :Private Declare Function GetWindowTextLength Lib "USER32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As LongPrivate Declare Func difficulté de conversion vb6 vers vb.net [ par Safireo ] Bonjour tlm !après de longues recherche, j'ai réussi à trouver un petit bout de code sensé me permettre de récupérer le nom de fichier que winamp lit conversion en .NET [ par Safireo ] slut tlm !je cherche à terminer la conversion de ce code en .net.j'arrive à éliminer les erreurs mais pas à faire fonctionner le logiciel qui doit me Problème avec les Threads et la fonction Creaobject [ par skirby ] Bonjour à tous, Voila, j'ai un gros problème avec les Thread sous VB 6. Plus précisément, c'est la fonction CreateObject dans la fonction de mon thre Pb redirection stdout dans VB d'un script SHELL ( via cygwin ) [ par elegardien ] Bonjour,J'ai mixé le code d'un lancement externe d'application via VB auquel j'ia ajouté une redirection de la sortie standar du lancement externe ver


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,700 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales