Suprimir el cuadro de error "No encuentra MYDLL.DLL"

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 111610
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Resumen
Al cargar explícitamente una dynamic-link biblioteca (DLL) mediante LoadLibrary(), Windows mostrará un cuadro de mensaje "error de archivo" con el error
No se puede encontrar MYDLL.DLL
donde MYDLL.DLL es el nombre de la DLL especificada en LoadLibrary() antes de abandonar LoadLibrary() si el archivo DLL no existe en la ruta de acceso de Windows. Para obtener más información acerca de la ruta de acceso de Windows, consulte el orden que se describe en la documentación de LoadLibrary() de búsqueda de Windows.

Es posible suprimir este mensaje de error para que se puede implementar un mensaje de error personalizado o de otro control de errores sin este cuadro de error de sistema. Para ello, llame al SetErrorMode() con SEM_NOOPENFILEERRORBOX antes de llamar a LoadLibrary(). LoadLibrary() devolverá significado 2 código de error "Archivo no se ha encontrado".
Más información
SetErrorMode() sólo afecta al modo de error de la tarea actual y no afecta a todo el sistema. El valor devuelto se puede utilizar para alternar el modo de error en distintas partes de una aplicación.

Para una DLL cargada implícitamente que puede faltar, el sistema mostrará el cuadro error mencionado anteriormente, si la aplicación se ejecuta desde el programa Administrador. Después de hacer clic en el botón Aceptar, aparece el siguiente mensaje:
No se puede encontrar archivo d:\path\myexe.exe (o uno de sus componentes).
Asegúrese de que el nombre de archivo y la ruta de acceso son correctos y que todas las bibliotecas requeridas están disponibles.
Desde el Administrador de archivos no aparece ningún cuadro de mensaje "error de archivo", pero el mensaje siguiente se muestra en su lugar:
Administrador de archivos no puede encontrar el archivo especificado (o uno de sus componentes).

Asegúrese de que la ruta de acceso y nombre de archivo son correctos y que todas las bibliotecas requeridas están disponibles.
Debido a que estos mensajes de error aparecen antes WinMain() de la aplicación se ejecute, SetErrorMode() no puede suprimir los cuadros mensaje de error para archivos DLL vinculadas implícitamente. Además, no hay ninguna forma de configurar Administrador de programas para suprimir el cuadro de mensaje "error de archivo".

Código de ejemplo

 { HINSTANCE hDLL; UINT uOldErrorMode; uOldErrorMode = SetErrorMode(SEM_NOOPENFILEERRORBOX); // Try to load DLL. hDLL = LoadLibrary("MYDLL.DLL"); if (hDLL == 2)    MessageBox(NULL, "MYDLL.DLL does not exist", "ERROR", MB_OK); else if (hDLL <= HINSTANCE_ERROR)    MessageBox(NULL, "Other problems loading MYDLL.DLL, "ERROR", MB_OK); else {    MessageBox(NULL, "MYDLL.DLL exists", "SUCCESS", MB_OK);    FreeLibrary(hDLL); } SetErrorMode(uOldErrorMode);  // Can restore error mode if desired. }				
3.10 3.00

Propiedades

Id. de artículo: 111610 - Última revisión: 02/01/2014 21:09:37 - Revisión: 3.0

Microsoft Windows Software Development Kit 3.0, Microsoft Windows Software Development Kit 3.1

  • kbnosurvey kbarchive kbmt kb16bitonly KB111610 KbMtes
Comentarios