En Python pywin32, opera un formulario y obtiene los datos en el formulario. ¿Cómo se obtiene el valor del segundo parámetro en la función GetDlgItem?
No sé si lo habéis solucionado, pero he estado estudiando Python recientemente.
hwnd=win32gui.FindWindow() probablemente se use para obtener el identificador de la ventana
ctrl=win32gui.FindWindowEx(hwnd,None,'nombre de clase de ventana','texto del título '; ) Obtenga el identificador de control cuando se conozca el nombre de la clase de control o el nombre del control. Este texto de título no necesariamente existe, por lo que se utiliza el valor predeterminado Ninguno para obtener el identificador de control con el primer orden en el nombre de la clase de ventana.
Cuando usa b=win32gui.GetDlgItem(editar, ID de recurso), el resultado final es obtener el identificador. El identificador del recurso aquí es en realidad el ID de la ventana en spy++. La identificación no está disponible. Parece incorrecto aquí. Lo que obtienes probablemente son los subelementos en el control (si el control tiene subelementos, como el cuadro de edición en Combbox), supongo, pero no lo he probado. b=win32gui.GetDlgItem(hwnd, ID de ventana) es para obtener el identificador de un determinado control con un ID conocido
Si desea obtener el ID de un determinado control, entonces ctrlid=win32gui.GetDlgCtrlID( ctrl) Este es un control determinado. En el caso de un identificador de control, obtenga el ID de la ventana del control en la aplicación.
Si no conoce el identificador de control, probablemente pueda probar spy++ para obtener el ID de la ventana, convertir el ID de la ventana (esto es hexadecimal) a decimal y llevarlo a b=win32gui.GetDlgItem(hwnd). , ID de ventana) probablemente también pueda obtener el identificador de control.
De hecho, es la conversión entre tres funciones
ctrl=win32gui.FindWindowEx(hwnd,None,'edit',None) controlador de control
ctrlid = win32gui.GetDlgCtrlID(ctrl) ID de ventana del control
ctrl2=win32gui.GetDlgItem(hwnd,ctrlid) identificador de control
imprimir "%x" %ctrllist
print "%x" %ctrlid
print "%x" %ctrl
Salida para ver si los datos son consistentes con spy++. Entonces ctrl=ctrl2