Désolé pour toutes les fautes de grammaire de mon post précédent :-(
"j'ai pu mesurer", pas "mesuré" <<== honte!! ^^^^^^^ etc.
-- Jean-marc
Jacques93
Bonjour Jean-Marc, Jean-Marc a écrit :
Désolé pour toutes les fautes de grammaire de mon post précédent :-(
"j'ai pu mesurer", pas "mesuré" <<== honte!! ^^^^^^^ etc.
Bah, Le samedi, c'est relâche ... ;-)
A part quelque petites différences j'ai procédé de manière similaire à ton tutorial. J'ai utilisé au début Sample Dll Project au lieu de Empty Dll project, et j'utilise un .cpp (code minimal...) :
Mais au final les résultats sont similaires, sauf peut être en taille de la dll (40 Ko pour moi, en version Release)
Ne frise je pas le HS dans un forum VB, je risque d' attirer des êtres étranges :-D
-- Cordialement,
Jacques.
Bonjour Jean-Marc,
Jean-Marc a écrit :
Désolé pour toutes les fautes de grammaire de
mon post précédent :-(
"j'ai pu mesurer", pas "mesuré" <<== honte!!
^^^^^^^
etc.
Bah, Le samedi, c'est relâche ... ;-)
A part quelque petites différences j'ai procédé de manière similaire à
ton tutorial. J'ai utilisé au début Sample Dll Project au lieu de Empty
Dll project, et j'utilise un .cpp (code minimal...) :
Désolé pour toutes les fautes de grammaire de mon post précédent :-(
"j'ai pu mesurer", pas "mesuré" <<== honte!! ^^^^^^^ etc.
Bah, Le samedi, c'est relâche ... ;-)
A part quelque petites différences j'ai procédé de manière similaire à ton tutorial. J'ai utilisé au début Sample Dll Project au lieu de Empty Dll project, et j'utilise un .cpp (code minimal...) :
Je tiens la dll compilée et son code à la disposition de ceux qui le veulent et au besoin je mettrais le tout sur une page web.
Je suis preneur du tout. :-)
Merci Jean-Marc
Jacques93
Bonjour Picalausa François, Picalausa François a écrit :
Hello,
Pour passer le temps, voici deux questions (qui pourraient servir à améliorer les perfs?): Les tests ont-ils été fait avec la version ansi ou unicode des API, sous VB? On peut référencer les API directement depuis un module dans une typelib. Cela apporte-t-il encore de la performance?
Pour la version unicode des API, il faut (utiliser la traduction du verbe to prepend ici) "?" au chemin (ce qui peut prendre un temps certain). A noter que sous 9x/Me, la version unicode de ces API sont supportées par MSLU.
Voici le code correspondant aux deux points: Const MAX_PATH = 260
Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type
Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName(MAX_PATH * 2 - 1) As Byte cAlternateFileName As String * 28 End Type
Private Declare Function FindNextFile _ Lib "kernel32" _ Alias "FindNextFileW" _ ( _ ByVal hFindFile As Long, _ lpFindFileData As WIN32_FIND_DATA _ ) _ As Long Private Declare Function FindFirstFile _ Lib "kernel32" _ Alias "FindFirstFileW" _ ( _ ByVal lpFileName As Long, _ lpFindFileData As WIN32_FIND_DATA _ ) _ As Long Private Declare Function FindClose _ Lib "kernel32" _ ( _ ByVal hFindFile As Long _ ) _ As Long
'S'assure que la recherche a fonctionné If Not hFind = INVALID_HANDLE_VALUE Then 'Boucle tant qu'il y a des fichiers Do 'Ne compte pas les sous dossiers If (W32FD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = 0 Then FileCount = FileCount + 1 End If Loop While FindNextFile(hFind, W32FD)
FindClose hFind End If End Function
La typelib correspondante est la suivante: // Generated .IDL file (by the OLE/COM Object Viewer) // // typelib filename: w32Find.tlb [ uuid(22313A55-58BD-4306-9578-802F5F0DE9FD), version(1.0) ] library Win32 Find APIs for VB { // TLib : // Forward declare all types defined in this typelib [ dllname("kernel32.Dll") ] module Win32Find { [entry(0x60000000)] long _stdcall FindNextFile([in] long hfind, [out] WIN32_FIND_DATA* lpFindFileData);
[entry(0x60000001)] long _stdcall FindFirstFile([in] LPWSTR lpFileName, [out] WIN32_FIND_DATA* lpFindFileData);
[entry(0x60000002)] long _stdcall FindClose([in] long hfind);
const long INVALID_HANDLE_VALUE = 0xffffffff; const long FILE_ATTRIBUTE_READONLY = 1; const long FILE_ATTRIBUTE_HIDDEN = 2; const long FILE_ATTRIBUTE_SYSTEM = 4; const long FILE_ATTRIBUTE_DIRECTORY = 16; const long FILE_ATTRIBUTE_ARCHIVE = 32; const long FILE_ATTRIBUTE_DEVICE = 64; const long FILE_ATTRIBUTE_NORMAL = 128; };
typedef struct tagFILETIME { long dwLowDateTime; long dwHighDateTime; } FILETIME; typedef struct tagWIN32_FIND_DATA { long dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; long nFileSizeHigh; long nFileSizeLow; long dwReserved0; long dwReserved1; unsigned char cFileName[520]; unsigned char cAlternateFileName[28]; } WIN32_FIND_DATA; }; (version compilée de cette tlb en pièce jointe)
Le code est le même qu'au point à, mis à part qu'il faut omettre les déclarations d'APIs
Pas le temps avant l'apéro ;-) . Mais je mets de côté. Merci.
-- Cordialement,
Jacques.
Bonjour Picalausa François,
Picalausa François a écrit :
Hello,
Pour passer le temps, voici deux questions (qui pourraient servir à
améliorer les perfs?):
Les tests ont-ils été fait avec la version ansi ou unicode des API, sous VB?
On peut référencer les API directement depuis un module dans une typelib.
Cela apporte-t-il encore de la performance?
Pour la version unicode des API, il faut (utiliser la traduction du verbe to
prepend ici) "\?" au chemin (ce qui peut prendre un temps certain). A
noter que sous 9x/Me, la version unicode de ces API sont supportées par
MSLU.
Voici le code correspondant aux deux points:
Const MAX_PATH = 260
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName(MAX_PATH * 2 - 1) As Byte
cAlternateFileName As String * 28
End Type
Private Declare Function FindNextFile _
Lib "kernel32" _
Alias "FindNextFileW" _
( _
ByVal hFindFile As Long, _
lpFindFileData As WIN32_FIND_DATA _
) _
As Long
Private Declare Function FindFirstFile _
Lib "kernel32" _
Alias "FindFirstFileW" _
( _
ByVal lpFileName As Long, _
lpFindFileData As WIN32_FIND_DATA _
) _
As Long
Private Declare Function FindClose _
Lib "kernel32" _
( _
ByVal hFindFile As Long _
) _
As Long
Public Function FileCount(Folder As String) As Long
Dim strAPIFolderPath As String
Dim hFind As Long
Dim W32FD As WIN32_FIND_DATA
'! valable si local uniquement
If Right$(Folder, 1) = "" Then
strAPIFolderPath = "\?" & Folder & "*"
Else
strAPIFolderPath = "\?" & Folder & "*"
End If
'S'assure que la recherche a fonctionné
If Not hFind = INVALID_HANDLE_VALUE Then
'Boucle tant qu'il y a des fichiers
Do
'Ne compte pas les sous dossiers
If (W32FD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = 0
Then
FileCount = FileCount + 1
End If
Loop While FindNextFile(hFind, W32FD)
FindClose hFind
End If
End Function
La typelib correspondante est la suivante:
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: w32Find.tlb
[
uuid(22313A55-58BD-4306-9578-802F5F0DE9FD),
version(1.0)
]
library Win32 Find APIs for VB
{
// TLib : // Forward declare all types defined in this typelib
[
dllname("kernel32.Dll")
]
module Win32Find {
[entry(0x60000000)]
long _stdcall FindNextFile([in] long hfind, [out] WIN32_FIND_DATA*
lpFindFileData);
[entry(0x60000001)]
long _stdcall FindFirstFile([in] LPWSTR lpFileName, [out]
WIN32_FIND_DATA* lpFindFileData);
[entry(0x60000002)]
long _stdcall FindClose([in] long hfind);
const long INVALID_HANDLE_VALUE = 0xffffffff;
const long FILE_ATTRIBUTE_READONLY = 1;
const long FILE_ATTRIBUTE_HIDDEN = 2;
const long FILE_ATTRIBUTE_SYSTEM = 4;
const long FILE_ATTRIBUTE_DIRECTORY = 16;
const long FILE_ATTRIBUTE_ARCHIVE = 32;
const long FILE_ATTRIBUTE_DEVICE = 64;
const long FILE_ATTRIBUTE_NORMAL = 128;
};
typedef struct tagFILETIME {
long dwLowDateTime;
long dwHighDateTime;
} FILETIME;
typedef struct tagWIN32_FIND_DATA {
long dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
long nFileSizeHigh;
long nFileSizeLow;
long dwReserved0;
long dwReserved1;
unsigned char cFileName[520];
unsigned char cAlternateFileName[28];
} WIN32_FIND_DATA;
};
(version compilée de cette tlb en pièce jointe)
Le code est le même qu'au point à, mis à part qu'il faut omettre les
déclarations d'APIs
Pas le temps avant l'apéro ;-) . Mais je mets de côté. Merci.
Bonjour Picalausa François, Picalausa François a écrit :
Hello,
Pour passer le temps, voici deux questions (qui pourraient servir à améliorer les perfs?): Les tests ont-ils été fait avec la version ansi ou unicode des API, sous VB? On peut référencer les API directement depuis un module dans une typelib. Cela apporte-t-il encore de la performance?
Pour la version unicode des API, il faut (utiliser la traduction du verbe to prepend ici) "?" au chemin (ce qui peut prendre un temps certain). A noter que sous 9x/Me, la version unicode de ces API sont supportées par MSLU.
Voici le code correspondant aux deux points: Const MAX_PATH = 260
Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type
Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName(MAX_PATH * 2 - 1) As Byte cAlternateFileName As String * 28 End Type
Private Declare Function FindNextFile _ Lib "kernel32" _ Alias "FindNextFileW" _ ( _ ByVal hFindFile As Long, _ lpFindFileData As WIN32_FIND_DATA _ ) _ As Long Private Declare Function FindFirstFile _ Lib "kernel32" _ Alias "FindFirstFileW" _ ( _ ByVal lpFileName As Long, _ lpFindFileData As WIN32_FIND_DATA _ ) _ As Long Private Declare Function FindClose _ Lib "kernel32" _ ( _ ByVal hFindFile As Long _ ) _ As Long
'S'assure que la recherche a fonctionné If Not hFind = INVALID_HANDLE_VALUE Then 'Boucle tant qu'il y a des fichiers Do 'Ne compte pas les sous dossiers If (W32FD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = 0 Then FileCount = FileCount + 1 End If Loop While FindNextFile(hFind, W32FD)
FindClose hFind End If End Function
La typelib correspondante est la suivante: // Generated .IDL file (by the OLE/COM Object Viewer) // // typelib filename: w32Find.tlb [ uuid(22313A55-58BD-4306-9578-802F5F0DE9FD), version(1.0) ] library Win32 Find APIs for VB { // TLib : // Forward declare all types defined in this typelib [ dllname("kernel32.Dll") ] module Win32Find { [entry(0x60000000)] long _stdcall FindNextFile([in] long hfind, [out] WIN32_FIND_DATA* lpFindFileData);
[entry(0x60000001)] long _stdcall FindFirstFile([in] LPWSTR lpFileName, [out] WIN32_FIND_DATA* lpFindFileData);
[entry(0x60000002)] long _stdcall FindClose([in] long hfind);
const long INVALID_HANDLE_VALUE = 0xffffffff; const long FILE_ATTRIBUTE_READONLY = 1; const long FILE_ATTRIBUTE_HIDDEN = 2; const long FILE_ATTRIBUTE_SYSTEM = 4; const long FILE_ATTRIBUTE_DIRECTORY = 16; const long FILE_ATTRIBUTE_ARCHIVE = 32; const long FILE_ATTRIBUTE_DEVICE = 64; const long FILE_ATTRIBUTE_NORMAL = 128; };
typedef struct tagFILETIME { long dwLowDateTime; long dwHighDateTime; } FILETIME; typedef struct tagWIN32_FIND_DATA { long dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; long nFileSizeHigh; long nFileSizeLow; long dwReserved0; long dwReserved1; unsigned char cFileName[520]; unsigned char cAlternateFileName[28]; } WIN32_FIND_DATA; }; (version compilée de cette tlb en pièce jointe)
Le code est le même qu'au point à, mis à part qu'il faut omettre les déclarations d'APIs
Pas le temps avant l'apéro ;-) . Mais je mets de côté. Merci.
-- Cordialement,
Jacques.
Jean-Marc
"Aski" a écrit dans le message de news:
Salutatoi Jean-Marc,
Tu as donc déclaré :
> Je tiens la dll compilée et son code à la disposition de ceux qui le > veulent et au besoin je mettrais le tout sur une page web.
Je suis preneur du tout. :-)
Hello,
J'ai donc mis en ligne la dll en C (le code est presque identique à celui de Jacques) ainsi que le programme d'exemple en VB illustrant l'appel de cet dll. Tout est ici:
http://myjmnhome.dyndns.org/download.htm
Premier lien de "Autres Téléchargements"
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Aski" <aski@asci.asc> a écrit dans le message de
news:eYYkAqS7FHA.3388@TK2MSFTNGP11.phx.gbl...
Salutatoi Jean-Marc,
Tu as donc déclaré :
> Je tiens la dll compilée et son code à la disposition de ceux qui le
> veulent et au besoin je mettrais le tout sur une page web.
Je suis preneur du tout. :-)
Hello,
J'ai donc mis en ligne la dll en C (le code est presque identique
à celui de Jacques) ainsi que le programme d'exemple en VB illustrant
l'appel de cet dll.
Tout est ici:
http://myjmnhome.dyndns.org/download.htm
Premier lien de "Autres Téléchargements"
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
> Je tiens la dll compilée et son code à la disposition de ceux qui le > veulent et au besoin je mettrais le tout sur une page web.
Je suis preneur du tout. :-)
Hello,
J'ai donc mis en ligne la dll en C (le code est presque identique à celui de Jacques) ainsi que le programme d'exemple en VB illustrant l'appel de cet dll. Tout est ici:
http://myjmnhome.dyndns.org/download.htm
Premier lien de "Autres Téléchargements"
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
Jean-Marc
"Jacques93" a écrit dans le message de news:%
Bonjour Jean-Marc, Jean-Marc a écrit : > Désolé pour toutes les fautes de grammaire de > mon post précédent :-( > > "j'ai pu mesurer", pas "mesuré" <<== honte!! > ^^^^^^^ > etc. >
Bah, Le samedi, c'est relâche ... ;-)
A part quelque petites différences j'ai procédé de manière similaire à ton tutorial. J'ai utilisé au début Sample Dll Project au lieu de Empty Dll project, et j'utilise un .cpp (code minimal...) :
Mais au final les résultats sont similaires, sauf peut être en taille de la dll (40 Ko pour moi, en version Release)
J'obtient la même taille :-)
Ne frise je pas le HS dans un forum VB, je risque d' attirer des êtres étranges :-D
Non on est encore en charte, du moins je le pense sincèrement car on parle de VB, ce performances en VB, de façon de résoudre un problème en VB et le fait que la résolution passe par des appels de fonction de l'API Windows n'est pas hors charte en soi :-)
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"Jacques93" <jacques@NoSpam> a écrit dans le message de
news:%23MfPjnS7FHA.736@TK2MSFTNGP09.phx.gbl...
Bonjour Jean-Marc,
Jean-Marc a écrit :
> Désolé pour toutes les fautes de grammaire de
> mon post précédent :-(
>
> "j'ai pu mesurer", pas "mesuré" <<== honte!!
> ^^^^^^^
> etc.
>
Bah, Le samedi, c'est relâche ... ;-)
A part quelque petites différences j'ai procédé de manière similaire à
ton tutorial. J'ai utilisé au début Sample Dll Project au lieu de Empty
Dll project, et j'utilise un .cpp (code minimal...) :
Mais au final les résultats sont similaires, sauf peut être en taille de
la dll (40 Ko pour moi, en version Release)
J'obtient la même taille :-)
Ne frise je pas le HS dans un forum VB, je risque d' attirer des êtres
étranges :-D
Non on est encore en charte, du moins je le pense sincèrement car on
parle de VB, ce performances en VB, de façon de résoudre un problème en VB
et le fait que la résolution passe par des appels de fonction de l'API
Windows n'est pas hors charte en soi :-)
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Bonjour Jean-Marc, Jean-Marc a écrit : > Désolé pour toutes les fautes de grammaire de > mon post précédent :-( > > "j'ai pu mesurer", pas "mesuré" <<== honte!! > ^^^^^^^ > etc. >
Bah, Le samedi, c'est relâche ... ;-)
A part quelque petites différences j'ai procédé de manière similaire à ton tutorial. J'ai utilisé au début Sample Dll Project au lieu de Empty Dll project, et j'utilise un .cpp (code minimal...) :
Mais au final les résultats sont similaires, sauf peut être en taille de la dll (40 Ko pour moi, en version Release)
J'obtient la même taille :-)
Ne frise je pas le HS dans un forum VB, je risque d' attirer des êtres étranges :-D
Non on est encore en charte, du moins je le pense sincèrement car on parle de VB, ce performances en VB, de façon de résoudre un problème en VB et le fait que la résolution passe par des appels de fonction de l'API Windows n'est pas hors charte en soi :-)
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
Aski
Salutatoi Jean-Marc,
Tu as donc déclaré :
"Aski" a écrit dans le message de news:
Salutatoi Jean-Marc,
Tu as donc déclaré :
Je tiens la dll compilée et son code à la disposition de ceux qui le veulent et au besoin je mettrais le tout sur une page web.
Je suis preneur du tout. :-)
Hello,
J'ai donc mis en ligne la dll en C (le code est presque identique à celui de Jacques) ainsi que le programme d'exemple en VB illustrant l'appel de cet dll. Tout est ici:
http://myjmnhome.dyndns.org/download.htm
Premier lien de "Autres Téléchargements"
Merci
Cordialement
Aski
Salutatoi Jean-Marc,
Tu as donc déclaré :
"Aski" <aski@asci.asc> a écrit dans le message de
news:eYYkAqS7FHA.3388@TK2MSFTNGP11.phx.gbl...
Salutatoi Jean-Marc,
Tu as donc déclaré :
Je tiens la dll compilée et son code à la disposition de ceux qui le
veulent et au besoin je mettrais le tout sur une page web.
Je suis preneur du tout. :-)
Hello,
J'ai donc mis en ligne la dll en C (le code est presque identique
à celui de Jacques) ainsi que le programme d'exemple en VB illustrant
l'appel de cet dll.
Tout est ici:
Je tiens la dll compilée et son code à la disposition de ceux qui le veulent et au besoin je mettrais le tout sur une page web.
Je suis preneur du tout. :-)
Hello,
J'ai donc mis en ligne la dll en C (le code est presque identique à celui de Jacques) ainsi que le programme d'exemple en VB illustrant l'appel de cet dll. Tout est ici: