Seite 1 von 1

Onscreen Keyboard Windows 10

Verfasst: So, 13. Dez 2015 12:29
von Rudolf
Hallo,
versuche gerade eine Anwendung für Tablets mit Onscreen Keyboard zu machen, bei Windows 7 habe ich problemlos osk.exe via Runshell aufrufen können, unter Windows 10 bekomme ich mit Runshell einen Operating System 740 error. Habe die osk.exe schon ins Programmverzeichnis kopiert und bei den Eigenschaften als Administrator auführen eingestellt, hilft auch nichts. Ich kann die exe nicht mal im Explorer aufrufen, kann angegebenen Pfad nicht finden. Nur wenn ich über Ausführen osk.exe eingeben, erscheint die Tastatur. Habe UAC auch schon komplett abgeschalten ohne Erfolg.
Grüße
Rudolf

Re: Onscreen Keyboard Windows 10

Verfasst: So, 13. Dez 2015 20:58
von AUGE_OHR
Rudolf hat geschrieben:... unter Windows 10 bekomme ich mit Runshell einen Operating System 740 error.
64bit OS() ? such mal wie oft du OSK.EXE auf C: hast ...

Re: Onscreen Keyboard Windows 10

Verfasst: Mo, 14. Dez 2015 7:55
von Rudolf
Hallo Jimmy,
habe beide Versionen probiert, auch im SYSWOW64, kein Unterschied
Grüße
Rudolf

Re: Onscreen Keyboard Windows 10

Verfasst: Mo, 14. Dez 2015 11:38
von Tom
Der Prozess erfordert Administratorrechte.

Re: Onscreen Keyboard Windows 10

Verfasst: Mo, 14. Dez 2015 23:20
von AUGE_OHR
Rudolf hat geschrieben:habe beide Versionen probiert, auch im SYSWOW64, kein Unterschied
und hast du die Dateien verglichen ... ?

ich puzzle mit HOTPLUG.DLL rum und habe da das selbe Problem das ein 32bit Programm es nicht aufrufen kann.
auch wenn man explizit \SYSTEM32 angibst wirst man nach SYSWOW64 "umgeleitet"

eine Lösung war, statt Runshell(), CLASS TRunProcess von Pablo wo ich folgendes modifiziert habe

Code: Alles auswählen

INLINE CLASS METHOD _CreateProcess_(cUser,cPwd,app,cmd,pa,ta,ih,flags,env,cd,psi,ppi)
       DEFAULT pa :=  {12,0,0} ; DEFAULT ta :=  {12,0,0}
       if cUser == NIL            
          @Kernel32:Wow64EnableWow64FsRedirection(FALSE)   // disable bevor API Call
          nRet :=FpQCall( {"kernel32","CreateProcessA"} ,;
                          "__bo__pt__pt__pt__pt__bo__sl__pt__pt__pt__pt",;
                          app,cmd,pa,ta,ih,flags,env,cd,psi,@ppi ;
                        )
          @Kernel32:Wow64EnableWow64FsRedirection(TRUE)    // enable again
          return nRet
       end          
https://msdn.microsoft.com/en-us/librar ... 65744.aspx

Re: Onscreen Keyboard Windows 10

Verfasst: Di, 15. Dez 2015 9:25
von Rudolf
Hallo,
ich bin als Admin angemeldet, hab die EXE (beide probiert) in das Programmverzeichnis kopiert und diese Kopien aufgerufen und habe extra bei den Eigenschaften als Adminitrator auführen angegeben. Hilft alles nichts.
Werde mal trunprocess versuchen, aber mit den Admin Rechten alleine kann es auch nichts zu tun haben
Grüße
Rudolf

Re: Onscreen Keyboard Windows 10

Verfasst: Di, 15. Dez 2015 11:37
von Rudolf
Hallo Jimmy,
Deine Anpassung hilft leider auch nicht
Grüße
Rudolf

Re: Onscreen Keyboard Windows 10

Verfasst: Di, 15. Dez 2015 15:56
von AUGE_OHR
Rudolf hat geschrieben:Deine Anpassung hilft leider auch nicht
ich habe es nun nicht mit OSK.EXE versucht sondern mit *.DLL aber es sollte damit funktionieren.
such mal nach OSK.EXE / Wow64DisableWow64FsRedirection ... hier ein Treffer
http://forums.codeguru.com/showthread.p ... -Windows-7

Re: Onscreen Keyboard Windows 10

Verfasst: Sa, 19. Dez 2015 23:25
von AUGE_OHR
AUGE_OHR hat geschrieben:ich habe es nun nicht mit OSK.EXE versucht ...
so nun habe ich es mal in mein XCM eingebaut und es unter Windows 10586 64bit getestet.

Code: Alles auswählen

   BEGIN SEQUENCE
      IF "OSK.EXE" $ UPPER(cAction)
         @Kernel32:Wow64EnableWow64FsRedirection(FALSE)   // disable bevor API Call
         SHELLOPENFILE("C:\WINDOWS\system32\","osk.exe")
         @Kernel32:Wow64EnableWow64FsRedirection(TRUE)    // enable again
das Xbase++ Runshell() scheint unter Windows 10xxx 64bit öfters nicht zum gewünschten Resultat zu führen ... dann eben mit API ShellExecuteA()

Re: Onscreen Keyboard Windows 10

Verfasst: So, 20. Dez 2015 9:57
von Rudolf
Hallo Jimmy,
mit shellopenfile kommt bei mir
"die Bildschirmtastatur konnte nicht gestartet werden"
egal ob im WINDOWS oder SYSWOW64 Verzeichnis
Grüße
Rudolf

Re: Onscreen Keyboard Windows 10

Verfasst: So, 20. Dez 2015 17:11
von AUGE_OHR
Rudolf hat geschrieben:mit shellopenfile kommt bei mir
"die Bildschirmtastatur konnte nicht gestartet werden"
dann scheinst du noch ein anderes Problem zu haben denn ich habe den Code extra auf einer frisch installierten Windows 10586 64bit getestet.
btw. du hast den Code des ZIP File erweitert um "@Kernel32:Wow64EnableWow64FsRedirection(FALSE)" ?!

ich habe unter Windows 7 (32bit) Probleme mit OSK.EXE nachdem ich es ohne "echte" Tastatur gestartet hatte und statt einem "reset" beim Login OSK.EXE aufgerufen/benutzt hatte. wenn ich nun Windows 7 starte erscheint immer das OSK.EXE was ich zwar schliessen kann aber danach nicht mehr aufrufen kann :banghead:

Re: Onscreen Keyboard Windows 10

Verfasst: Mo, 21. Dez 2015 9:45
von Rudolf
Hallo Jimmy,
jetzt funktioniert zumindest der Aufruf, hatte falschen Pfad. Die Tastatur ist aber nicht verwendbar, ist nur für Maus ausgelegt, und nicht für Touch. Das Symbol zum Schließen ist winzig und fast unsichtbar. Hätte versucht einen Button zum Schließen zu machen, aber bekomme das Fenster nicht mehr zu, nur mit dem viel zu kleinen x im Fenster.

Mit diesem Code lässt sich das Fenster nicht schließen:

Code: Alles auswählen

aWindow := WildFindWindow("Bildschirmtastatur")
if len(aWindow) > 0
     nHwnd := aWindow[1,1] // window handle
     @user32:GetWindowThreadProcessId(nHwnd,@pid)
     hProc := @kernel32:OpenProcess(0x411,.F.,pid) // ??? immer leer
     if( !Empty(hProc) ) 
          result := ( @kernel32:TerminateProcess(hProc) != 0 )
          @kernel32:CloseHandle(hProc)
     end
Auch wenn es funktionieren würde, müsste der User zuerst den Eingabe Screen anklicken damit er den Focus hat und dann den Buttom für Schließen, also zweimal klicken, wäre umständlich.
Ich glaube ich muss selbst eine Tastatur machen, mit eXpress++ kein Problem, Roger hat auch ein Beispiel dabei.
Grüße
Rudolf