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

Alain95350 16 Messages postés vendredi 3 novembre 2000Date d'inscription 5 juin 2008 Dernière intervention - 13 mai 2008 à 11:44 - Dernière réponse : Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention
- 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 ?              
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 13 mai 2008 à 12:12
3
Merci
SendMessage, Winsock, GetObject (+Appels COM) ...

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Renfield
Meilleure réponse
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 13 mai 2008 à 12:29
3
Merci
GetObject me semble le plus appprié a ton environnement VBS/VB5

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Renfield
Meilleure réponse
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 16 mai 2008 à 05:52
3
Merci
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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Renfield
Meilleure réponse
Alain95350 16 Messages postés vendredi 3 novembre 2000Date d'inscription 5 juin 2008 Dernière intervention - 16 mai 2008 à 11:07
3
Merci
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...

Merci Alain95350 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Alain95350
Meilleure réponse
Alain95350 16 Messages postés vendredi 3 novembre 2000Date d'inscription 5 juin 2008 Dernière intervention - 16 mai 2008 à 12:19
3
Merci
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. 

Merci Alain95350 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Alain95350
Meilleure réponse
Alain95350 16 Messages postés vendredi 3 novembre 2000Date d'inscription 5 juin 2008 Dernière intervention - 16 mai 2008 à 12:23
3
Merci
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/

Merci Alain95350 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Alain95350
Meilleure réponse
Alain95350 16 Messages postés vendredi 3 novembre 2000Date d'inscription 5 juin 2008 Dernière intervention - 3 juin 2008 à 18:35
3
Merci
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...

Merci Alain95350 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Alain95350
Alain95350 16 Messages postés vendredi 3 novembre 2000Date d'inscription 5 juin 2008 Dernière intervention - 13 mai 2008 à 12:25
0
Merci
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)
Commenter la réponse de Alain95350
Alain95350 16 Messages postés vendredi 3 novembre 2000Date d'inscription 5 juin 2008 Dernière intervention - 15 mai 2008 à 22:59
0
Merci
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.. !!
Commenter la réponse de Alain95350
Alain95350 16 Messages postés vendredi 3 novembre 2000Date d'inscription 5 juin 2008 Dernière intervention - 22 mai 2008 à 16:30
0
Merci
"""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 ?!!! 
Commenter la réponse de Alain95350
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 23 mai 2008 à 07:43
0
Merci
Dim a as Class1
Set a = new Class1
a._ _ _
Commenter la réponse de Renfield
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 4 juin 2008 à 04:08
0
Merci
tout ce qui touche a la programmation Microsoft est documenté sur le site web MSDN
Commenter la réponse de Renfield

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.