Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
634 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB] Tout résolu sauf une dernière pertinente ^^

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Précédente
Auteur Sujet :

[VB] Tout résolu sauf une dernière pertinente ^^

n°892027
zytrahus5
wait what?
Posté le 06-11-2004 à 19:19:54  profilanswer
 

Salut,
 
 
 
j'ai 4 questions [:joce] :
 
- la premiere, c'est que le fichier EXE est dans l'arborescence du disque dur, exactement dans le meme dossier que mon programme principal en VB. Quand j'appelle l'EXE avec la fonction SHELL de VB, je dois ecrire l'arbrorescence, j'ai cherché sur MSDN, et ils ne précisent pas comment je peux faire pour "préciser" que la cible est dans le meme dossier que le dossier courant (celui du prog VB). En PHP/HTML, on joue avec "./" ou "../" là j'ai essayé ne sachant pas, mais ça marche pas, donc y a t il un moyen de préciser ça ? RESOLU
 
 
- la seconde, est du meme registre (fonction SHELL, VB etc...). Mon EXE renvoie " printf " (pour faire simple), quand par exemple, je lance mon EXE en ligne de commande, si je tape TEST.EXE > text.txt et bien il me met tout ce qu'il sort en printf là dedans. Ce que je voudrais ça serait d'éviter de passer par un fichier, et récupérer le contenu directement dans une variable VB. Comment je veux faire ça ? RESOLU
 
 
- la troisieme, est que je comprends pas pourquoi mon code agit de cette manière, voilà le code :
 

Code :
  1. Private Sub Command1_Click()
  2. Dim i As Integer
  3. Command1.Enabled = False
  4. i = 0
  5. While i < 5
  6.     i = i + 1
  7.     status.Text = "boucle #" & i
  8.    
  9.     MyDOS.CommandLine = "test.exe > sortie.txt"
  10.     MyDOS.ExecuteCommand
  11. Wend
  12. Command1.Enabled = True
  13. End Sub


 
le probleme c'est qu'il n'ecrit dans le label "status" que lorsque la premiere boucle est faite ! pourtant c'est placé au début de la boucle, et l'EXE est lancé malgré tout avant que le contenu du label "status" soit rafraichi et remplacé par : "boucle #1" RESOLU
 
 
- 4eme question [:dawao]
 
Voilà ce que je voudrais faire :o
 
j'ai une interface graphique en VB qui appelle un fichier EXE (comme je l'ai dit plus haut), a part le probleme de la question 3, tout va bien [:joce] :d
 
Je voudrais faire un truc au démarrage de l'interface graphique : Vérifier qu'un plaisantant n'aurait pas corrompu l'executable initial :d Pour ça j'avais une idée => ouvrir le fichier EXE en mode TEXTE, le hasher (sans cryptage ou avec cryptage mais c pas important [:dawao] ) et comparer la chaine hashé a celle que j'aurais saisie en constante dans le programme [:romf]
 
le probleme c'est que je n'arrive pas du tout a lire le fichier EXE en mode texte (j'arrive a lire et a compteer le nombre de caractere) ... => vous auriez un conseil ?
RESOLU
 
 
 
 
- 5ème et derniere :sol: Tout est résolu sauf un probleme qui ressemble à la 3° :  

Call keybd_event(vbKeySnapshot, 1, 0, 0)
SavePicture Clipboard.GetData(vbCFBitmap), Fichier


 
Le problème c'est que VB commence a executer la deuxieme ligne avant que la premiere soit totalement achevée, ce qui a pour conséquence de ne pas  afficher ce que contient le presse papier, mais ce qu'il contenait avant de le reremplir
 
Si vous avez une idée ! ;)
 
PS : gros merci à Arjuna [:romf]
 
 
Merci pour le coup de main :)


Message édité par zytrahus5 le 24-11-2004 à 21:34:47

---------------
http://www.zytratech.com
mood
Publicité
Posté le 06-11-2004 à 19:19:54  profilanswer
 

n°892072
zytrahus5
wait what?
Posté le 06-11-2004 à 20:19:38  profilanswer
 

pas d'idée ?


---------------
http://www.zytratech.com
n°892113
zytrahus5
wait what?
Posté le 06-11-2004 à 21:04:39  profilanswer
 

la premiere question s'est résolué toute seule, bizarre, j'ai relancé VB, et visiblement il prenait en compte le ./ :)
 
 
pas d'idée comment récupérée la sortie de mon EXE ? :)


