begin process at 2010 03 19 21:41:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

General

 > 

Comment faire pour avoir une instance unique


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

Comment faire pour avoir une instance unique

jeudi 26 octobre 2006 à 18:07:10 | Comment faire pour avoir une instance unique

frederios

Comment faire pour avoir une instance unique de mon programe et capturer le command line(Command$)  sur l'instance qui vient d'etre executer

donc en bref

j'execute mon programe du commande line une premiere fois ex

c:\programe.exe /f:allo

et je le reexecute

c:\programe.exe /f:bon 2iem fois

alors la je veux que ca block une 2iem execution et recuperer le"/f:bon 2iem fois"

je sais pas si vous comprenez?

Merci a l'avance...
jeudi 26 octobre 2006 à 18:12:36 | Re : Comment faire pour avoir une instance unique

FPatrick

Réponse acceptée !
Bonjour,

Pour la première partie, il existe en vb6 app.previnstance qui te dira s'il existe déjà une instance de ton application (attention a tester en mode compilation seulement).

Pour la deuxième partie, tu peux par exemple une liaison dde entre tes applications mais je pense qu'il y a beaucoup mieux que cela.

Bonne journée.
jeudi 26 octobre 2006 à 18:16:48 | Re : Comment faire pour avoir une instance unique

frederios

Merci pour la premiere partie du probleme effectivement j'avais jamais remarquer mais oui il y a un app.previnstance.
merci

quelquun a une idee de comment faire passer le command$ d'un instance  a l'autre?
jeudi 26 octobre 2006 à 18:17:57 | Re : Comment faire pour avoir une instance unique

mortalino

Membre Club


Salut,

utilise cette fonction de Renfield (que tu peux retrouver ICI) :

Public Function IsAlreadyRunning() As Boolean
  Dim hMap As Long
  Dim pMem As Long
  Dim hPid As Long
       '# Nous tentons ici d'acceder au mappage (précedemment créé ?)
       hMap = OpenFileMapping(FILE_MAP_READ, 0, App.Title)
       If hMap <> 0 Then
           '# L'application est déjà lancée.
           pMem = MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0)
           If pMem <> 0 Then
               '# On récupère le handle vers la précédente fenêtre
               CopyMemory hPid, ByVal pMem, 4
               If hPid Then
                   On Error Resume Next
                   '# On active l'instance précedente
                   AppActivate hPid
                   On Error GoTo 0
               End If
               UnmapViewOfFile pMem
           End If
           '# On libère le handle hmap
           CloseHandle hMap
           '# et on prévient l'appelant que l'application avait dejà été lancée.
           IsAlreadyRunning = True
       Else
           '# Nous sommes dans la première instance de l'application.
           '# Nous allons laisser une marque en mémoire, pour l'indiquer
           hMap = CreateFileMapping(INVALID_HANDLE_VALUE, ByVal 0&, PAGE_READWRITE, 0, 4, App.Title)
           If hMap <> 0 Then
               '# On ouvre le 'fichier' en écriture
               pMem = MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0)
               If pMem <> 0 Then
                   '# On y écrit le process courant
                   CopyMemory ByVal pMem, GetCurrentProcessId(), 4
                   UnmapViewOfFile pMem
               End If
               '# Pas de CloseHandle hMap ici, sous peine de détruire le mappage lui-même...
           End If
       End If
   End Function

' Remarque :
' L'avantage par rapport a l'instruction App.PrevInstance de VB, ' c'est qu'ici, l'éventuelle première instance sera réactivée.

--Mortalino-- Colorisation automatique

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
jeudi 26 octobre 2006 à 18:34:16 | Re : Comment faire pour avoir une instance unique

frederios

est-ce qu'il manque des declaration pour que ca marche parce que moi ca me dit
sub or function not define sur OpenFileMapping

tout de meme merci pour la function
jeudi 26 octobre 2006 à 18:46:42 | Re : Comment faire pour avoir une instance unique

mortalino

Membre Club


