Bonjour,
J'aimerais connaitre les DLL utilisés par certains exécutables, pour cela
je m'attache à l'exe en tant que debugger et je fouine LOAD_DLL_DEBUG_INFO
quand je reçois un message de debug pour ça.
Par contre dans cette structure impossible de chopper le nom de la dll
ou du fichier ! Comment faire simplement?
Bonjour,
J'aimerais connaitre les DLL utilisés par certains exécutables, pour cela
je m'attache à l'exe en tant que debugger et je fouine LOAD_DLL_DEBUG_INFO
quand je reçois un message de debug pour ça.
Par contre dans cette structure impossible de chopper le nom de la dll
ou du fichier ! Comment faire simplement?
Bonjour,
J'aimerais connaitre les DLL utilisés par certains exécutables, pour cela
je m'attache à l'exe en tant que debugger et je fouine LOAD_DLL_DEBUG_INFO
quand je reçois un message de debug pour ça.
Par contre dans cette structure impossible de chopper le nom de la dll
ou du fichier ! Comment faire simplement?
Arg, ne prononce pas le nom de ce langage dans un thread où il est question
de debugging !! :-)
Désolé, mais moi aussi je suis alergique - la dernière fois que je l'ai
utilisé c'est certe un peu vieux (la dernière version sous Win16), mais
c'était vraiment une horreur : un cauchemar !!!
Olivier Huet
Arg, ne prononce pas le nom de ce langage dans un thread où il est question
de debugging !! :-)
Désolé, mais moi aussi je suis alergique - la dernière fois que je l'ai
utilisé c'est certe un peu vieux (la dernière version sous Win16), mais
c'était vraiment une horreur : un cauchemar !!!
Olivier Huet
Arg, ne prononce pas le nom de ce langage dans un thread où il est question
de debugging !! :-)
Désolé, mais moi aussi je suis alergique - la dernière fois que je l'ai
utilisé c'est certe un peu vieux (la dernière version sous Win16), mais
c'était vraiment une horreur : un cauchemar !!!
Olivier Huet
Bonjour,
J'aimerais connaitre les DLL utilisés par certains exécutables, pour cela
je m'attache à l'exe en tant que debugger et je fouine LOAD_DLL_DEBUG_INFO
quand je reçois un message de debug pour ça.
Par contre dans cette structure impossible de chopper le nom de la dll
ou du fichier ! Comment faire simplement?
Merci beaucoup !
Bonjour,
J'aimerais connaitre les DLL utilisés par certains exécutables, pour cela
je m'attache à l'exe en tant que debugger et je fouine LOAD_DLL_DEBUG_INFO
quand je reçois un message de debug pour ça.
Par contre dans cette structure impossible de chopper le nom de la dll
ou du fichier ! Comment faire simplement?
Merci beaucoup !
Bonjour,
J'aimerais connaitre les DLL utilisés par certains exécutables, pour cela
je m'attache à l'exe en tant que debugger et je fouine LOAD_DLL_DEBUG_INFO
quand je reçois un message de debug pour ça.
Par contre dans cette structure impossible de chopper le nom de la dll
ou du fichier ! Comment faire simplement?
Merci beaucoup !
"TigrouMeow" wrote in message
news:423d9ce2$0$22781$Bonjour,
J'aimerais connaitre les DLL utilisés par certains exécutables, pour cela
je m'attache à l'exe en tant que debugger et je fouine
LOAD_DLL_DEBUG_INFO
quand je reçois un message de debug pour ça.
Par contre dans cette structure impossible de chopper le nom de la dll
ou du fichier ! Comment faire simplement?
Merci beaucoup !
si le but est seulement de connaitre les DLL liés à un exe, utilisez donc
le
dependency walker , livré avec VC (program tool : "depends"... ) ... vous
pourrez même voir les fonctions des DLL utilisées... magique ? non, tout
cela doit être dans le PE de l'executable en toute rigueur, suffit
d'interpréter le PE. Et ca c'est super facile, puisque même AMcD y arrive
:-)
"TigrouMeow" <TigrouMeowMEOW@OnLineONLINE.Fr> wrote in message
news:423d9ce2$0$22781$636a15ce@news.free.fr...
Bonjour,
J'aimerais connaitre les DLL utilisés par certains exécutables, pour cela
je m'attache à l'exe en tant que debugger et je fouine
LOAD_DLL_DEBUG_INFO
quand je reçois un message de debug pour ça.
Par contre dans cette structure impossible de chopper le nom de la dll
ou du fichier ! Comment faire simplement?
Merci beaucoup !
si le but est seulement de connaitre les DLL liés à un exe, utilisez donc
le
dependency walker , livré avec VC (program tool : "depends"... ) ... vous
pourrez même voir les fonctions des DLL utilisées... magique ? non, tout
cela doit être dans le PE de l'executable en toute rigueur, suffit
d'interpréter le PE. Et ca c'est super facile, puisque même AMcD y arrive
:-)
"TigrouMeow" wrote in message
news:423d9ce2$0$22781$Bonjour,
J'aimerais connaitre les DLL utilisés par certains exécutables, pour cela
je m'attache à l'exe en tant que debugger et je fouine
LOAD_DLL_DEBUG_INFO
quand je reçois un message de debug pour ça.
Par contre dans cette structure impossible de chopper le nom de la dll
ou du fichier ! Comment faire simplement?
Merci beaucoup !
si le but est seulement de connaitre les DLL liés à un exe, utilisez donc
le
dependency walker , livré avec VC (program tool : "depends"... ) ... vous
pourrez même voir les fonctions des DLL utilisées... magique ? non, tout
cela doit être dans le PE de l'executable en toute rigueur, suffit
d'interpréter le PE. Et ca c'est super facile, puisque même AMcD y arrive
:-)
Bonjour,
TigrouMeow a écrit :Bonjour,
J'aimerais connaitre les DLL utilisés par certains exécutables, pour cela
je m'attache à l'exe en tant que debugger et je fouine
LOAD_DLL_DEBUG_INFO
quand je reçois un message de debug pour ça.
Par contre dans cette structure impossible de chopper le nom de la dll
ou du fichier ! Comment faire simplement?
Tu devrais lire le livre "Debugging Applications for Microsoft® .NET and
Microsoft Windows®", de John Robbins.
Je n'ai pas regardé super en détail, mais je crois que ce bout de code
issu du code associé à son bouquin te correspond (en principe on peut
réutiliser son code, alors j'espère que je ne commet pas d'infraction en
le postant :-) ) :
Sur réception de LOAD_DLL_DEBUG_EVENT, il fait :
static
DWORD LoadDllDebugEvent ( CDebugBaseUser * pUserClass ,
LPDEBUGGEEINFO pData ,
LPDEBUG_EVENT pDE )
{
TCHAR szDLLName[ MAX_PATH ] ;
szDLLName[ 0 ] = _T ( ' ' ) ;
BOOL bRet = TRUE ;
// If NTDLL.DLL has not come in, in essense this is the first
// DLL into the process, I can't look into the debuggee to get
// the full path. NTDLL.DLL is special and on W2K, the value
// passed in the lpImageName just points to zero. On XP, it
// points to just "ntdll.dll" so I need to hunt it down.
if ( FALSE == pData->GetSeenNTDLLLoad ( ) )
{
// Mark that I've seen it.
pData->SetSeenNTDLLLoad ( ) ;
// As I am debugging locally, get the Windows directory.
UINT uiLen = GetWindowsDirectory ( szDLLName , MAX_PATH ) ;
ASSERT ( uiLen > 0 ) ;
// Whack on the backslash.
szDLLName[ uiLen ] = _T ( '' ) ;
uiLen++ ;
szDLLName[ uiLen ] = _T ( ' ' ) ;
_tcscpy ( szDLLName + uiLen , _T ( "NTDLL.DLL" ) ) ;
}
else
{
// The value in lpImageName is a pointer to the full path
// and name of the DLL being loaded. The address is in the
// debuggee address space.
LPCVOID lpPtr = 0 ;
DWORD dwBytesRead = 0 ;
HANDLE hProcess = pData->GetProcessHandle ( ) ;
bRet = DBG_ReadProcessMemory ( hProcess ,
pDE->u.LoadDll.lpImageName ,
&lpPtr ,
sizeof ( LPCVOID ) ,
&dwBytesRead ) ;
ASSERT ( TRUE == bRet ) ;
if ( ( TRUE == bRet ) && ( 0 != lpPtr ) )
{
// If the name in the debuggee is UNICODE, I can read it
// directly into the szDLLName variable as all this code
// is UNICODE.
if ( TRUE == pDE->u.LoadDll.fUnicode )
{
// Occasionally, you can't read the whole buffer that
// contains the name so I need to step down until
// I can be sure there's no name at all.
DWORD dwSize = MAX_PATH * sizeof ( TCHAR ) ;
do
{
bRet = DBG_ReadProcessMemory ( hProcess ,
lpPtr ,
szDLLName ,
dwSize ,
&dwBytesRead ) ;
dwSize = dwSize - 20 ;
}
while ( ( FALSE == bRet ) && ( dwSize > 20 ) ) ;
}
else
{
// Read the ANSI string and convert it to UNICODE.
char szAnsiName[ MAX_PATH ] ;
bRet = DBG_ReadProcessMemory ( hProcess ,
lpPtr ,
szAnsiName ,
MAX_PATH ,
&dwBytesRead ) ;
ASSERT ( TRUE == bRet ) ;
if ( TRUE == bRet )
{
BSUAnsi2Wide ( szAnsiName , szDLLName , MAX_PATH ) ;
}
}
}
}
// If I could not get the DLL name, I'll resort to seeing if get it
// with GetModuleFileNameEx. If that can't get it. We've got
// trouble in River City. Interestingly, you can't use
// GetModuleFileNameEx except if the above fails. What you're
// seeing if you can't get the filename is a rebased DLL.
if ( _T ( ' ' ) == szDLLName[ 0 ] )
{
DWORD dwRet > GetModuleFileNameEx ( pData->GetProcessHandle ( ) ,
(HMODULE)pDE->u.LoadDll.lpBaseOfDll ,
szDLLName ,
MAX_PATH ) ;
if ( 0 == dwRet )
{
// Fill the final DLL name with something.
_tcscpy ( szDLLName ,
_T ( "UNABLE TO EXTRACT DLL NAME!!" ) ) ;
}
}
// Upper case the name as that's the way I like it (uuh, uuh).
_tcsupr ( szDLLName ) ;
IMAGEHLP_MODULE64 stModInfo ;
// Load the module into the symbol engine.
pData->SymLoadModule ( pDE->u.LoadDll.hFile ,
szDLLName ,
pDE->u.LoadDll.lpBaseOfDll ) ;
FillModuleInfo ( pData , pDE->u.LoadDll.lpBaseOfDll , &stModInfo );
DWORD dwRet = pUserClass->LoadDllEvent ( pDE->dwProcessId ,
pDE->dwThreadId ,
pDE->u.LoadDll ,
szDLLName ,
stModInfo ) ;
return ( dwRet ) ;
}
Bonjour,
TigrouMeow a écrit :
Bonjour,
J'aimerais connaitre les DLL utilisés par certains exécutables, pour cela
je m'attache à l'exe en tant que debugger et je fouine
LOAD_DLL_DEBUG_INFO
quand je reçois un message de debug pour ça.
Par contre dans cette structure impossible de chopper le nom de la dll
ou du fichier ! Comment faire simplement?
Tu devrais lire le livre "Debugging Applications for Microsoft® .NET and
Microsoft Windows®", de John Robbins.
Je n'ai pas regardé super en détail, mais je crois que ce bout de code
issu du code associé à son bouquin te correspond (en principe on peut
réutiliser son code, alors j'espère que je ne commet pas d'infraction en
le postant :-) ) :
Sur réception de LOAD_DLL_DEBUG_EVENT, il fait :
static
DWORD LoadDllDebugEvent ( CDebugBaseUser * pUserClass ,
LPDEBUGGEEINFO pData ,
LPDEBUG_EVENT pDE )
{
TCHAR szDLLName[ MAX_PATH ] ;
szDLLName[ 0 ] = _T ( ' ' ) ;
BOOL bRet = TRUE ;
// If NTDLL.DLL has not come in, in essense this is the first
// DLL into the process, I can't look into the debuggee to get
// the full path. NTDLL.DLL is special and on W2K, the value
// passed in the lpImageName just points to zero. On XP, it
// points to just "ntdll.dll" so I need to hunt it down.
if ( FALSE == pData->GetSeenNTDLLLoad ( ) )
{
// Mark that I've seen it.
pData->SetSeenNTDLLLoad ( ) ;
// As I am debugging locally, get the Windows directory.
UINT uiLen = GetWindowsDirectory ( szDLLName , MAX_PATH ) ;
ASSERT ( uiLen > 0 ) ;
// Whack on the backslash.
szDLLName[ uiLen ] = _T ( '\' ) ;
uiLen++ ;
szDLLName[ uiLen ] = _T ( ' ' ) ;
_tcscpy ( szDLLName + uiLen , _T ( "NTDLL.DLL" ) ) ;
}
else
{
// The value in lpImageName is a pointer to the full path
// and name of the DLL being loaded. The address is in the
// debuggee address space.
LPCVOID lpPtr = 0 ;
DWORD dwBytesRead = 0 ;
HANDLE hProcess = pData->GetProcessHandle ( ) ;
bRet = DBG_ReadProcessMemory ( hProcess ,
pDE->u.LoadDll.lpImageName ,
&lpPtr ,
sizeof ( LPCVOID ) ,
&dwBytesRead ) ;
ASSERT ( TRUE == bRet ) ;
if ( ( TRUE == bRet ) && ( 0 != lpPtr ) )
{
// If the name in the debuggee is UNICODE, I can read it
// directly into the szDLLName variable as all this code
// is UNICODE.
if ( TRUE == pDE->u.LoadDll.fUnicode )
{
// Occasionally, you can't read the whole buffer that
// contains the name so I need to step down until
// I can be sure there's no name at all.
DWORD dwSize = MAX_PATH * sizeof ( TCHAR ) ;
do
{
bRet = DBG_ReadProcessMemory ( hProcess ,
lpPtr ,
szDLLName ,
dwSize ,
&dwBytesRead ) ;
dwSize = dwSize - 20 ;
}
while ( ( FALSE == bRet ) && ( dwSize > 20 ) ) ;
}
else
{
// Read the ANSI string and convert it to UNICODE.
char szAnsiName[ MAX_PATH ] ;
bRet = DBG_ReadProcessMemory ( hProcess ,
lpPtr ,
szAnsiName ,
MAX_PATH ,
&dwBytesRead ) ;
ASSERT ( TRUE == bRet ) ;
if ( TRUE == bRet )
{
BSUAnsi2Wide ( szAnsiName , szDLLName , MAX_PATH ) ;
}
}
}
}
// If I could not get the DLL name, I'll resort to seeing if get it
// with GetModuleFileNameEx. If that can't get it. We've got
// trouble in River City. Interestingly, you can't use
// GetModuleFileNameEx except if the above fails. What you're
// seeing if you can't get the filename is a rebased DLL.
if ( _T ( ' ' ) == szDLLName[ 0 ] )
{
DWORD dwRet > GetModuleFileNameEx ( pData->GetProcessHandle ( ) ,
(HMODULE)pDE->u.LoadDll.lpBaseOfDll ,
szDLLName ,
MAX_PATH ) ;
if ( 0 == dwRet )
{
// Fill the final DLL name with something.
_tcscpy ( szDLLName ,
_T ( "UNABLE TO EXTRACT DLL NAME!!" ) ) ;
}
}
// Upper case the name as that's the way I like it (uuh, uuh).
_tcsupr ( szDLLName ) ;
IMAGEHLP_MODULE64 stModInfo ;
// Load the module into the symbol engine.
pData->SymLoadModule ( pDE->u.LoadDll.hFile ,
szDLLName ,
pDE->u.LoadDll.lpBaseOfDll ) ;
FillModuleInfo ( pData , pDE->u.LoadDll.lpBaseOfDll , &stModInfo );
DWORD dwRet = pUserClass->LoadDllEvent ( pDE->dwProcessId ,
pDE->dwThreadId ,
pDE->u.LoadDll ,
szDLLName ,
stModInfo ) ;
return ( dwRet ) ;
}
Bonjour,
TigrouMeow a écrit :Bonjour,
J'aimerais connaitre les DLL utilisés par certains exécutables, pour cela
je m'attache à l'exe en tant que debugger et je fouine
LOAD_DLL_DEBUG_INFO
quand je reçois un message de debug pour ça.
Par contre dans cette structure impossible de chopper le nom de la dll
ou du fichier ! Comment faire simplement?
Tu devrais lire le livre "Debugging Applications for Microsoft® .NET and
Microsoft Windows®", de John Robbins.
Je n'ai pas regardé super en détail, mais je crois que ce bout de code
issu du code associé à son bouquin te correspond (en principe on peut
réutiliser son code, alors j'espère que je ne commet pas d'infraction en
le postant :-) ) :
Sur réception de LOAD_DLL_DEBUG_EVENT, il fait :
static
DWORD LoadDllDebugEvent ( CDebugBaseUser * pUserClass ,
LPDEBUGGEEINFO pData ,
LPDEBUG_EVENT pDE )
{
TCHAR szDLLName[ MAX_PATH ] ;
szDLLName[ 0 ] = _T ( ' ' ) ;
BOOL bRet = TRUE ;
// If NTDLL.DLL has not come in, in essense this is the first
// DLL into the process, I can't look into the debuggee to get
// the full path. NTDLL.DLL is special and on W2K, the value
// passed in the lpImageName just points to zero. On XP, it
// points to just "ntdll.dll" so I need to hunt it down.
if ( FALSE == pData->GetSeenNTDLLLoad ( ) )
{
// Mark that I've seen it.
pData->SetSeenNTDLLLoad ( ) ;
// As I am debugging locally, get the Windows directory.
UINT uiLen = GetWindowsDirectory ( szDLLName , MAX_PATH ) ;
ASSERT ( uiLen > 0 ) ;
// Whack on the backslash.
szDLLName[ uiLen ] = _T ( '' ) ;
uiLen++ ;
szDLLName[ uiLen ] = _T ( ' ' ) ;
_tcscpy ( szDLLName + uiLen , _T ( "NTDLL.DLL" ) ) ;
}
else
{
// The value in lpImageName is a pointer to the full path
// and name of the DLL being loaded. The address is in the
// debuggee address space.
LPCVOID lpPtr = 0 ;
DWORD dwBytesRead = 0 ;
HANDLE hProcess = pData->GetProcessHandle ( ) ;
bRet = DBG_ReadProcessMemory ( hProcess ,
pDE->u.LoadDll.lpImageName ,
&lpPtr ,
sizeof ( LPCVOID ) ,
&dwBytesRead ) ;
ASSERT ( TRUE == bRet ) ;
if ( ( TRUE == bRet ) && ( 0 != lpPtr ) )
{
// If the name in the debuggee is UNICODE, I can read it
// directly into the szDLLName variable as all this code
// is UNICODE.
if ( TRUE == pDE->u.LoadDll.fUnicode )
{
// Occasionally, you can't read the whole buffer that
// contains the name so I need to step down until
// I can be sure there's no name at all.
DWORD dwSize = MAX_PATH * sizeof ( TCHAR ) ;
do
{
bRet = DBG_ReadProcessMemory ( hProcess ,
lpPtr ,
szDLLName ,
dwSize ,
&dwBytesRead ) ;
dwSize = dwSize - 20 ;
}
while ( ( FALSE == bRet ) && ( dwSize > 20 ) ) ;
}
else
{
// Read the ANSI string and convert it to UNICODE.
char szAnsiName[ MAX_PATH ] ;
bRet = DBG_ReadProcessMemory ( hProcess ,
lpPtr ,
szAnsiName ,
MAX_PATH ,
&dwBytesRead ) ;
ASSERT ( TRUE == bRet ) ;
if ( TRUE == bRet )
{
BSUAnsi2Wide ( szAnsiName , szDLLName , MAX_PATH ) ;
}
}
}
}
// If I could not get the DLL name, I'll resort to seeing if get it
// with GetModuleFileNameEx. If that can't get it. We've got
// trouble in River City. Interestingly, you can't use
// GetModuleFileNameEx except if the above fails. What you're
// seeing if you can't get the filename is a rebased DLL.
if ( _T ( ' ' ) == szDLLName[ 0 ] )
{
DWORD dwRet > GetModuleFileNameEx ( pData->GetProcessHandle ( ) ,
(HMODULE)pDE->u.LoadDll.lpBaseOfDll ,
szDLLName ,
MAX_PATH ) ;
if ( 0 == dwRet )
{
// Fill the final DLL name with something.
_tcscpy ( szDLLName ,
_T ( "UNABLE TO EXTRACT DLL NAME!!" ) ) ;
}
}
// Upper case the name as that's the way I like it (uuh, uuh).
_tcsupr ( szDLLName ) ;
IMAGEHLP_MODULE64 stModInfo ;
// Load the module into the symbol engine.
pData->SymLoadModule ( pDE->u.LoadDll.hFile ,
szDLLName ,
pDE->u.LoadDll.lpBaseOfDll ) ;
FillModuleInfo ( pData , pDE->u.LoadDll.lpBaseOfDll , &stModInfo );
DWORD dwRet = pUserClass->LoadDllEvent ( pDE->dwProcessId ,
pDE->dwThreadId ,
pDE->u.LoadDll ,
szDLLName ,
stModInfo ) ;
return ( dwRet ) ;
}
Et ca
c'est super facile, puisque même AMcD y arrive :-)
Et ca
c'est super facile, puisque même AMcD y arrive :-)
Et ca
c'est super facile, puisque même AMcD y arrive :-)
En fait, je dois absolument connaitre le chargement et déchargement des
utilisés par le programme... par exemple quand on ouvre la boite de
MFC de l'ouverture de fichier, il y a 5 DLL qui se chargent et à la
fermeture
elles se ferment.
En fait, je dois absolument connaitre le chargement et déchargement des
utilisés par le programme... par exemple quand on ouvre la boite de
MFC de l'ouverture de fichier, il y a 5 DLL qui se chargent et à la
fermeture
elles se ferment.
En fait, je dois absolument connaitre le chargement et déchargement des
utilisés par le programme... par exemple quand on ouvre la boite de
MFC de l'ouverture de fichier, il y a 5 DLL qui se chargent et à la
fermeture
elles se ferment.
"TigrouMeow" wrote in message
news:423e9ece$0$21811$En fait, je dois absolument connaitre le chargement et déchargement des
DLLutilisés par le programme... par exemple quand on ouvre la boite de
dialogueMFC de l'ouverture de fichier, il y a 5 DLL qui se chargent et à la
fermeture
elles se ferment.
Ha pour les DLL dynamiquement chargés, lors de l'exécution du program,
faut
faire autrement... Par exemple vous loadez votre appli dans VC++ et vous
la
lancez (F5), le debugger se mettra en route automatiquement, la liste des
DLL chargé s'affiche dans la VIEW / OUTPUT.
"TigrouMeow" <TigrouMeowMEOW@OnLineONLINE.Fr> wrote in message
news:423e9ece$0$21811$626a14ce@news.free.fr...
En fait, je dois absolument connaitre le chargement et déchargement des
DLL
utilisés par le programme... par exemple quand on ouvre la boite de
dialogue
MFC de l'ouverture de fichier, il y a 5 DLL qui se chargent et à la
fermeture
elles se ferment.
Ha pour les DLL dynamiquement chargés, lors de l'exécution du program,
faut
faire autrement... Par exemple vous loadez votre appli dans VC++ et vous
la
lancez (F5), le debugger se mettra en route automatiquement, la liste des
DLL chargé s'affiche dans la VIEW / OUTPUT.
"TigrouMeow" wrote in message
news:423e9ece$0$21811$En fait, je dois absolument connaitre le chargement et déchargement des
DLLutilisés par le programme... par exemple quand on ouvre la boite de
dialogueMFC de l'ouverture de fichier, il y a 5 DLL qui se chargent et à la
fermeture
elles se ferment.
Ha pour les DLL dynamiquement chargés, lors de l'exécution du program,
faut
faire autrement... Par exemple vous loadez votre appli dans VC++ et vous
la
lancez (F5), le debugger se mettra en route automatiquement, la liste des
DLL chargé s'affiche dans la VIEW / OUTPUT.
Vincent Burel wrote:
Désolé mais je n'ai pas apprécié qu'on me traite d'intégriste, de raciste
d'ayatollah. Je n'ai toujours pas reçu d'excuse.
Vincent Burel wrote:
Désolé mais je n'ai pas apprécié qu'on me traite d'intégriste, de raciste
d'ayatollah. Je n'ai toujours pas reçu d'excuse.
Vincent Burel wrote:
Désolé mais je n'ai pas apprécié qu'on me traite d'intégriste, de raciste
d'ayatollah. Je n'ai toujours pas reçu d'excuse.
Par contre j'aurais bien aimé ce code (car c'est sur que le mien sous
Windows
95 ne passera pas et renverra rien), mais je sais pas du tout à quoi
correspond
CDebugBaseUser ?
Par contre j'aurais bien aimé ce code (car c'est sur que le mien sous
Windows
95 ne passera pas et renverra rien), mais je sais pas du tout à quoi
correspond
CDebugBaseUser ?
Par contre j'aurais bien aimé ce code (car c'est sur que le mien sous
Windows
95 ne passera pas et renverra rien), mais je sais pas du tout à quoi
correspond
CDebugBaseUser ?