évènement ds VB 5.0 décleché depuis une autre appilcation (ou un script)

Résolu
Alain95350 Messages postés 16 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 5 juin 2008 - 13 mai 2008 à 11:44
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 4 juin 2008 à 04:08
bonjour et merci de ce partage sur ce site...

je développe à titre perso une appli qui assure la maintenance quotidienne de mon PC.
ça regarde le niveau de charge UC et si y a un creux, ça lance les tâche de maintenance du jour.

je n ai que Word 2002 avec VB intégré 6.3.

alors j ai réussi à avoir VB 5.0 (l AGL) ce qui m a permis de développé l application côté windows qui permet de montrer les taches effectuées, éventuellement de les arrtéter etc

et un script qui assure en boucle, une recherche de période de calem pour mon ordi et qui lance les taches les unes aprés les autres.

je ne peux pas bloquer la partie application visuelle windows par l attente de la fin d une tache de maintenance longue,

quel moyen ai je pour déclencher un évènement dans l appli VB 5.0 à partir d un script ?
( ou d une autre appli VB 5.0 si vraiment il le faut, je mettrai mon script sous forme de fausse appli windows cachée)

autre pb,
avec mon VB intégré Office (word) je sais recevoir un évènement quand Word ouvre/ferme un .doc,
grâce à set X.App= word.application et withevents etc)
par contre dans mon agl vb 5.0, aprés de longs essais mon appli elle ne reçoit pas ces évènements ... pkoi ?   sais pas...

comment que je déclenche un évènement dans une appli Fom-windows  vb 5.0 par une application externe ?
qq1 ki lala bonidée ?              

12 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 mai 2008 à 12:12
SendMessage, Winsock, GetObject (+Appels COM) ...
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 mai 2008 à 12:29
GetObject me semble le plus appprié a ton environnement VBS/VB5
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 mai 2008 à 05:52
pour compiler un exe, faire comme expliqué dans l'article...
http://ebartcodes.info/articles/vb5cce/

pour l'option qui est grisée, fais bouton droit dans le fond de la barre d'outil, et cliques sur Personnaliser > retablir
3
Alain95350 Messages postés 16 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 5 juin 2008
16 mai 2008 à 11:07
merci RenField... je vais voir ça! 

pour le sendmessage, j avais deja la solution , sans le savoir

j avais telecharge un truc de vrai Oufff !

juste un ti toutil au depart qui attache une tache à un script (pour que le script soit juste visible dans la barre de taches)
pas génial car y a pas de menu contextuel pour arréter le script et la fenetre minimal , juste un bout la barre de titre, ne se reduit pas dans la barre de tache,,,,
tu clic un fois, elle s ouvre et ..... bingo, elle te colle pour la vie...   lol

mais il est super car ....
il permet d utiliser les Dll à volonté .... là c grandiose !

si qq1 a besoin, voici mon script pour communiquer avec une appli VB 5.0 :

Set oWrap = CreateObject("DynamicWrapper") 'instancie l'objet API
'oWrap.Register "USER32.DLL","FindWindowA","i=ss","f=s","r=h" 'handle de la fenêtre du script
'hWnd=oWrap.FindWindowA("","- Maintenance ")
''' j ai pas utiliser la fonction trouver le handle de fentre, je l ai passé dans une variable dans le registre (me.hwnd)hwnd 0 : On Error Resume Next : hwnd WshShell.RegRead(UCleMaint & "Hwnd") : On Error GoTo 0
''' pas utiliser   : oWrap.Register "USER32.DLL","SetWindowTextA","i=hs","f=s","r=l" 'ajout d'un titre
'oWrap.SetWindowTextA hWnd, left(Time, 5) & " - Maintenance"    ''' bug : ne pas mettre de variable pour le titre de la fenetre !!!


''' mais ici good, good !!!         
oWrap.Register "USER32.DLL","PostMessageA","i=huuu","f=s","r=l"
''' okkk / oWrap.PostMessageA hwnd,16,1,1  ' 16 : déclenche l évènement : fermeture de l application
oWrap.PostMessageA hwnd,256,vbKeyE,vbnull  ' 256 : déclenche l évènement : Form_KeyDown


    ''' bug : ne pas mettre de variable pour le titre de la fenetre !!!
'oWrap.Register "USER32.DLL","ShowWindow","i=hu","f=s","r=l"    'visible dans la barrre des tâches
'oWrap.ShowWindow hWnd,6

ce logiciel est telechargable et s appelle : dynawrapnt.zip

 -- - - - - -

on frappe a la porte
je reviens pour la suite...
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain95350 Messages postés 16 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 5 juin 2008
16 mai 2008 à 12:19
http://freenet-homepage.de/gborn/WSHBazaar/WSHDynaCall.htm

pour telecharger ce DynamicWrapper...

il faut enregistrer la Dll de DynamicWrapper dans le registre par la commende, c est indiqué dans la notice d installation.

bonn' prog ' à vous. 
3
Alain95350 Messages postés 16 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 5 juin 2008
16 mai 2008 à 12:23
sinon j ai la même page pour le telechargement,
 mais en Ukrainien sympathique,  
(si qq1 en a vraiment marre de la vie...)

-->        http://www.script-coding.info/
3
Alain95350 Messages postés 16 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 5 juin 2008
3 juin 2008 à 18:35
merci Renfeld mais ma version VB 5.0 est plombée, je ne peux pas produire d EXE et les classes ont comme propriété de ne pas etre visibles ou créatives de l extérieur !!! lol

Je me suis essayé à VB 2008 mais trop de plantage-bugs sans commentaires pour situer la faille.
je suis revenu à VB 2005, là ... des commentaires lol

- - -
merci à ceux qui partagent... j ai vu de beaux scripts batch,,,  >> http://www.hotline-pc.org/batch.htm

je m en suis inspiré pour écrire un script qui gère le changement de l image de fond d'écran windows..

(c est mieux que les 20 mégas en mémoire par Visual basic 2005 lol) 

là on peut encore améliorer en langage compilé je pense... mais en batch ça fait 1.5 méga en mémoire plus le petit appel de la conversion image tés rapide.

(ImageMagick-6.4.1-Q16)

j utilise cette petite application pour la conversion d image (qu il faut installer-enregistrer,, je n ai pas essayé de l utiliser sans installation),

et je met un petit sleep,  .exe téléchargeable partout... pour passer l' temps!

   

voilà le script :  (.BAT)

set /a PauseS=30
set RepImg="D:\Mes images\Pour fond d ecran"

set RepTrav="H:\Projet\WallPaper\-BAT\ImgWallpaper"
set uBmp="bmp"

@echo off
call "C:\WINDOWS\System32\WScript.exe " "H:\Systeme\Outils\Windows\Fixer Priorite Process apres Startup .vbs"
::del CmdDernieresImages.bat
::   liste des fichiers du repertoire et de ses sous-repertoires
dir /s /b /a:-d %RepImg%\*.*  > ListFicImg.txt
set compteurA=-1
for /f %%a in (ListFicImg.txt) do set /a CompteurA+=1 
:boucle
::   choix aleatoire d une image  (et réinitialise la variable à non définie)
set "FicSrc="
set /a nombre=%random%%%%CompteurA%
for /f "skip=%nombre% delims=" %%a in (ListFicImg.txt) do (if not defined FicSrc set FicSrc=%%a)
echo rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen %FicSrc% > CmdDernieresImages.bat
::   Commande adressée à Windows pour le backGround Wallpaper (format converti en bmp si besoin)
del %RepTrav%*.%uBmp%
call "H:\Program Files\ImageMagick-6.4.1-Q16\convert.exe" "%FicSrc%" %RepTrav%.%uBmp%
REG ADD "HKCU\Control Panel\Desktop" /V Wallpaper /T REG_SZ /F /D "%RepTrav%.%uBmp%" > %temp%\temp.txt
REG ADD "HKCU\Control Panel\Desktop" /V WallpaperStyle /T REG_SZ /F /D 1 > %temp%\temp.txt
REG ADD "HKCU\Control Panel\Desktop" /V TileWallpaper /T REG_SZ /F /D 1 > %temp%\temp.txt
%SystemRoot%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters
call "H:\Systeme\Installateur\sleep.exe" %PauseS%
goto :boucle

- - -

Cordialement,

merci du partage qui enrichit,,,,,  
"""le partage est l avenir de l hooOOMeux !!!"""   

pourquoi tant de N (looool) ... pourquoi VB est il si gros pour des appli petites ?
même en supprimmant les références à des Librairies inutiles, on a de gros programmes pour parfois une petite application...
(essayez avec juste une appli qui fait msgbox ... ,,  ou même a = 1 + 0 ,
  .... l appli fait 2 mégas en mémoire je pense !!!  )

Y a t il d autres moyens de diminuer la taille de l exe ?

sinon c est cool de mettre VB 2005 / 2008 à disposition...
y a t il une documentation type manuel de référence sur le Net pour la programmation par les API Windows accessibles (Dll, etc) ? .Net frameWork 2.x et 3.x ?

merci RenFeld, à bientôt 
salutations...
3
Alain95350 Messages postés 16 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 5 juin 2008
13 mai 2008 à 12:25
merci Renfield,
m en va me rencarder avec ces gens là (SendMessage, Winsock, GetObject (+Appels COM) ...  lol

j en profite pour petite précison ...
"""VB 5.0 (l AGL) ce qui m a permis de développé l application côté windows""" cad icone dans le systray (à côté de l horloge), menu click droit sur cette icone et ballons (messages impromptus) pour avertir du lancement d une tache),,, je savais pas faire avec mon VB (dit 6.0) intégré Office.  (à ne pas confondre avec l agl visual basic 6.0,... wouarf! sont fous ces romains ! lol)
0
Alain95350 Messages postés 16 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 5 juin 2008
15 mai 2008 à 22:59
merci le SendMessage fait bien l affaire.   

ma version de VB 5.0 est une version gratuite, (du site http://ebartcodes.info/articles/vb5cce/
à priori je ne semble pas avoir le droit de créer un .exe ou .obj, l option make est touours grisée inaccessible... 
est ce normal ? version bridée ou y a t il un moyen de créer un .exe par un autre moyen.  
 

si je suis bridé pour créer un exe, est il possible de lancer un projet .vbp en mode éxécution sans passer par la fenetre de l agl ?

d'autre part, comment créer une Dll pour appeler une Api depuis un script VB ? si la fonction Dll Api (ou un projet vb.EXE) retourne une valeur quelle instruction script utilise t on pour la lancer ?

---

subsidiaire...   , existe t il un outil pour lister les points d entrée de Dll ?

merci.. !!
0
Alain95350 Messages postés 16 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 5 juin 2008
22 mai 2008 à 16:30
"""pour compiler un exe, faire comme expliqué dans l'article...
http://ebartcodes.info/articles/vb5cce/ """
- - -
j'ai mis son Link.exe en route et j ai pu créer un OCX (projet et make --> .ocx);
je l ai mis dans les références d une nouvelle application et par l explorateur d objets, je vois sa classe (class1) avec sa méthode sub1 et son Usercontrol;
dans cette application, j ai  déclaré l OCX par
Declare Function main Lib _
  "C:\.....path...\Project1.ocx" ()

mais je ne sais pas comment le lancer cet Ocx, lui faire cracher le morceau..
même pas un p'ti msgbox qui s affiche !!!


c'est quoi un point d entrée ??  lol
comment on le fait bosser ce p'ti t ocx ?!!! 
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mai 2008 à 07:43
Dim a as Class1
Set a = new Class1
a._ _ _
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 juin 2008 à 04:08
tout ce qui touche a la programmation Microsoft est documenté sur le site web MSDN
0
Rejoignez-nous