AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de Windows / Funciones varias de Windows
  • Controles realizados
  • Gestión de errores
  • Parámetros que se deben pasar al método del objeto COM
  • Pasar una cadena a un método de objeto COM o recuperar una cadena después de la llamada a un método de objeto COM
  • Pasar una estructura que contiene una cadena a un método de objeto COM
  • Procedure llamó en CallBack
  • Varios
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Ejecuta un método de una interfaz de un objeto COM instanciado por COMCreateInstance.
Ejemplo
// Initialize a Unicode string containing 260 characters
WallPaper is UNICODE string
WallPaper = AnsiToUnicode(RepeatString(" ", 260))

// Declare a COMObject variable
ActiveDesktop is COMObject

// Retrieve the interface for handling the desktop
ActiveDesktop = COMCreateInstance("75048700-EF1F-11D0-9888-006097DEACF9", ...
"F490EB00-1240-11D1-9888-006097DEACF9")
IF ErrorOccurred = False THEN
// Retrieve the image of the desktop wallpaper
COMCallMethod(ActiveDesktop, 4, &WallPaper, 260, 1)

Info("The image of the desktop is: " + UnicodeToAnsi(WallPaper))
END
Sintaxis

Usando el número de método Ocultar los detalles

<Result> = COMCallMethod(<COM Object> , <Method number> [, <Parameter 1> [... [, <Parameter N>]]])
<Result>: Un entero de 4 bytes en 32 bits, un entero de 8 bytes en 64 bits
Resultado de la ejecución del método. Este resultado puede ser un código de error.
La clase de este resultado depende de la ejecución del método. Para más detalles, consulte la documentación sobre el método.
El resultado del método no se recuperará si su tamaño excede el tamaño del entero definido para la plataforma.
<COM Object>: COMObject Variable
Interfaz del objeto COM devuelto por COMCreateInstance.
<Method number>: Integro
Número de orden del método en el tabla de métodos virtuales.
ATENCIÓN:
  • el número de orden tiene en cuenta las clases base
  • el número de orden empieza por 0.
<Parameter 1>: El tipo correspondiente al parámetro
Primer parámetro que se pasará al método. Estos parámetros y los parámetros esperados por el método deben ser del mismo tipo. Se puede utilizar:
  • los tipos "simples" (véanse las Observaciones),
  • las estructuras (ver las Observaciones),
  • un nombre de WLanguage Procedure. Esta Procedure se llamará por el método (ver las Notas).
<Parameter N>: El tipo correspondiente al parámetro
Nth parámetro que se pasará al método. Estos parámetros y los parámetros esperados por el método deben ser del mismo tipo. Se puede utilizar:
  • los tipos "simples" (véanse las Observaciones),
  • las estructuras (ver las Observaciones),
  • un nombre de WLanguage Procedure. Esta Procedure se llamará por el método (ver las Notas).

Usando una API description Variable Ocultar los detalles

<Result> = COMCallMethod(<COM Object> , <API to run> [, <Parameter 1> [... [, <Parameter N>]]])
<Result>: Un entero de 4 bytes en 32 bits, un entero de 8 bytes en 64 bits
Resultado de la ejecución del método. Este resultado puede ser un código de error. La clase de este resultado depende de la ejecución del método. Para más detalles, consulte la documentación sobre el método.
El resultado del método no se recuperará si su tamaño excede el tamaño del entero definido para la plataforma.
<COM Object>: COMObject Variable
Interfaz del objeto COM devuelto por COMCreateInstance.
<API to run>: API description Variable
API description Variable que contiene las características del método a ejecutar.
<Parameter 1>: El tipo correspondiente al parámetro
Primer parámetro que se pasará al método. Estos parámetros y los parámetros esperados por el método deben ser del mismo tipo. Se puede utilizar:
  • los tipos "simples" (véanse las Observaciones),
  • las estructuras (ver las Observaciones),
  • un nombre de WLanguage Procedure. Esta Procedure se llamará por el método (ver las Notas).
<Parameter N>: El tipo correspondiente al parámetro
Nth parámetro que se pasará al método. Estos parámetros y los parámetros esperados por el método deben ser del mismo tipo. Se puede utilizar:
  • los tipos "simples" (véanse las Observaciones),
  • las estructuras (ver las Observaciones),
  • un nombre de WLanguage Procedure. Esta Procedure será llamada por un método (ver Notas).
Observaciones

Controles realizados

Método COMCall es protected contra los "Fallos de protección general" en el método llamado. Sin embargo, un error WLanguage se activa si se produce este tipo de error.

Gestión de errores

Al ejecutar los métodos, si el resultado devuelto corresponde a un error, utilice la función ErrorInfo (con la constante errSystemCode o errSystemMessage) para obtener los detalles del error.

Parámetros que se deben pasar al método del objeto COM

Estos parámetros y los parámetros esperados por el método deben tener el mismo tipo.
Los tipos disponibles son los siguientes:
  • Los tipos "simples" (entero, real y booleano). El uso de otro tipo de WLanguage desencadena un error de WLanguage.
    Si el método a ejecutar espera un puntero de Windows o manipular, utilice un system integer.
    Si el método a ejecutar espera una Address, utilice el operador &.
  • Los tipos "cadena.
  • Los tipos de estructura.
  • Un nombre de WLanguage Procedure. Esta Procedure será llamada por el método del objeto COM (ver el párrafo siguiente).
    Los parámetros dependen de la ejecución del método. Consulte la documentación sobre este método para obtener más detalles.

Pasar una cadena a un método de objeto COM o recuperar una cadena después de la llamada a un método de objeto COM

  1. En el parámetro de entrada, utilice el tipo de cadena. Por ejemplo:
    sString is string
    COMCallMethod(<Object>, <Method number>, sString)
  2. En el parámetro de salida, el lenguaje C no puede gestionar fácilmente las cadenas dinámicas. Por lo tanto, debes hacerlo:
    • definir un tamaño máximo, con el tipo "String on. Por ejemplo:
      sString is string on 100
      COMCallMethod(<Object>, <Method number>, sString)
      // in Method in C:
      // strncpy(PointerInC, "Test", 100)
    • recuperar las direcciones de las cadenas en C (sin embargo, en este caso, la sección de código en C debe "preservar" las cadenas devueltas), luego transferir la cadena a una cadena Variable con StringRetrieve. Por ejemplo:
      nStringAddress is system int
      COMCallMethod(<Object>, <Method number>, &nStringAddress)
      sString is string
      sString = StringRetrieve(nStringAddress, srASCIIZAddress)
      // in Method in C: *PointerInC = "Test"
  3. En el valor de retorno, recuperar las direcciones de las cadenas en C (sin embargo, en este caso, la sección de código en C debe "preservar" las cadenas devueltas), a continuación, transferir la cadena en una cadena Variable con StringRetrieve. Por ejemplo:
    nStringAddress is system int
    nStringAddress = COMCallMethod(<Object>, <Method number>)
    sString is string
    sString = StringRetrieve(nStringAddress, srASCIIZAddress)
    // in Method in C: Return PointerInC

Pasar una estructura que contiene una cadena a un método de objeto COM

  1. En la entrada se debe utilizar el siguiente código:
    Struct is structure
    sString is string
    END
    AStruct is Struct
    COMCallMethod(<Object>, <Method number>, &AStruct)
  2. En salida, el lenguaje C no gestiona fácilmente las cadenas dinámicas. Por lo tanto, debes hacerlo:
    • definir un tamaño máximo y realizar una copy en la memoria de WLanguage. Por ejemplo:
      sString is string on 100
      Struct is structure
      aString is int
      END
      AStruct is Struct
      AStruct:aString = &sString
      COMCallMethod(<Object>, <Method number>, &AStruct)
      // in Method in C:
      // strncpy(StructInC->PointerInC, "Test", 100)
    • recuperar la Address de cadenas en C (sin embargo, en este caso, la sección de código en C debe "preservar" las cadenas devueltas). Por ejemplo:
      sString is string
      Struct is structure
      aString is int
      END
      AStruct is Struct
      COMCallMethod(<Object>, <Method number>, &AStruct)
      sString = StringRetrieve(AStruct:aString, srASCIIZAddress)
      // in Method in C: StructInC->PointerInC = "Test"

Procedure llamó en CallBack

Algunos métodos esperan la dirección de una "Callback" Procedure como parámetro: esta Procedure será llamada por el método del objeto COM.
Para usar una llamada de Procedure en WLanguage:
1. Cree la devolución de llamada Procedure en su proyecto
Para recuperar los parámetros, debe describir exactamente los parámetros esperados por la función "CallBack. De lo contrario, pueden producirse "fallos generales de protección"..
PROCEDURE <Procedure name> (<Param1> is <Type1>,<Param2> is <Type2>)
Observaciones:
  • Los tipos deben corresponder a los descritos en la documentación del objeto COM.
  • Los parámetros deben necesariamente ser pasados por valor. Para recuperar un parámetro de reference:
    1. Utilice un número entero.
    2. Con Transferencia, recupera o asigna el valor real.
2. Modifique la llamada al método en consecuencia.. Utilice la siguiente sintaxis:
COMCallMethod(<Object>, <Method number>, &<Name of CallBack procedure>)
WINDEVWEBDEV - Código ServidorReportes y ConsultasWindowsCódigo de Usuario (UMC)

Varios

  • Método COMCall no bloquea otros subprocesos.
  • Si el método llamado modifica los parámetros regionales del sistema, se restauran los parámetros regionales anteriores.
APIConfigure se utiliza para configurar el comportamiento de Default de esta función.
Componente: wd290vm.dll
Versión mínima requerida
  • Versión 15
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 21/12/2023

Señalar un error o enviar una sugerencia | Ayuda local