Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Findexecutable API gets a strange entry

5 réponses
Avatar
jean.paulo
I am trying to launch a mp3 player through the 'findexecutable' then 'shell'
function,
which should let me use wathever is currently default for mp3.

The shellexecute function will do it, but will not return the process ID
that I need
to kill it later.

Findexecutable returns really mplayer2.exe, but it it 'packed' into garbage,
like
"%49301%\mplayer2.exe" /Play "%L"

Is there any way to get the right path ?

En français, la fonction findexecutable retourne le bon fichier, mais le
chemin
est tordu. J'en ai besoin pour connaître le numéro du process crée, que
shellexecute ne donne pas,
et shell a besoin d'un programme, pas du programme par defaut...

Que faire ?

--
Jean.paulo.bidon@free.fr
Remove "bidon" to answer by mail

5 réponses

Avatar
François Picalausa
Bonjour/soir,

Je te conseille d'utiliser ShellExecuteEx qui prendra en entrée le nom du
mp3 et dont le hProcess te permettra de retrouver la fenêtre à laquelle
envoyer WM_CLOSE pour quitter le programme...

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"jean.paulo" a écrit dans le message de
news:
"%49301%mplayer2.exe" /Play "%L"

En français, la fonction findexecutable retourne le bon fichier, mais
le chemin
est tordu. J'en ai besoin pour connaître le numéro du process crée,
que shellexecute ne donne pas,
et shell a besoin d'un programme, pas du programme par defaut...


Avatar
jean.paulo
Merci, je vais essayer. Je ne pensais pas qu'il y ait une difference entre
la fonction
shellexecute et shellexecuteEx.

Question subsidiaire : La mp3 lance Mediaplayer, qui a un numéro de process
NEGATIF
(ceci est confirmé par taskinfo). Est-ce la raison pour laquelle WM_CLOSE
ne semble pas fonctionner ? Le numéro de process est le bon, cela fonctionne
avec
la calculatrice dans l'exemple, mais Mediaplayer ne s'arrête pas !
(en changeant l'entrée bizarre par le vrai chemin de mediaplyer, bien sur!)

--

Remove "bidon" to answer by mail

"François Picalausa" a écrit dans le message de
news:
Bonjour/soir,

Je te conseille d'utiliser ShellExecuteEx qui prendra en entrée le nom du
mp3 et dont le hProcess te permettra de retrouver la fenêtre à laquelle
envoyer WM_CLOSE pour quitter le programme...

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"jean.paulo" a écrit dans le message de
news:
> "%49301%mplayer2.exe" /Play "%L"
>
> En français, la fonction findexecutable retourne le bon fichier, mais
> le chemin
> est tordu. J'en ai besoin pour connaître le numéro du process crée,
> que shellexecute ne donne pas,
> et shell a besoin d'un programme, pas du programme par defaut...




Avatar
François Picalausa
Bonjour/soir,


Il ne faut pas envoyer le WM_CLOSE au PId mais à la fenêtre principale de ce
PId.
Si on obtient pas la réponse à ce message (état de fermeture de
l'application), on peut envisager un terminate process, avec l'accord de
l'utilisateur (des ressources pourraient ne pas être libérées,...)
Pour voir comment faire tout celà:
Kill an App Gently
http://msdn.microsoft.com/library/en-us/dnvsm01/html/dt0109.asp

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"jean.paulo" a écrit dans le message de
news:
Merci, je vais essayer. Je ne pensais pas qu'il y ait une difference
entre la fonction
shellexecute et shellexecuteEx.

Question subsidiaire : La mp3 lance Mediaplayer, qui a un numéro de
process NEGATIF
(ceci est confirmé par taskinfo). Est-ce la raison pour laquelle
WM_CLOSE ne semble pas fonctionner ? Le numéro de process est le bon,
cela fonctionne avec
la calculatrice dans l'exemple, mais Mediaplayer ne s'arrête pas !
(en changeant l'entrée bizarre par le vrai chemin de mediaplyer, bien
sur!)


"François Picalausa" a écrit dans le message de
news:
Bonjour/soir,

Je te conseille d'utiliser ShellExecuteEx qui prendra en entrée le
nom du mp3 et dont le hProcess te permettra de retrouver la fenêtre
à laquelle envoyer WM_CLOSE pour quitter le programme...

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"jean.paulo" a écrit dans le message de
news:
"%49301%mplayer2.exe" /Play "%L"

En français, la fonction findexecutable retourne le bon fichier,
mais le chemin
est tordu. J'en ai besoin pour connaître le numéro du process crée,
que shellexecute ne donne pas,
et shell a besoin d'un programme, pas du programme par defaut...






Avatar
jean.paulo
Oooh....
Bizarre que ça marche dans l'exemple MSDN avec la calculatrice...

Enfin, bon, je vais fouiller dans les exemples proposés, et je devrais y
trouver
mon bonheur.

Merci beaucoup.

--

Remove "bidon" to answer by mail

"François Picalausa" a écrit dans le message de
news:
Bonjour/soir,


Il ne faut pas envoyer le WM_CLOSE au PId mais à la fenêtre principale de


ce
PId.
Si on obtient pas la réponse à ce message (état de fermeture de
l'application), on peut envisager un terminate process, avec l'accord de
l'utilisateur (des ressources pourraient ne pas être libérées,...)
Pour voir comment faire tout celà:
Kill an App Gently
http://msdn.microsoft.com/library/en-us/dnvsm01/html/dt0109.asp

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"jean.paulo" a écrit dans le message de
news:
>>> "%49301%mplayer2.exe" /Play "%L"
>>>
>>> En français, la fonction findexecutable retourne le bon fichier,
>>> mais le chemin
>>> est tordu. J'en ai besoin pour connaître le numéro du process crée,
>>> que shellexecute ne donne pas,
>>> et shell a besoin d'un programme, pas du programme par defaut...




Avatar
jean.paulo
Désolé, je suis idiot... Le test avec calculatrice utilisait la recherche
d'une fenêtre
par son titre. J'ai trouvé sur vos références un outil pour chercher dans la
liste
une partie du titre. Ca devrait faire l'affaire.

--

Remove "bidon" to answer by mail

"François Picalausa" a écrit dans le message de
news:
Bonjour/soir,


Il ne faut pas envoyer le WM_CLOSE au PId mais à la fenêtre principale de


ce
PId.
Si on obtient pas la réponse à ce message (état de fermeture de
l'application), on peut envisager un terminate process, avec l'accord de
l'utilisateur (des ressources pourraient ne pas être libérées,...)
Pour voir comment faire tout celà:
Kill an App Gently
http://msdn.microsoft.com/library/en-us/dnvsm01/html/dt0109.asp

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"jean.paulo" a écrit dans le message de
news:
> Merci, je vais essayer. Je ne pensais pas qu'il y ait une difference
> entre la fonction
> shellexecute et shellexecuteEx.
>
> Question subsidiaire : La mp3 lance Mediaplayer, qui a un numéro de
> process NEGATIF
> (ceci est confirmé par taskinfo). Est-ce la raison pour laquelle
> WM_CLOSE ne semble pas fonctionner ? Le numéro de process est le bon,
> cela fonctionne avec
> la calculatrice dans l'exemple, mais Mediaplayer ne s'arrête pas !
> (en changeant l'entrée bizarre par le vrai chemin de mediaplyer, bien
> sur!)
>
>
> "François Picalausa" a écrit dans le message de
> news:
>> Bonjour/soir,
>>
>> Je te conseille d'utiliser ShellExecuteEx qui prendra en entrée le
>> nom du mp3 et dont le hProcess te permettra de retrouver la fenêtre
>> à laquelle envoyer WM_CLOSE pour quitter le programme...
>>
>> --
>> François Picalausa (MVP VB)
>> FAQ VB : http://faq.vb.free.fr
>> MSDN : http://msdn.microsoft.com
>>
>>
>> "jean.paulo" a écrit dans le message de
>> news:
>>> "%49301%mplayer2.exe" /Play "%L"
>>>
>>> En français, la fonction findexecutable retourne le bon fichier,
>>> mais le chemin
>>> est tordu. J'en ai besoin pour connaître le numéro du process crée,
>>> que shellexecute ne donne pas,
>>> et shell a besoin d'un programme, pas du programme par defaut...