PDA

Ver la Versión Completa : Problemas con ShellExecute


Gregorio Cíber
29-02-2020, 09:15:57
Hola amigos.
Tengo una vieja aplicación creada con Delphi6 funcionado correctamente.
Hace un tiempo tuve que modificarla e instale el compilador bajo Windows 10 y, con esfuerzos, logré poder compilar. Todo lo modificado funciona a excepción de una llamada al teclado virtual. Os pongo las distintas opciones que he probado a ver qué os parece:

Con osk.exe en C:\Windows\System32 la función ShellExecute devuelve 2, o sea, no lo encuentra.
ShellExecute (0, 'Open', 'osk.exe', '', '', SW_SHOWNORMAL);
ShellExecute (Handle, 'Open', 'osk.exe', '', '', SW_SHOWNORMAL);
ShellExecute (0, 'Open', 'osk.exe', '', 'C:\Windows\System32', SW_SHOWNORMAL);
ShellExecute (Handle, 'Open', 'osk.exe', '', 'C:\Windows\System32', SW_SHOWNORMAL);
Lo mismo ocurre si utilizo PChar

Si copio osk.exe en la carpeta de la aplicación, la función SellExecute devuelve 43, es decir, lo encuentra pero no lo pone en pantalla.

¿Alguna idea?

Gracias.

ecfisa
01-03-2020, 04:37:44
Hola.

Intenta de este modo:

...
implementation

uses Registry, ShellApi;

// Verifica si la clave existe, si no la crea
procedure EnableAutoInvoke;
var
R: TRegistry;
begin
R := TRegistry.Create;
try
R.RootKey := HKEY_CURRENT_USER;
R.OpenKey('Software\Microsoft\TabletTip\1.7', True);
R.WriteInteger('EnableDesktopModeAutoInvoke', 1);
R.CloseKey;
finally
R.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
EnableAutoInvoke; // Nesesario sólo una vez (o ninguna)
ShellExecute(0,
'runas',
'C:\Program Files\Common Files\microsoft shared\ink\tabtip.exe',
'',
'',
SW_SHOWNORMAL);
end;


Saludos :)

Gregorio Cíber
01-03-2020, 09:50:02
Gracias ecfisa. Voy a probarlo. LLevo horas luchando con esto y creo que no hay manera. El problema está en el direccionamiento que hace W10 64 bits a los programas de 32bits. Así que como este tema no lo domino, veo solución posible. De todas formas ahora mismo pruebo el código que aporteas y reportaré el resultado.


Muchas gracias.

Gregorio Cíber
02-03-2020, 13:10:04
No funciona. He decidido no perder más el tiempo con los caprichos del Sr. Puerta. Así que me he descargado un teclado virtual libre y funciona perfecto. Gracias a todos.

ecfisa
02-03-2020, 15:08:44
Hola.

Que extraño, lo hace perfecto en mi máquina con Windows 10 Home y Delphi 10.3. Alguna actualización tal vez...

Pero bueno, si ya yo lo solucionaste con una herramienta de tercero mejor ^\||/. Como ya lo dijiste, ese señor es muy caprichoso :D

Saludos :)