Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

FindWindow en LabWindows

Hola a todos,

se puede usar la funcion FindWindow() en LabWindows?

Uso el LabWindows 8.5

Gracias por toda respuesta.

Abel

0 kudos
Mensaje 1 de 2
2.724 Vistas

Hi Abel, puedes usar FindWindow en tus programas para obtener los window handles, simplemente tienes que incluir el windows.h en él.

Estas líneas muestran el uso del FindWindow para obtener el handle al programa sea por class name sea pro título de la ventana. El nombre de la clase del CVI lo he obtenido desde el programa mismo: deberías obtener el mismo handle en todas las instrucciones.

 

    int        hWnd, hWnd2, hWnd3;
    char    msg[512];

//  Esto me sirve para obtener la clase del programa, pasando por su identificativo en el sistema

//  int GetClassName (
//      HWND hWnd,           // handle to window
//      LPTSTR lpClassName,  // class name
//      int nMaxCount        // size of class name buffer
//  );
    hWnd = GetCVIWindowHandle ();
    GetClassName ((HWND)hWnd, msg,  511);

//  Aquí obtengo el handle desde el class name

//  HWND FindWindow (
//      LPCTSTR lpClassName,  // class name
//      LPCTSTR lpWindowName  // window name
//  );
    if (!(hWnd2 = (int)FindWindow (msg, NULL))) {

//      Ejemplo de muestra de un error

//      DWORD GetLastError(VOID);
//          DWORD FormatMessage(
//          DWORD dwFlags,      // source and processing options
//          LPCVOID lpSource,   // message source
//          DWORD dwMessageId,  // message identifier
//          DWORD dwLanguageId, // language identifier
//
          LPTSTR lpBuffer,    // message buffer
//
          DWORD nSize,        // maximum size of message buffer
//
          va_list *Arguments  // array of message inserts
//      );       
        FormatMessage (
            FORMAT_MESSAGE_FROM_SYSTEM,      // source and processing options
            NULL,   // message source
            GetLastError (),      // message identifier
            0,                     // language identifier
            msg,                // message buffer
            511,                // maximum size of message buffer
            0                    // array of message inserts
        );
    }

 

//  Aquí obtengo el handle desde el título de la ventana

    hWnd3 = (int)FindWindow (NULL, "Nombre programa");

 

//  Vamos a ver si los tres son iguales

    sprintf (msg, "GetCVIWindowHandle: %d\n\n", hWnd);
    sprintf (msg, "%sFindWindow from handle: %d\n", msg, hWnd2);
    sprintf (msg, "%sFindWindow from name: %d\n", msg, hWnd3);
    MessagePopup ("FindWindow", msg);

 



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 2 de 2
2.717 Vistas