Shell - sendkeys - Appactivate

Signaler
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017
-
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017
-
Bonjour,

Je souhaiterais à partir d'un projet appeler Outlook Express ou Winmail ou ..., et lancer un sendkeys pour, dans le cas d'Outlook Express créer un nouveau mail. J'ai cherché en vain
mais je n'ai rien trouvé.

Exemple de ce que je souhaiterais faire:
CodRet = Shell("C:\Program Files\Outlook Express\msimn.exe", vbNormalFocus)
AppActivate CodRet '<-- ?......Il y en à qui dise de donner le nom du projet ?
Call Pause(3) '<-- J'ai fais une pause de 3 secondes pour les essais
SendKeys "^N" '<-- Afficher la page "Créer" (ctrl + N)


On trouve beaucoup d'exemples avec BlocNote ou avec la calculatrice mais aucun ne fonctionne pour ce que je souhaiterais faire.

Je pense que le problème se situe au niveau de l'appactivate qui ne fonctionne que pour les logiciels Windows. Beaucoup de questions identiques dans les forums.

Impossible dans mon cas,de donner le focus à l'application appelée avant de lancer le sendKeys


Alors, si vous avez un exemple concret....

Par avance Merci.

14 réponses

Messages postés
14739
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
30 novembre 2020
148
Bonjour,

Si tu as besoin de Outlook, normalement, tu peux directement l'automatiser via COM, voir les sujets sur le net.

Après, pour activer une fenêtre, voir peut être ces liens :
http://www.vb6.us/tutorials/activate-window-api
http://www.freevbcode.com/ShowCode.asp?ID=526

---------------------------------------------------------------------
[list][*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu, pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
Bonjour

Si Outlook express ou winmail sont respectivement les gestionnaires de messagerie par défaut sous WinXp et Win7 (ou vista).

Je me demande si le besoin, n'est pas simplement de créer un mail soit un objet "nouveau message" type "MAPI" . donc le problème des sendkeys tombe à l'eau
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Bonjour,

J'ai écrit un projet qui génère une signature Html avec image et texte. l'outil présente pour
sa construction le fichier html dans un composant WebBrowser.

Pour l'utilisateur, je souhaiterais lui ouvrir Outlook (Pas de Problème) et lui présenter
sa signature. Pour cela, je dois lui créer un mail Vide en simulant un click sur le bouton "Créer". C'est la qu'intervient le SendKeys.

De plus, je souhaiterais faire marcher ce Sendkeys.

Alors, si vous pouviez me corriger le morceau de source qui figure dans ma question, ce serait
bien pour moi et pour ceux qui ont essayé d'utiliser cette commande.

Merci à vous deux.

Par avance Merci.
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
Bonjour

Ce que je voulais dire c est que je ne suis pas sur que la correction du code soit possible

SendKeys ne fonctionne pas avec tous les programmes et perso j evite
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Re,

Je suis certain que Sendkeys fonctionne avec tous les programmes.
Le problème se situe au niveau de l'AppActivate qui ne fonctionne que sur des logiciels Windows. (Si j'ai bien compris ? ).
Les exemples que j'ai vu fonctionne correctement avec BlocNote, Calculatrice.... Exemples qui utilisent AppActivate et Sendkeys.

Si mon code ne marche pas cela vient de l'AppActivate qui ne donne pas le focus à Outlook express.


A+
Messages postés
14739
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
30 novembre 2020
148
Bonjour,

Les liens que j'ai donnés précédemment ne t'ont pas aidés ?
Je t'en rajoute 1 :
http://www.xtremevbtalk.com/archive/index.php/t-185385.html

---------------------------------------------------------------------
[list][*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu, pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Bonjour,

J'ai consulté le site que tu m'as donné et refais des essais. L'exemple qui est donné concerne
encore un Programme Windows Notepad.

Je vois que tu passes beaucoup de temps pour essayer de me dépanner. C'est très gentil de ta part.

Si tu as du temps de libre, tu peux toujours essayer de corriger ces quelques lignes ?
en ce qui me concerne, j'abandonne, mais si tu trouves, je referais des essais.

CodRet = Shell("C:\Program Files\Outlook Express\msimn.exe", vbNormalFocus)
AppActivate CodRet '<-- ?......Il y en à qui dise de donner le nom du projet ?
Call Pause(3) '<-- J'ai fais une pause de 3 secondes pour les essais
SendKeys "^N" '<-- Afficher la page "Créer" (ctrl + N)


Encore merci pour ton support.


Ps. Le shell affiche Outlook au premier Plan et après les 3 secondes d'attente, le Sendkeys
redonne le Focus au projet et Outlook repasse en second Plan. Toujours un problème de Focus.

Merci encore.
Messages postés
14739
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
30 novembre 2020
148
Bonjour,

Question bête, et en faisant une pause entre le Shell et le AppActivate ?

Sur cette page :
http://www.xtremevbtalk.com/archive/index.php/t-185385.html
As-tu testé la proposition de Ej12N du 08-25-2004, 05:49 PM ?

---------------------------------------------------------------------
[list][*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu, pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Re,

Je l'ai certainement fais !. Le problème c'est l'Appactivate ne semble marcher que pour des applications Windows ?....

A+
Messages postés
14739
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
30 novembre 2020
148
Bonjour,

Je ne te parles pas de AppActivate, mais de ce message :
for over 3 hours trying to get that working i end up with nothing thats works..

i cant find how that findwindow api and setforegroundwindow works..

can somebody help me with this ?
*useable example of some kind maby ???*

Thanx Daniel
:)
make a project...add this code
open notepad take the focus off
run program...
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Form_Load()
lHandle = FindWindow("Notepad", vbNullString)
'Set this window to the foreground
lHandle = SetForegroundWindow(lHandle)
End Sub


Explanation of FindWindow...
FindWindow(ClassName,Title Of App)
so this with notepad will work with notepad as classname or "untitled - notepad" which is default title notepad has when first opened... in your case i dont know if "NSVCAP" is the title or classname but prolly is title so instead of
lHandle = FindWindow("Notepad", vbNullString)
use
lHandle = FindWindow(vbNullString, "NSVCAP")

OR use Spy++ to get NSVCAP program classname and put it where i put notepad in example...
hope that helps and i havent confuse you :p


---------------------------------------------------------------------
[list][*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu, pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

J'ai fais également un essai avec SetForground.
Tu remarqueras, dans tous les essais qui sont présentés, il utilisent toujours la calculatrice ou Notepad et là, pas de problème ça marche.


Je constate à nouveau que tu essais de me rendre service. Je te remercie encore pour tes recherches.

En ce qui me concerne. J'abandonne.

Fais un essai avec les quelques lignes de code.

Merci encore
Messages postés
14739
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
30 novembre 2020
148
Bonjour,

Tu ne m'as toujours pas dit si tu faisait une pause juste après ton Shell ?

Car contrairement à Notepad ou Calc, WinWord, outlook, et autre mettent plus de temps à se charger.

---------------------------------------------------------------------
[list][*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu, pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---

Petite remarque toute bête :
lHandle = FindWindow("Texte exact de la barre de titre de la fenetre à chercher (respecter la casse)", vbNullString)
lHandle = SetForegroundWindow(lHandle)

Bonne soirée.
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Bonjour,

- Tu ne m'as toujours pas dit si tu faisait une pause juste après ton Shell ----> Réponse: Oui

- J'ai fais également un essai avec SetForground.

En ce qui me concerne, j'abandonne la recherche.

Merci encore pour votre aide.