PDA

Ver la Versión Completa : Teclado en pantalla


glopez
20-12-2010, 20:02:48
Intento abrir el teclado en Pantalla (osk.exe) desde delphi 2007 y siempre me da el siguiente error "No se pudo iniciar el teclado en pantalla". Lo he intentado de varias formas:
ShellExecute(handle,'open',PChar('osk'),nil,nil,SW_SHOWNORMAL);
y con
Winexec(PChar('osk.exe'),SW_SHOWNORMAL);
y con el mismo resultado.
Desde el menu de inicio de windows me funciona perfectamente.
Mi sistema operativo es Windows 7 home 64 bits

Gracias.

ecfisa
21-12-2010, 01:23:31
Hola.

Copié y pegué tu código y me funcionó bién.
Puede ser que tengas deshabilitado el servicio correspondiente, que si mál no recuerdo, se configuraba desde el
Centro de accesibilidad. Si no, podés revisar el estado del servicio con msconfig o con services.msc .

Para salir de dudas probá ejecutar osk.exe desde la línea de comando, si funciona desde allí, tendría que funcionar
con ShellExcecute.

Saludos.

glopez
21-12-2010, 10:53:24
Desde la linea de comandos me funciona perfectamente, pero no desde delphi, he mirado la configuración del centro de accesibilidad y todo esta bien. Lo que he observado es que si el teclado de pantalla esta minimizado si lo muestra. Pero si lo cierro, cuando intento que lo muestre denuevo me da el error.

Saludos.

Neftali [Germán.Estévez]
21-12-2010, 11:06:48
Ambos códigos parecen correctos. Es más, los he probado con Delphi6 y funcionan sin problemas.
¿Tienes algun antivirus o similar que pueda estar interfiriendo?
¿Prueba a llamarlo pasándole el path completo?

glopez
21-12-2010, 16:05:27
He probado con el path completo y desactivando el antivirus pero me sigue haciendo lo mismo.

ecfisa
21-12-2010, 17:50:10
Hola.

Revisá este (http://blog.delphi-jedi.net/2008/05/17/the-case-of-shellexecute-shellexecuteex-createprocess-and-oskexe/) artículo, por ahí te orienta a una solución.

Saludos.

glopez
22-12-2010, 17:26:05
Gracias por todo a los dos, el problema venía por ahí. Si copio el fichero osk.exe que está en system32 en otro directorio y ejecuto delphi como administrador si me abre el teclado en pantalla. No he probado a desactivar el control de cuentas de windows. Pero ninguna de las soluciones me convencen por lo que me he decantado de usar mi propio teclado con los componentes que estan en el ftp del club delphi. Y parece que me va bien. De todas formas os agradezco enormente vuestra ayuda. Muchas gracias. De todas formas si conseguiis hacer mostrar el teclado en pantalla sin tener que ejecutar la aplicacion como administrador y sin tener que desactivar el control de cuentas no dudeis en decirmelo, ok.

Saludos.

ecfisa
23-12-2010, 05:25:16
Hola.

Una posibilidad que podés probar es poner a 'Usuarios' como propietario de osk.exe y darle todos los permisos:

.- Botón derecho sobre OSK.EXE
.- Propiedades->Seguridad->Opciones avanzadas->Propietario->Editar->Agregar->Avanzadas -> Buscar ahora (Seleccionar 'Usuarios')
.- Cerrar.
.- Abrir nuevamente , Editar y darle todos los permisos.

Si tenés XP, previamente tenés que ir a panel de control -> Opciones de carpeta y desactivar 'Utilizar uso compartido simple de archivos'.

Saludos.

LiAnTe-
10-05-2012, 09:47:02
para que te funcione en Windows 7 cuando llamas al osk metele la ruta entera y entonces si que funciona es decir... c:\\windows\system32\osk.exe

saludos