Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con ShellExecute (https://www.clubdelphi.com/foros/showthread.php?t=94484)

Gregorio Cíber 29-02-2020 09:15:57

Problemas con ShellExecute
 
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.
Código Delphi [-]
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:
Código Delphi [-]
...
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 :)


La franja horaria es GMT +2. Ahora son las 23:56:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi