| Exécution de scripts VBS | |
|
|
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Exécution de scripts VBS Sam 19 Nov 2011 - 1:35 | |
| Dans ma distribution DLLdivers, j'ai ajouté une nouvvelle DLL: Wscript.dll. Elle contient une seule fonction: - Code:
-
resultat% = dll_call1("ExecuteVBS",hnd%)
ExecuteVBS est le nom de la fonction hnd% est le handle d'un memo contenant le code du script VBS à exécuter: hnd% = handle(numero_memo%)resultat% contient le code retour, avec -1 = erreur autre valeur: longueur en caractères du script exécuté La documentation du fichier Autres_DLL.rtf a été mise à jour. Un programme test_wscript.bas est inclu également. Note: on peut parfaitement faire HIDE du memo à utiliser pour ne pas gêner l'affichage, dans un programme. Juste pour info: cela ne marche pas avec un LIST, il faut bien utiliser un MEMO. Et la fonction handle() ne marche pas avec un DLIST... | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 19 Nov 2011 - 3:04 | |
| | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Exécution de scripts VBS Sam 19 Nov 2011 - 9:42 | |
| Problème avec cette implémentation: on ne peut pas passer des paramètres au script. Ou plutôt si: regardez ceci (à copier-coller dans le mémo du programme test_wscript pour le tester: - Code:
-
Essai("Bonjour") Essai(17)
sub Essai(par) msgbox "Sous-programme Essai" & vbcrlf & "Le paramètre est " & par end sub
On voit bien que le sous-programme Essai est appelé deux fois, avec des paramètres différents... Et en demandant "wscript subroutine" à Mr. Google (ou en suivant ce lien), on en apprend beaucoup plus sur le passage de paramètres et des scripts externes... | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Exécution de scripts VBS Sam 19 Nov 2011 - 11:45 | |
| Genial, une DLL qui va servir souvent je pense et permettra d'utiliser les scripts vbs pour les fonctions spécifiques | |
|
| |
Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Exécution de scripts VBS Sam 19 Nov 2011 - 11:52 | |
| Hallo Klaus,
ich habe Probleme mit deiner WEB-Seite.
Die Darstellung ist seh klein. Zum Teil sind alle Texte nicht dargestellt.
Funktioniert die Kontakerstellung ?
Gruß Severin | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Exécution de scripts VBS Sam 19 Nov 2011 - 12:27 | |
| ????????????
Ich verwende Firefox mit Adblock Plus und alles ist normal angezeigt.
Kontakt Seite ? Der Verweis geht in das Panoramic Forum, in die Abteilung Über meine Webseite, und da kannst Du wie gewohnt einen Post absetzen.
?????????????
J'utilise Firefox avec Adblock Plus et tout est affiché normalement.
Page de contact ? Le lien mène dans le forum Panoramic, dans la section concernant ma page Web, et là, tu peux poster comme d'habitude. | |
|
| |
Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Exécution de scripts VBS Sam 19 Nov 2011 - 12:38 | |
| klaus, kannst du mir zeigen wie ein Hardkopie hier eingestellt wird ? Severin
Ich habe Windows Internet Exprorer 9 | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Exécution de scripts VBS Sam 19 Nov 2011 - 12:53 | |
| Ikone "Printer" ...
oder Menu "Seite", Option "Abspeichern als..." ...
oder ctrl/A ctrl/C dann Word, dort ctrl/V ...
| |
|
| |
Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Exécution de scripts VBS Sam 19 Nov 2011 - 13:36 | |
| ich teste noch | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Exécution de scripts VBS Sam 19 Nov 2011 - 14:13 | |
| Hier bei mir mit Firefox / Voici chez moi avec Firefox: [img] [/img] und hier: [img] [/img] Die Deformation kommt von des Übersetzungsmaschine... Vielleicht kannst Du die englische Seite einfacher lesen... La déformation vient de l'outil de traduction... Tu pourrais peut-être lire plus facilement la page anglaise... | |
|
| |
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Exécution de scripts VBS Mar 22 Nov 2011 - 15:13 | |
| Le code source de cette DLL est-il disponible ? A titre de curiosité, j'aimerais essayer avec le C à la place du VBS, en utilisant le compilateur TCC ( http://bellard.org/tcc/) qui peut compiler des scripts à la volée. Certains logiciels l'utilisent d'ailleurs comme langage de script. | |
|
| |
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Exécution de scripts VBS Jeu 24 Nov 2011 - 9:43 | |
| Une solution alternative consisterait à utiliser la bibliothèque libtcc fournie avec TCC. Elle permet de compiler en mémoire vive un programme passé sous la forme d'une chaîne de caractères. Malheureusement, le fichier d'en-tête libtcc.h, écrit en C, semble difficile à adapter en Panoramic. Je vais d'abord essayer d'en faire une version pour FreeBASIC (qui possède un utilitaire de traduction des fichiers *.h). Il devrait alors être possible d'en tirer une DLL utilisable par Panoramic. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Exécution de scripts VBS Ven 25 Nov 2011 - 12:21 | |
| Voici le code source de la DLL. C'est public et entièrement libre de droits, pour tout usage: - Code:
-
library wscript;
uses Windows, Sysutils, Math, Messages, Classes;
var { Déclarations publiques } sNewFileName: string;
{ définir un type de Pointeur sur Integer pour déclaration de procédure } type PInteger = ^Integer; PString = ^String;
{ Function GetOtherWindowMemoText(const sCaption : String) : WideString; var hWindow : THandle; hChild : THandle;
aTemp : array[0..5000] of Char; sClassName : String; begin Result := '';
hWindow := FindWindow(Nil,PChar(sCaption));
if hWindow = 0 then begin ShowMessage('Could NOT find the other program'); exit; end;
hChild := GetWindow(hWindow, GW_CHILD); while hChild <> 0 do Begin if GetClassName(hChild, aTemp, SizeOf(aTemp)) > 0 then begin sClassName := StrPAS(aTemp);
if sClassName = 'Edit' then begin SendMessage(hChild,WM_GETTEXT,SizeOf(aTemp),Integer(@aTemp));
Result := StrPAS(aTemp); end; end; hChild := GetWindow(hChild, GW_HWNDNEXT); end; end; }
// créer un nom de fichier unique pour le fichier temporaire function CreateNewFileName(BaseFileName: String; Ext: String; AlwaysUseNumber: Boolean = True): String; var DocIndex: Integer; FileName: String; FileNameFound: Boolean; begin DocIndex := 1; Filenamefound := False; {if number not required and basefilename doesn't exist, use that.} if not(AlwaysUseNumber) and (not(fileexists(BaseFilename + ext))) then begin Filename := BaseFilename + ext; FilenameFound := true; end; while not (FileNameFound) do begin filename := BaseFilename + inttostr(DocIndex) + Ext; if fileexists(filename) then inc(DocIndex) else FileNameFound := true; end; Result := filename; end;
// exécuter le contenu d'un memo Panoramic en tant que script VBS function ExecuteVBS(const hnd: integer): integer; stdcall; export; var aTemp: array[0..5000] of Char; str, temp: string; StartInfo : TStartupInfo; ProcInfo : TProcessInformation; CreateOK : Boolean; F: TextFile; begin
SendMessage(hnd,WM_GETTEXT,SizeOf(aTemp),Integer(@aTemp)); str := StrPAS(aTemp); { fill with known state} FillChar(StartInfo,SizeOf(TStartupInfo),#0); FillChar(ProcInfo,SizeOf(TProcessInformation),#0); StartInfo.cb := SizeOf(TStartupInfo); temp := GetEnvironmentVariable('TEMP'); sNewFileName := CreateNewFileName(temp + '\script_temporaire','.vbs'); AssignFile(F, sNewFileName); Rewrite(F); WriteLn(F, str); CloseFile(F); CreateOK := CreateProcess(nil, PChar('wscript '+sNewFileName), nil, nil,False, CREATE_NEW_PROCESS_GROUP+NORMAL_PRIORITY_CLASS, nil, nil, StartInfo, ProcInfo); { check to see if successful} if CreateOK then begin WaitForSingleObject(ProcInfo.hProcess, INFINITE); result := length(str); end else begin result := -1; end; DeleteFile(sNewFileName); CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); end;
exports ExecuteVBS ;
begin end.
| |
|
| |
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Exécution de scripts VBS Dim 27 Nov 2011 - 12:49 | |
| | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Exécution de scripts VBS Dim 27 Nov 2011 - 13:24 | |
| Cool bien joué | |
|
| |
Contenu sponsorisé
| Sujet: Re: Exécution de scripts VBS | |
| |
|
| |
| Exécution de scripts VBS | |
|