Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   W7/64bit: osk.exe mit ShellExecute starten (https://www.delphipraxis.net/160879-w7-64bit-osk-exe-mit-shellexecute-starten.html)

iphi 6. Jun 2011 08:29

W7/64bit: osk.exe mit ShellExecute starten
 
Hallo,

weiß jemand eine Lösung, wie man das virtuelle Keyboard von Windows (osk.exe) aus Delphi heraus in Win7/64 bit starten kann?

ShellExecute geht für osk.exe auf W7/64bit nicht:
Code:
ShellExecute(Handle,'open', 'osk.exe',nil, nil, SW_SHOWNORMAL) ;
=> "Windows Fehler Meldung: Das virtuelle Keyboard kann nicht gestartet werden."

Auf XP geht das hingegen problemlos.

uligerhardt 6. Jun 2011 08:48

AW: W7/64bit: osk.exe mit ShellExecute starten
 
Zitat:

Zitat von iphi (Beitrag 1104767)
ShellExecute geht für osk.exe auf W7/64bit nicht:
Code:
ShellExecute(Handle,'open', 'osk.exe',nil, nil, SW_SHOWNORMAL) ;
=> "Windows Fehler Meldung: Das virtuelle Keyboard kann nicht gestartet werden."

Ich hab beim Googeln folgendes gefunden:
http://blog.delphi-jedi.net/2010/11/...creenkeyboard/
http://blog.delphi-jedi.net/2008/05/...ss-and-oskexe/

HTH,
Uli.

himitsu 6. Jun 2011 12:54

AW: W7/64bit: osk.exe mit ShellExecute starten
 
PS: Seit mindestens D2009 (oder war's D2010) gibt es im Delphi auch eine eigene Bildschirmtastaturkomponente.
In den JEDI ist (glaub ich) auch Eine drin und ebenfalls gibt es soeine Komponente von TMS (AdvTouchKeyboard).

(falls jemand auch mal nicht direkt das OSK nutzen möchte)

ULIK 6. Jun 2011 13:20

AW: W7/64bit: osk.exe mit ShellExecute starten
 
Hallo iphi,

unter W7 schau Dir mal das ITextInputPanel interface an. Dazu mußt Du das Microsoft PenInputPanel als Typbibliothek importieren und Dir so die Interface-Unit erstellen lassen.
Damit funktioniert das eigentlich ganz gut.

Hier mal etwas Code:
Delphi-Quellcode:
    try
      FTextInputPanel := CoTextInputPanel.Create;
      if FTextInputPanel <> nil then
      begin
        SiUnit.LogDebug('Interface created');
        FTextInputPanel.Set_AttachedEditWindow(AEditorHandle);
        FTextInputPanel.Set_DefaultInPlaceState(InPlaceState_Expanded);
        FTextInputPanel.Set_DefaultInputArea(PanelInputArea_Keyboard);
        FTextInputPanel.Set_InPlaceVisibleOnFocus(Integer(true));
        FTextInputPanel.Set_PreferredInPlaceDirection(InPlaceDirection_Top);
      end;
    except
      on E: Exception do
      begin
        if SiUnit.IsOn(lvDebug) then
          SiUnit.LogException(E, 'Creating TextInputPanel Interface failed');
      end;
    end;
Damit springt das Keyboard an, sobald Du in ein Editfeld gehst.


Grüße,
Uli

iphi 6. Jun 2011 18:51

AW: W7/64bit: osk.exe mit ShellExecute starten
 
Hallo Uli,

Zitat:

unter W7 schau Dir mal das ITextInputPanel interface an
Das hört sich interessant an! Gibt es dazu eine Delphi-Komponente?

Irgendwie stehe ich mit den Jedi-Komponenten auf Kriegsfuss.
Z.B, übersetzt die JwaShlOj.pas nicht, weil in untiger Zeile die Unit nicht gefunden wird:
Delphi-Quellcode:
uses
...
CommCtrl, {$IFDEF DELPHI6_UP}msxml,{$ENDIF DELPHI6_UP}
Wo bekomme ich denn die msxml.dcu her?

Zitat:

PS: Seit mindestens D2009 (oder war's D2010) gibt es im Delphi auch eine eigene Bildschirmtastaturkomponente.
Ich habe Delphi6 Personal. Kennt jemand eine Freeware-Tastaturkomponente dafür?

Danke, Thomas

himitsu 6. Jun 2011 19:35

AW: W7/64bit: osk.exe mit ShellExecute starten
 
Wenn die MSXML-Unit fehlt, dann kannst/mußt du sie selber importieren.

Irgendwo im Delphi-Menü gibt es einen Punkt "Komponente importieren", wo du dir dann eine Typbibliothek ala "Microsoft XML ..." importierst und die erstellte PAS entsprechend abspeicherst.

ULIK 6. Jun 2011 20:03

AW: W7/64bit: osk.exe mit ShellExecute starten
 
Fertige Delphi Komponente kenn ich für ITextInputPanel nicht. Aber Du mußt nur die entsprechende Typbibliothek importieren (das sollte auch mit D6 gehen).
Die Dll nach der Du schauen mußt heißt Microsoft PenInputPanel (tiptis.dll, wenn mich mein Gedächtnis nicht täuscht.) Ansonsten kann ich Dir morgen mal die von Delphi 2007 erzeugte Unit schicken. Könnte vieleicht auch noch funktionieren.

Grüße,
Uli

Steve1024 7. Jun 2011 08:46

AW: W7/64bit: osk.exe mit ShellExecute starten
 
Ggf kann man das ShellExecute auch mit ausgeschaltetem WOW64 auprobieren. Da gibt es einen Windows Befehl. Mit diesem kann man die WOW64 Ordnerumleitungen ausschalten und somit wird dann die 64bit Version der Tastatur gestartet.
Wenn meine Vermutung richtig liegt, ist das ggf ein 32bit/64bit Problem.

Leider kenn ich den genauen Befehl gerade nicht (irgendwas mit DisableWOW64FolderRedirection oder so). Aber die MSDN hilft da gerne :-)

Viel Glück noch.

iphi 9. Jun 2011 09:57

AW: W7/64bit: osk.exe mit ShellExecute starten
 
Zitat:

Aber Du mußt nur die entsprechende Typbibliothek importieren (das sollte auch mit D6 gehen).
Die Dll nach der Du schauen mußt heißt Microsoft PenInputPanel (tiptis.dll, wenn mich mein Gedächtnis nicht täuscht.) Ansonsten kann ich Dir morgen mal die von Delphi 2007 erzeugte Unit schicken. Könnte vieleicht auch noch funktionieren.
Hallo Uli,

danke für die Tipps und das Angebot.

Ich habe nur Delphi6 Personal und bisher keine Möglichkeit gefunden, Type Libraries zu importieren. Da müsste es doch einen Wizzard geben. Wenn ja, wo müsste sich der denn verstecken?

Und ja, bitte schicke mir die von Delphi 2007 erzeugte Unit zu.

Gruß, Thomas

DeddyH 9. Jun 2011 10:01

AW: W7/64bit: osk.exe mit ShellExecute starten
 
IIRC war das in Delphi 6 unter "Komponente - ActiveX importieren", aus der Liste dann das Microsoft PenInputPanel auswählen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:44 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz