![]() |
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:
=> "Windows Fehler Meldung: Das virtuelle Keyboard kann nicht gestartet werden."
ShellExecute(Handle,'open', 'osk.exe',nil, nil, SW_SHOWNORMAL) ;
Auf XP geht das hingegen problemlos. |
AW: W7/64bit: osk.exe mit ShellExecute starten
Zitat:
![]() ![]() HTH, Uli. |
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) |
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:
Damit springt das Keyboard an, sobald Du in ein Editfeld gehst.
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; Grüße, Uli |
AW: W7/64bit: osk.exe mit ShellExecute starten
Hallo Uli,
Zitat:
Zitat:
Z.B, übersetzt die JwaShlOj.pas nicht, weil in untiger Zeile die Unit nicht gefunden wird:
Delphi-Quellcode:
Wo bekomme ich denn die msxml.dcu her?
uses
... CommCtrl, {$IFDEF DELPHI6_UP}msxml,{$ENDIF DELPHI6_UP} Zitat:
Danke, Thomas |
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. |
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 |
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. |
AW: W7/64bit: osk.exe mit ShellExecute starten
Zitat:
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 |
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 04:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz