Fermer Proprement une Application

Résolu
Baguauda Messages postés 219 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 28 novembre 2008 - 3 sept. 2007 à 18:01
melastis2 Messages postés 1 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 27 mai 2010 - 27 mai 2010 à 16:33
Bonjour,

J'ai fais une application pour pocket PC, et pour le moment tout ce passe bien.
Sauf que le client "exige" que le pilotage du scanner soit fait par
un petit logiciel fourni avec le PDA. Bon jusque là tant mieux c'est ca de
moins à faire.

Ce petit logiciel tourne en font et lorsque l'on scan un code à barres il écrit
la valeur dans zone de texte de la forme active.

Ce logiciel utilise un port - COM6.

La où cela ce complique c'est que je dois faire tournée un modem, qui lui aussi
fonctionne sur le même port. D'après le service technique du fournisseur on ne
peut pas faire fonctionner l'un ou l'autre sur un autre port.


Donc j'ai commencé à chercher comment je pourrais faire.

1) Lister les ports et vérifié la propriété IsOpen - False pour tout mes port.

2) Ouvrir le port COM6 - ou le fermer- ce qui me donne Erreur et rien.

3) Instancié le port COM6 - et fermer mon application - Le logiciel de scan ne
fonctionne plus et je ne peux plus rien faire de mon port.

4) Killer le process - On ne peut plus rien obtenir du port ya plus qu'a faire
un reset.


Je m'en remets à vous si quelqu'un a une idée pour stopper l'application gentiment,
pour qu'elle libère le port d'elle même.

Ou bien une instruction qui me ferait, tel un phœnix, revivre mon Port.

Ou encore  un technique genre  envoyer une instruction a mon
port  (02H......03H)



Merci
Baguauda

2 réponses

Baguauda Messages postés 219 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 28 novembre 2008 1
6 sept. 2007 à 11:45
[
DllImport
(
"coredll.dll"
, EntryPoint =
"FindWindow"
,
SetLastError =
true
)]





       

public


static


extern


IntPtr
FindWindow(
string
lpClassName,
string
lpWindowName);






 

IntPtr
handle = FindWindow(
null
,
"ScanEmul"
);//Nom de  la form  il  y  a certainement mieux








 








internal


const


UInt32
WM_CLOSE = 0x10;








[
DllImport
(
"coredll.dll"
,
EntryPoint =
"PostMessage"
)]





       

public


static


extern


Boolean
PostMessage(
IntPtr
hWnd,
UInt32
Msg,
int
wParam,
int
lParam);





PostMessage(proc.Handle,WM_CLOSE, 0,
0);
3
melastis2 Messages postés 1 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 27 mai 2010
27 mai 2010 à 16:33
Bonjour,
Je sais que ce message date un peu... lol
J'ai le même souci que vous, je cherche à fermer correctement le ScanEmul.exe. Avez-vous une solution? Développez-vous en windev?
Mon problème est que je n'arrive pas à récupérer le handle du ScanEmul.
Cordialement.
Mélanie
0
Rejoignez-nous