En IDE, c'est normal, il faut le tester en compiler.
C'est le but, d'ailleurs^^

Regarde aussi sa source, ce sera certainement plus parlant, tu pourras faire ainsi des test :
http://www.vbfrance.com/codes/INSTANCE-UNIQUE-VOTRE-APPLICATION_39361.aspx

C'est l'idéal, confère sa remarque dans sa fonction.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
dimanche 29 octobre 2006 à 22:15:16 | Re : Comment faire pour avoir une instance unique

Renfield

Administrateur CodeS-SourceS

Pour la seconde partie de la question, concernant le passage des paramètres...

il faut établir une communication entre les deux instances,
envoyer les parametres de l'instance 2 a l'instance 1
activer l'instance 1
fermer l'instance 2

Renfield
Admin CodeS-SourceS- MVP Visual Basic
dimanche 29 octobre 2006 à 22:17:55 | Re : Comment faire pour avoir une instance unique

frederios

oui je vais faire passer ca par le registre cest tout
dimanche 29 octobre 2006 à 22:25:22 | Re : Comment faire pour avoir une instance unique

Renfield

Administrateur CodeS-SourceS

par le registre.....
admettons...

mais faut que tu puisse prévenir ton instance 1 qu'elle doit effectuer une action ...
quelle doit réagir, aux paramètres recus (et ecris dans le registre) par l'instance 2

Renfield
Admin CodeS-SourceS- MVP Visual Basic
dimanche 29 octobre 2006 à 22:27:26 | Re : Comment faire pour avoir une instance unique

frederios

Parfais

je m'astine plus mais je trouve tout dememe que j'ai autant raison que toi alors continue


Cette discussion est classée dans : instance, programe, command, unique, 2iem


Répondre à ce message

Sujets en rapport avec ce message

Instance unique d'un exe [ par eldim ] Bonjour,Comment faire pour développé un exe en VB.NET qui ne se lance qu'une seule fois par session (et non par PC) : si je le lance deux fois dans le evenement et instance unique [ par zelze ] Bonjour,Voila mon problème:J'ai fait un programme a instance unique et j'aimerai j'aimerai récupérer les arguments des lignes de commandes qui vers ce Associer mon programme à une extension ? [ par dede1919 ] Bonjour!Voilà je désire faire démarrer les .mp3 avec mon application. Après quelque recherche, j'ai trouvé que en ajoutant deux clés dans la base de r Demande d'aide [ par dmic ] Bonjour, j'ai un petit probleme avec cette fonction. Private Sub Button1_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B erreur dans mon programe [ par rsx602 ] Bonjours je conais un peut le v.b 6.0 mais pas plus qui faut. j'ai trouvé une source qui permet de crypter un fichier, donc de rende un fichier indéte Executer son programe au démarrage de windows [ par kooker ] BonjourJe veux que mon logiciel que j'ai conçu sous visual basic 2005 express puisse se lancer au démarrage de WINDOWS.je ne sais pas comment faire ce DataReceived l'interuption ne fonctionne pas: Besoin d'aide [ par Aselophe ] Bonjour a tousJ'ai un petit probleme avec la fonction DataReceived. Interuption a la reception d'un byte ne fonctionne pas.J'ai pourtant cherché sur p tableau d'instance dynamique [ par jee0404 ] Bonjour       J'ai un problème , je ne sais pas comment créé un tableau d'instance dynamique parce que je veux creer une liste d'instance , mais je Cmd Command checkbox ! =En lien avec Texbox= [ par leonardo14 ] Bonjour jaimerais savoir comment on fait pour que lorsque que je valide un checkbox scelui si ecrit dans le textbox...Je donne un exemple...Lorsque je Gestion des instances d'Excel en VB6 [ par Wanours ] Bonjour à tous,A partir d'une dll VB6 chargée dans une application extérieure, je viens :    - Ouvrir Excel en mode "caché" (nouvelle instance, create


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

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 : 0,905 sec (3)

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