---------------
http://www.zytratech.com
n°892370
zytrahus5
wait what?
Posté le 07-11-2004 à 10:02:13  profilanswer
 

- la troisieme, est que je comprends pas pourquoi mon code agit de cette manière, voilà le code :
 

Code :
  1. Private Sub Command1_Click()
  2. Dim i As Integer
  3. Command1.Enabled = False
  4. i = 0
  5. While i < 5
  6.     i = i + 1
  7.     status.Text = "boucle #" & i
  8.    
  9.     MyDOS.CommandLine = "test.exe > sortie.txt"
  10.     MyDOS.ExecuteCommand
  11. Wend
  12. Command1.Enabled = True
  13. End Sub


 
le probleme c'est qu'il n'ecrit dans le label "status" que lorsque la premiere boucle est faite ! pourtant c'est placé au début de la boucle, et l'EXE est lancé malgré tout avant que le contenu du label "status" soit rafraichi et remplacé par : "boucle #1"
 
une idée pour ça ?


Message édité par zytrahus5 le 07-11-2004 à 10:19:55

---------------
http://www.zytratech.com
n°892379
zytrahus5
wait what?
Posté le 07-11-2004 à 10:18:53  profilanswer
 

si je remplace ma boucle par celle là, ça marche :
 

Code :
  1. While i < 1
  2.     i = i + 1
  3.     status = "TEST"
  4.     test = Shell("./test.exe > sortie.txt", 1)
  5. Wend


 
le probleme c'est que la class de la premiere boucle permet de récupérer la sortie de l'EXE sans passer par un fichier.... et que le shell ne me le permet pas.
 
Pourquoi dans ce cas là, le status est bien updaté et pas dans l'autre ? les instructions ne se font pas dans un ordre précis ?


Message édité par zytrahus5 le 07-11-2004 à 10:19:16

---------------
http://www.zytratech.com
n°892384
zytrahus5
wait what?
Posté le 07-11-2004 à 10:36:51  profilanswer
 

:/


---------------
http://www.zytratech.com
n°892471
zytrahus5
wait what?
Posté le 07-11-2004 à 13:49:42  profilanswer
 

pas d'idée ?


---------------
http://www.zytratech.com
n°892510
rosco
Posté le 07-11-2004 à 15:25:20  profilanswer
 

:whistle:

n°892515
zytrahus5
wait what?
Posté le 07-11-2004 à 15:31:26  profilanswer
 

[:ddr555]


---------------
http://www.zytratech.com
n°892652
zytrahus5
wait what?
Posté le 07-11-2004 à 19:45:29  profilanswer
 


- 4eme question [:dawao]
 
Voilà ce que je voudrais faire :o
 
j'ai une interface graphique en VB qui appelle un fichier EXE (comme je l'ai dit plus haut), a part le probleme de la question 3, tout va bien [:joce] :d
 
Je voudrais faire un truc au démarrage de l'interface graphique : Vérifier qu'un plaisantant n'aurait pas corrompu l'executable initial :d Pour ça j'avais une idée => ouvrir le fichier EXE en mode TEXTE, le hasher (sans cryptage ou avec cryptage mais c pas important [:dawao] ) et comparer la chaine hashé a celle que j'aurais saisie en constante dans le programme [:romf]
 
le probleme c'est que je n'arrive pas du tout a lire le fichier EXE en mode texte (j'arrive a lire et a compteer le nombre de caractere) ... => vous auriez un conseil ?


---------------
http://www.zytratech.com
mood
Publicité
Posté le 07-11-2004 à 19:45:29  profilanswer
 

n°892655
Mad_Overcl​ocker
S=C³A/4ħG ? Ask Datoune
Posté le 07-11-2004 à 19:49:27  profilanswer
 

[:noxauror]


---------------
RTCW & W:ET PlayerDawa Pack 1.28ハイテクなマスター
n°892662
zytrahus5
wait what?
Posté le 07-11-2004 à 19:52:43  profilanswer
 

:cry: personne il veut m'aider :d mes questions sont trop pertinentes [:dawao]


---------------
http://www.zytratech.com
n°892695
skeye
Posté le 07-11-2004 à 20:17:51  profilanswer
 

..;et si tu vérifiais la date de modif, plutôt?:o


---------------
Can't buy what I want because it's free -
n°892696
zytrahus5
wait what?
Posté le 07-11-2004 à 20:19:37  profilanswer
 

skeye a écrit :

..;et si tu vérifiais la date de modif, plutôt?:o

c'est juste pour de la lecture seule, pas d'écriture :/


---------------
http://www.zytratech.com
n°892697
skeye
Posté le 07-11-2004 à 20:20:22  profilanswer
 

zytrahus5 a écrit :

c'est juste pour de la lecture seule, pas d'écriture :/


[:delarue3]
Je vois pas le rapport...[:joce]


Message édité par skeye le 07-11-2004 à 20:20:40

---------------
Can't buy what I want because it's free -
n°892798
zytrahus5
wait what?
Posté le 07-11-2004 à 22:07:57  profilanswer
 

tu voulais que je regarde quelle date de modif ? :d


---------------
http://www.zytratech.com
n°893009
Arjuna
Aircraft Ident.: F-MBSD
Posté le 08-11-2004 à 10:07:43  profilanswer
 

3/ Parcequ'il faut faire un "Me.Refresh" ou "status.Refresh" pour que le contrôle se mette à jour pendant que le programme tourne.
En effet, ça prends énormément de temps de raffraîchir l'affichage d'un contrôle, donc VB préfère le faire lorsque le programme n'éxécute plus rien. Il faut donc forcer un refresh de toute la forme, ou d'éléments précis pour voir la mise à jour en temps réel.
 
4/  


Dim FileNum as Long
Dim fl as Long
Dim binByte() as Byte
 
FileNum = FreeFile
Open "test..exe" For Binary Access Read As #FileNum
fl = FileLen(bfilename)
ReDim binbyte(fl)
Get #FileNum, , binbyte
Close #FileNum


=> Ton fichier est chargé dans le tableau d'octets "binbyte".
=> PS: Ceci-dit, selon la taille de ton EXE, évite de le charger d'un coup de cette mannière, sinon tu va tout péter en mémoire :D
 
J'ai déjà joué avec des VOB (Rip de DVD) et même si ça pose pas de problème à VB pour créer un tableau de 4 Go en mémoire, ça pose un certain problème à Windows qui se met à swapper comme un gros tarré pour le faire :D

n°893010
Arjuna
Aircraft Ident.: F-MBSD
Posté le 08-11-2004 à 10:08:36  profilanswer
 

skeye a écrit :

..;et si tu vérifiais la date de modif, plutôt?:o


Y'a rien de plus simple à changer. Deplus c'est pas une constante, si tu déploie ce prog sur plusieurs PC, t'es baisé...

n°893011
Arjuna
Aircraft Ident.: F-MBSD
Posté le 08-11-2004 à 10:09:31  profilanswer
 

PS: ceci dit, pour s'assurer que le fichier est bon, je pense que le mieu c'est quand même d'aller le chercher sur un serveur [:spamafote]

n°893059
macgawel
Posté le 08-11-2004 à 11:00:18  profilanswer
 

zytrahus5 a écrit :


- 4eme question [:dawao]
 
Voilà ce que je voudrais faire :o
 
j'ai une interface graphique en VB qui appelle un fichier EXE (comme je l'ai dit plus haut), a part le probleme de la question 3, tout va bien [:joce] :d
 
Je voudrais faire un truc au démarrage de l'interface graphique : Vérifier qu'un plaisantant n'aurait pas corrompu l'executable initial :d Pour ça j'avais une idée => ouvrir le fichier EXE en mode TEXTE, le hasher (sans cryptage ou avec cryptage mais c pas important [:dawao] ) et comparer la chaine hashé a celle que j'aurais saisie en constante dans le programme [:romf]
 
le probleme c'est que je n'arrive pas du tout a lire le fichier EXE en mode texte (j'arrive a lire et a compteer le nombre de caractere) ... => vous auriez un conseil ?



Je ne connais pas VB ...
Mais ce ne serais pas possible de renommer le .EXE (en .TXT, par exemple), le hasher puis le remettre en .EXE ? Ou de le copier (en créant un fichier temporaire tmp_machin.TXT)
Et il n'y a pas la possibilité de lire le fichier en mode "hexa" sous VB ? Parce que les langages que je connais le permettent tous ...

n°893084
zytrahus5
wait what?
Posté le 08-11-2004 à 11:31:01  profilanswer
 

je vais essayer de le renommer :)


Message édité par zytrahus5 le 08-11-2004 à 11:31:07

---------------
http://www.zytratech.com
n°893090
HelloWorld
Salut tout le monde!
Posté le 08-11-2004 à 11:43:35  profilanswer
 

Une exe c'est du binaire. Je ne l'ouvrirais pas en texte à ta place.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°893106
zytrahus5
wait what?
Posté le 08-11-2004 à 12:01:35  profilanswer
 

HelloWorld a écrit :

Une exe c'est du binaire. Je ne l'ouvrirais pas en texte à ta place.

qu'est ce que je pourrais pour faire un truc similaire sur le fond ?


---------------
http://www.zytratech.com
n°893109
HelloWorld
Salut tout le monde!
Posté le 08-11-2004 à 12:07:34  profilanswer
 

L'ouvrir en bianire :whistle:


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°893112
zytrahus5
wait what?
Posté le 08-11-2004 à 12:11:56  profilanswer
 

HelloWorld a écrit :

L'ouvrir en bianire :whistle:

oui ça je peux faire, mais qu'est ce que je peux faire du binaire ? vais pas le stocker entier dans une variable, ça serait énorme... comment utiliser le binaire pour vérifier qu'il est conforme à la trace/hash de l'original connu ?


---------------
http://www.zytratech.com
n°893271
HelloWorld
Salut tout le monde!
Posté le 08-11-2004 à 13:59:29  profilanswer
 

Trouve toi une lib de hachage utilisable en VB et regarde comment on lui file un buffer à hacher. En fonction du niveau de sécurité que tu cherches tu pourras ou non utiliser une dll.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°893325
Arjuna
Aircraft Ident.: F-MBSD
Posté le 08-11-2004 à 14:35:23  profilanswer
 

zytrahus5 a écrit :

qu'est ce que je pourrais pour faire un truc similaire sur le fond ?


Le code que je t'ai donné. La plupart des algos de Hashage se basent sur un array de bytes... Et ça tombe bien, c'est ce que tu récupères avec le code que je t'ai donné...

n°893345
zytrahus5
wait what?
Posté le 08-11-2004 à 15:05:43  profilanswer
 

Arjuna a écrit :

Le code que je t'ai donné. La plupart des algos de Hashage se basent sur un array de bytes... Et ça tombe bien, c'est ce que tu récupères avec le code que je t'ai donné...

je sais pas comment j'ai fait mon compte mais j'ai pas vu ton code en répondant au topic tout a l'heure :)
 
je te remercie en tous cas, je vais tester ça cet apres midi :) :hello


---------------
http://www.zytratech.com
n°906083
zytrahus5
wait what?
Posté le 23-11-2004 à 21:58:20  profilanswer
 

Arjuna a écrit :

3/ Parcequ'il faut faire un "Me.Refresh" ou "status.Refresh" pour que le contrôle se mette à jour pendant que le programme tourne.
En effet, ça prends énormément de temps de raffraîchir l'affichage d'un contrôle, donc VB préfère le faire lorsque le programme n'éxécute plus rien. Il faut donc forcer un refresh de toute la forme, ou d'éléments précis pour voir la mise à jour en temps réel.
 
4/  


Dim FileNum as Long
Dim fl as Long
Dim binByte() as Byte
 
FileNum = FreeFile
Open "test..exe" For Binary Access Read As #FileNum
fl = FileLen(bfilename)
ReDim binbyte(fl)
Get #FileNum, , binbyte
Close #FileNum


=> Ton fichier est chargé dans le tableau d'octets "binbyte".
=> PS: Ceci-dit, selon la taille de ton EXE, évite de le charger d'un coup de cette mannière, sinon tu va tout péter en mémoire :D
 
J'ai déjà joué avec des VOB (Rip de DVD) et même si ça pose pas de problème à VB pour créer un tableau de 4 Go en mémoire, ça pose un certain problème à Windows qui se met à swapper comme un gros tarré pour le faire :D


 
 
 
J'ai enfin eu le temps de m'y remettre !  
 
j'ai appliqué ton code à mon programme, je n'ai pas d'errreur avec ça, en revanche, je me demande comment l'exploiter.
 
Est ce que le tableau d'octet je peux le Hasher avec ma fonction qui hache une chaine de caracteres ? a priori je pense pas, mais je vais essayer quand meme...
 
 
:hello:


---------------
http://www.zytratech.com
n°906087
zytrahus5
wait what?
Posté le 23-11-2004 à 22:01:03  profilanswer
 

ma fonction ne veut en effet pas du binByte (tableau d'octets) ...
 
 
Est ce qu'il est possible de convertir un tableau d'octets en tableau de caracteres ?


---------------
http://www.zytratech.com
n°906098
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-11-2004 à 22:11:14  profilanswer
 

C'est tout à fait possible. Par contre, je ne sais pas si en VB il y a une fonction pour passer un array de bytes en string. Si ce n'est pas le cas, il faut le faire à la main, en concaténant ligne par ligne les bytes du tableau en les passant en char avec cstr()

n°906102
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-11-2004 à 22:17:02  profilanswer
 

Regarde CstrB(), il me semble que ça permet de conserver le 7° bit au lieu de le shooter comme le fait le Cstr()

n°906138
zytrahus5
wait what?
Posté le 23-11-2004 à 22:52:02  profilanswer
 

[:romf] vais chercher des infos sur cette fonction ;)


---------------
http://www.zytratech.com
n°906155
zytrahus5
wait what?
Posté le 23-11-2004 à 23:04:13  profilanswer
 

dans ton bout de code, la ligne :
 
f1 = FileLen(bfilename)  
 
 
elle corespond aquoi ?
 
 


Dim FileNum as Long
Dim fl as Long
Dim binByte() as Byte
 
FileNum = FreeFile
Open "test..exe" For Binary Access Read As #FileNum
fl = FileLen(bfilename)
ReDim binbyte(fl)
Get #FileNum, , binbyte
Close #FileNum


 
 
 
comme ça fonctionnait pas, j'avais mis :
 
fl = FileLen("test.exe" )


Message édité par zytrahus5 le 23-11-2004 à 23:05:57

---------------
http://www.zytratech.com
n°906159
zytrahus5
wait what?
Posté le 23-11-2004 à 23:07:30  profilanswer
 

le probleme c'est que j'ai pas d'erreur a l'execution de ces lignes mais binByte est visiblement vide.
 
 
j'ai utilisé ce bout de code pour convertir :
 

sAns = StrConv(binByte, vbUnicode)
iPos = InStr(sAns, Chr(0))
If iPos > 0 Then sAns = Left(sAns, iPos - 1)


 
mais sAns est vide aussi


---------------
http://www.zytratech.com
n°906359
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 10:40:23  profilanswer
 

Euh, chais plus si FileLen() prends un pointeur de fichier ou un nom de fichier.
Regarde la valeur de fl, si c'est 0 ou -1 alors c'est pas bon, ça doit contenir la taille du fichier.
 
Pour le nom du fichier, met le nom complète (en partant de la racine du disque) parceque, notamment si tu lances le mode debug, le prog ne s'éxécute pas du tout dans son répertoire, donc les chemins relatifs ne mercheront certainement pas.

n°906764
zytrahus5
wait what?
Posté le 24-11-2004 à 16:35:23  profilanswer
 

j'ai pas d'exception quand au fait qu'il ne trouve pas le fichier (j'ai spécifié un faux nom pour voir comment il réagit dans ce cas, et il sort une exeption 53)
 
donc a priori il ouvre bien le fichier, mais pas moyen d'en avoir la longueur, faut dire que je sais meme pas si : Text1.Text = f1 ça marche ou pas :/
 
en tous cas si la syntaxe est bonne c'est qu'il arrive pas a donner la longueur car ça n'affiche rien


---------------
http://www.zytratech.com
n°906766
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 16:36:55  profilanswer
 

c'est pas f1 mais fl, c'est peut-être ça le problème :??:

n°906768
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-11-2004 à 16:38:12  profilanswer
 

PS: Pour éviter ce genre de problème, écrit toujours en toute première ligne de chacun de tes modules VB :
 

Option Explicit


 
=> VB plantera lors de tout appel à une variable non déclarée avec un "Dim"
Du coup il n'y a plus de confusion possible entre deux orthographes possibles pour une même variable, puisque la syntaxe fausse plantera ;)


Message édité par Arjuna le 24-11-2004 à 16:38:37
n°906769
zytrahus5
wait what?
Posté le 24-11-2004 à 16:38:30  profilanswer
 

:cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry:


---------------
http://www.zytratech.com
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB] Tout résolu sauf une dernière pertinente ^^

 

Sujets relatifs
[Résolu]Difference entre Mozilla Firefox et IE2 formulaires collés l'un a l'autre[resolu]
probleme de redirection [resolu][résolu] sous-menus dynamique et evennement onClick
pb de filets noires avec la librairie GD[resolu]menu deroulant ->selected avec les sessions[resolu]
souci de CSS et a:visited [résolu]téléchargement de fichier distant [résolu]
tester l'existence d'un fichier sur le serveur [résolu]fonction mail() -> adresse du messager[resolu]
Plus de sujets relatifs à : [VB] Tout résolu sauf une dernière pertinente ^^


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR