1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
unit UnitClavierVirtuelWindows;
interface
uses FMX.forms, FMX.Platform, FMX.Platform.Win, FMX.Types, Winapi.Windows,
System.Classes, System.Types, System.SysUtils, System.UITypes, FMX.Dialogs,
FMX.Objects, ShellApi, EncdDecd, Messages;
type
TClavierVirtuelWindows = class
private
HandleClavier: Integer;
public
procedure Afficher;
procedure Cacher;
constructor Create;
end;
function ClavierVirtuelWindows: TClavierVirtuelWindows;
implementation
const
TabtipExe: string = 'C:\Program Files\Common Files\Microsoft Shared\ink\Tabtip.exe';
var
FClavierVirtuelWindows: TClavierVirtuelWindows;
function ClavierVirtuelWindows: TClavierVirtuelWindows;
begin
if not Assigned(FClavierVirtuelWindows) then
FClavierVirtuelWindows := TClavierVirtuelWindows.Create;
Result := FClavierVirtuelWindows;
end;
{ TClavierVirtuelWindows }
procedure TClavierVirtuelWindows.Afficher;
var
SEInfo: TShellExecuteInfo;
begin
FillChar(SEInfo, SizeOf(SEInfo), 0);
SEInfo.cbSize := SizeOf(TShellExecuteInfo);
with SEInfo do
begin
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := FmxHandleToHWND(Screen.ActiveForm.Handle);
lpFile := PChar(TabtipExe);
lpDirectory := PChar('');
nShow := SW_SHOWNORMAL;
end;
if not ShellExecuteEx(@SEInfo) then
ShowMessage('Erreur au lancement du clavier virtuel');
end;
procedure TClavierVirtuelWindows.Cacher;
var
Retour: Cardinal;
H: Integer;
begin
H := FindWindow(PChar('IPTip_Main_Window'), nil);
PostMessage(H, WM_SYSCOMMAND, SC_CLOSE, 0);
end;
constructor TClavierVirtuelWindows.Create;
begin
inherited;
HandleClavier := 0;
end;
initialization
FClavierVirtuelWindows := nil;
finalization
if Assigned(FClavierVirtuelWindows) then
FClavierVirtuelWindows.Free;
end. |
Partager