Installation et dectetion de résolution

Kami1357 Messages postés 36 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 11 février 2005 - 27 déc. 2004 à 03:03
Kami1357 Messages postés 36 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 11 février 2005 - 31 déc. 2004 à 13:27
Bonjour tout le monde et joyeuses fêtes!!!!!!

bon voila j'ai un gros souci,
j"ai sondé les forums pendant des heures et je n'ai trouvé aucune réponse claire et précise à ce que je me demande.

1°) Comment détecter la résolution de l'écran et l'indiquer par un Msgbox à l'utilisateur si elle est différente de 1024*768.

2°) Comment créer une barre de progression indiquant le pourcentage et l'état d'avancement de la copie d'un fichier.

enfin

3°) Comment copier un fichier sur le bureau sous Windows Xp sachant que l'adresse varie, C:\Document and settings\ Et la ça varie d"un poste à l'autre....;

Voilà c'est tout je donne un merci immensément grand et infini à tous ceux quip rendront la peine de répondre au noob qur je suis.....

21 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
27 déc. 2004 à 03:29
1)
MsgBox Screen.Width / Screen.TwipsPerPixelX & "x" & Screen.Height / Screen.TwipsPerPixelY

2)
Dim Buffer() As Byte
Dim Lg As Long
Dim Total As Long
Dim Reste As Long

Lg = 4096
ReDim Buffer(Lg - 1)

Open Nomentre For Binary As #1
Total = Lof(1)
Open Nomsortie For Binary As #2
Reste = Total

While Reste > 0
If Reste < Lg Then Lg = Reste: ReDim Buffer(Lg - 1)
Get #1, , Buffer()
Reste = Reste - Lg
ProgressBar1.Value = 100 - Reste * 100 / Total
DoEvents
Put #2, , Buffer()
Wend

Close #2
Close #1

Daniel
0
Kami1357 Messages postés 36 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 11 février 2005
29 déc. 2004 à 18:31
Merci bcp mais l'astuce pour la barre de progressions ne marche que pour des petits fichiers, lorsque je copie une video de 100Mo il affiche l'erreur 6 " Overflow" !

Alalalala que faire ???

merci !
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
29 déc. 2004 à 18:56
avec la méthode native de VB on peut gérer des fichiers qui ne dépassent pas la taille d'un Long soit 2147483647 maxi

je pense que l'overflow vient du calcul du pourcentage, il faut faire la division d'abord pour éviter le dépassement de capacité:
ProgressBar1.Value = 100 - reste / total * 100

d'autre part la taille du buffer Lg = 4096 a été choisi arbitrairement et peut être modifiée sans problème.

Daniel
0
Kami1357 Messages postés 36 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 11 février 2005
29 déc. 2004 à 19:56
MILLE MERCIS !
CA MARCHE IMPEC !

;) ;) ;) ;) :big)
0

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

Posez votre question
Kami1357 Messages postés 36 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 11 février 2005
30 déc. 2004 à 17:21
Heuuu désolé mais j'ai encor un dernier petit problème....

Comment dois-je my prendre pour pouvoir copier plusieurs fichiers avec le code de la barre de progression, car il n'est écrit que pour copier 1 fichier....

Merci de bien vouloir répondre :'( ! !! ! !
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 17:32
pour copier plusieurs fichiers il faut faire une liste des fichiers à copier, faire le TotalGénéral de toutes les tailles, dans la copie additionner ce qui est copié dans TotalCopié, ce qui permet de faire avancer la ProgressBar:

ProgressBar1.Value = Totalcopiée * 100 / TotalGénéral

quand on a fini de copier un fichier, on reboucle sur le début de la copie en mettant à jour le nom du fichier, la Longueur du fichier, et reste à copier.

Daniel
0
Kami1357 Messages postés 36 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 11 février 2005
30 déc. 2004 à 18:05
Je suis vraiment désolé vous allez me prendre pour un abruti mais j'y arrive pas !!!!!
Ca me copie des fichiers oui mais ils sont invalides....

je comprends plus rien ....

%-6
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 18:22
ça veut dire quoi invalide ? est-ce qu'ils ont la bonne taille, la même que celle de l'original ?
met les noms des fichiers à copier avec le chemin dans une table, et la longueur dans une autre table:
NomduFichier(n) = nomfichier
NomenSortie(n) = 'je ne sais pas
Longueur(n) = filelen (nomfichier)
ensuite il n'y a plus que des tables à gérer

for i = 1 to n
TotalGénéral = TotalGénéral + Longueur(i)
next

for i = 1 to n
Nomentre = NomduFichier(i)
Nomsortie = NomenSortie(i)
Total = Longueur(i)
Reste = Total

'copie du fichier i comme précedemment
Totalcopié = Totalcopié + Lg
ProgressBar1.Value = Totalcopiée * 100 / TotalGénéral
next

Daniel
0
Kami1357 Messages postés 36 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 11 février 2005
30 déc. 2004 à 19:14
Par invalide je voulais dire corrompu.

Mais je comprends pas ... On ne peut entrer qu'un seul nom de fichier ?
Je sais je suis TRES LOURD ! lol

Mais bon le but c'est de comprendre et pas copier bêtement !

Donc en fait c'est au début que je cormprends pas,
je pensais qu'il y aurait du avoir plusieurs adresses de fichier à entrer,
puis grâce au tableau calculer la taille totale ect hop
mettre ces lignes

Totalcopié = Totalcopié + Lg
ProgressBar1.Value = Totalcopiée * 100 / TotalGénéral

Enfin je sais pas si je suis clair...

Bon voilà MERCI ! C'est super sympa de prendre le temps de me répondre !
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 19:27
pourquoi veux tu copier plusieurs fichiers à la fois, l'ordinateur ne pouvant faire qu'une chose à la fois, tu ne gagneras pas de temps.
il reste toujours la possibilité de copier le fichier en une seule fois
filecopy (source, destination)
mais la ProgressBar ne sera pas très précise
il doit sûrement exister aussi des méthodes pour copier un répertoire complet.

Daniel
0
Kami1357 Messages postés 36 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 11 février 2005
30 déc. 2004 à 19:57
Donc c'est pas possible de créer un soft d'installation ?

Donc voir la progressions de la copie de plusierus fichiers,
mais pas les copier en même temps, les uns après les autres.

Par exemple la copie successive d'un fihcier sur le bureau, un autre dans program files et un autre dans system32 et voir la progression totale de la copie de tous ces fichiers ????

:sad)
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 20:03
ben si les copier les uns après les autres pas de problèmes.
il faut bien mettre les noms complets avec le chemin pour la Source et la destination.
où est le problème ?

Daniel
0
Kami1357 Messages postés 36 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 11 février 2005
30 déc. 2004 à 20:08
Bin c'est l'origine du topic lol ej sais pas comment faire !
Je sais pas du tout quelle ligne je dois taper !!!

:sad) :sad) :sad) :sad) :sad) :sad) :sad)
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 20:18
pourtant t'as tous les éléments à toi de remplir les tables des fichiers à copier, et le nombre dans n.
Dim NomduFichier() As String
Dim NomenSortie() As String
Dim n As Integer

Dim Buffer() As Byte
Dim Lg As Long
Dim Total As Long
Dim Reste As Long

for i = 1 to n
Nomentre = NomduFichier(i)
Nomsortie = NomenSortie(i)
Total = Longueur(i)
Reste = Total

Lg = 4096
ReDim Buffer(Lg - 1)
Open Nomentre For Binary As #1
Open Nomsortie For Binary As #2
While Reste > 0
If Reste < Lg Then Lg = Reste: ReDim Buffer(Lg - 1)
Get #1, , Buffer()
Reste = Reste - Lg
Totalcopié = Totalcopié + Lg
ProgressBar1.Value = Totalcopiée * 100 / TotalGénéral
DoEvents
Put #2, , Buffer()
Wend
Close #2
Close #1

next


Daniel
0
Kami1357 Messages postés 36 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 11 février 2005
30 déc. 2004 à 22:19
Bon j'abandonne !
J'en ai marre !!! lol

Je vois pas du tout comment remplir ces "tables" ...
Je sais même pas où elles sont !!! !
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 22:22
c'est quoi les fichiers que tu dois copier ?

Daniel
0
Kami1357 Messages postés 36 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 11 février 2005
30 déc. 2004 à 22:24
Mais je sais pas si je me suis assez clairement exprimé...

Voilà un exemple tout simple de ce que je voulais faire:

Voici 3 fichiers, "Toto.exe" "toto.bmp" et "toto.txt" classés tous les 3 dans le dossier "INSTALL", répertoir du soft d'installation. ( SETUP.exe)

Lorsque je clicke sur INSTALL.exe, une form apparaît et TOTO.exe est copié sr le bureau , TOTO.BMP dans C:\ et TOTO.TXT dans system32
le tout avec une barre de progressions me montrant l'avancement de la copie de tous ces fichiers...

Bon je pense ne plus pouvoir être plus clair...

Alé merci pour tout ! Bonnes fêtes !!
0
Kami1357 Messages postés 36 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 11 février 2005
30 déc. 2004 à 22:25
lol me suis gouré arf comme quoi il faut toujours se relire avant de poster... INSTALL.exe=setup.exe lol

mea culpa !
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 22:38
C:\INSTALL\TOTO.EXE --> C:\Documents and Settings\All Users\Bureau
C:\INSTALL\TOTO.BMP --> C:\WINDOWS\SYSTEM32
C:\INSTALL\TOTO.TXT --> C:\WINDOWS\SYSTEM32

t'es sur que c'est pas un empaquetage que tu veux faire ?
paceque C:\WINDOWS et C:\Documents and Settings\ peut varier d'un ordinateur à l'autre, dépendant de la configuration et de l'installation de windows.
d'autre part c'est pas toto.exe qu'il faut mettre sur le bureau mais un raccourci qui pointe sur toto.exe

Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
30 déc. 2004 à 23:59
je met les fonctions pour créer un raccourci et pour trouver le répertoire système.

Option Explicit

Const CSIDL_DESKTOP = &H0
Const CSIDL_PROGRAMS = &H2
Const CSIDL_CONTROLS = &H3
Const CSIDL_PRINTERS = &H4
Const CSIDL_PERSONAL = &H5
Const CSIDL_FAVORITES = &H6
Const CSIDL_STARTUP = &H7
Const CSIDL_RECENT = &H8
Const CSIDL_SENDTO = &H9
Const CSIDL_BITBUCKET = &HA
Const CSIDL_STARTMENU = &HB
Const CSIDL_DESKTOPDIRECTORY = &H10
Const CSIDL_DRIVES = &H11
Const CSIDL_NETWORK = &H12
Const CSIDL_NETHOOD = &H13
Const CSIDL_FONTS = &H14
Const CSIDL_TEMPLATES = &H15
Const MAX_PATH = 260

Private Type SHITEMID
    cb As Long
    abID As Byte
End Type

Private Type ITEMIDLIST
    mkid As SHITEMID
End Type

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function fCreateShellLink Lib "VB5STKIT.DLL" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As Long
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

Private Sub Command1_Click()
    Dim sSave As String
    Dim Rep   As Long

'ici tu trouves le répertoire systéme
    sSave = Space(255)
    Rep = GetSystemDirectory(sSave, 255)
    sSave = Left$(sSave, Rep)
    MsgBox "Windows System directory= " & sSave
'plus simple le répertoire windows
    MsgBox Environ$("Windir")
    
End Sub

Private Sub Command2_Click()
    Dim Rep As Long
    Dim c   As String
    Dim s   As String
    
'pour créer un raccourci
    c = GetSpecialfolder(CSIDL_DESKTOP)
    c = "..\.." & Mid$(c, InStrRev(c, "") + 1)
    s = "C:\INSTALL\TOTO.EXE"
    Rep = fCreateShellLink(c, "LINK", s, "")
    MsgBox Rep 'si rep différent de zéro c'est bon
    
End Sub

Private Function GetSpecialfolder(CSIDL As Long) As String
    Dim Rep  As Long
    Dim IDL  As ITEMIDLIST
    Dim path As String
    'Get the special folder
    Rep = SHGetSpecialFolderLocation(100, CSIDL, IDL)
    If Rep = 0 Then
        path = Space$(512)
        'Get the path from the IDList
        Rep = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal path)
        'Remove the unnecessary chr$(0)'s
        GetSpecialfolder = Left$(path, InStr(path, Chr$(0)) - 1)
        Else
        GetSpecialfolder = ""
        End If
End Function


Daniel
0
Rejoignez-nous