2014-07-21 13 views

Odpowiedz

10

TTipMode jest zdefiniowane w pliku Controls.pas i służy do śledzenia stanu (otwartego lub zamkniętego) panelu wprowadzania tekstu dostępnego pod adresem TabTip.exe, który znajduje się w interfejsie ITextInputPanel.

procedure TWinControl.UpdateTIPStatus; 
begin 
    if Assigned(FTIPIntf) then 
    begin 
    if TipMode = tipOpen then SetTextInputPanelStatus(Self, True) 
    else if TipMode = tipClose then SetTextInputPanelStatus(Self, False); 
    end; 
end; 

Oto procedura SetTextInputPanelStatus że nazywa się od tej metody:

procedure SetTextInputPanelStatus(Control: TWinControl; OpenTIP: Boolean); 

    procedure InvokeTabTip; 
    const 
    DefaultTabTipPath = 'C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe'; 
    DefaultOnScreenKeyboardPath = 'C:\Windows\System32\OSK.exe'; 
    var 
    TabTipPath: string; 
    begin 
    TabTipPath := DefaultTabTipPath; 
    ShellExecute(0, 'open', PChar(TabTipPath), nil, nil, SW_SHOWNOACTIVATE); 
    end; 

    procedure OPenTip2; 
    begin 
    (Control.FTIPIntf as ITextInputPanel).SetInPlaceVisibility(1); // True 
    end; 

    procedure CloseTip; 
    begin 
    (Control.FTIPIntf as ITextInputPanel).SetInPlaceVisibility(0); // False 
    end; 

begin 
    if Assigned(Control.FTIPIntf) then 
    begin 
    if OpenTIP then OpenTip2 // InvokeTabTip 
    else CloseTip; 
    end; 
end; 

To pokazuje, że jeśli końcowy parametr (OpenTip) jest True, otwiera panel wprowadzania tekstu z linii poleceń do program (wykonane w OpenTip). Jeśli parametr jest False, zamyka to okno. Możesz zobaczyć okno wprowadzania tekstu, uruchamiając aplikację w lokalizacji określonej przez DefaultTabTipPath.

(Należy pamiętać, że kod dla InvokeTabTip, który zawiera tę stałą, uwzględnione powyżej, nigdy nie jest wykonywany, wywołanie do niego jest komentowane. Dzięki @SertacAkyuz za wskazanie tego. Zmontowałem, aby uwzględnić te informacje.)

+2

Czy to jest kod VCL? Twarda zakodowana ścieżka? Spodziewam się, że przynajmniej kod zajrzy do 'HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths \ TabTip.exe'. Nawet sam klucz nie jest tak mocno zakodowany: '% CommonProgramFiles% \ microsoft shared \ ink \ TabTip.exe' –

+2

@Sertac: Tak, obawiam się, że jest, prosto z VCL.Controls.Pas, około linii 13360, w XE6. –

+0

Wygląda na to, że i tak jest to martwy kod. –