OSK.EXE unter Win8 ( Win7 ?) [erledigt]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

OSK.EXE unter Win8 ( Win7 ?) [erledigt]

Beitrag von AUGE_OHR »

hi,

ich habe mit diesem Code Probleme unter Win8 (vermutlich auch Win 7 )

Code: Alles auswählen

PROCEDURE MAIN
   RUNSHELL( "", "OSK.EXE" , .T. )
RETURN
das ergibt dann
------------------------------------------------------------------------------
Xbase++ Version : Xbase++ (R) Version 1.90.355
Betriebssystem : Windows 7 06.02 Build 09200
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE:
-> VALTYPE: C VALUE: OSK.EXE
-> VALTYPE: L VALUE: .T.
oError:canDefault : J
oError:canRetry : J
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Betriebsystemfehler
oError:filename :
oError:genCode : 40
oError:operation : RunShell
oError:osCode : 740 -> höhere Rechte erforderlich
oError:severity : 2
oError:subCode : 4
oError:subSystem : BASE
oError:thread : 1
oError:tries : 1
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von MAIN(2)
hm ... aber da liegt doch auch Notepad.exe, Calc.exe usw die ich per Runshell() aktivieren kann ... und normal in der CMD geht es ja ... :banghead:

... und wie bekommt der User nun die Bildschirmtastatur ohne OSK.EXE zu tippen ?
Zuletzt geändert von AUGE_OHR am Mo, 10. Nov 2014 22:11, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: OSK.EXE unter Win8 ( Win7 ?)

Beitrag von Herbert »

Hallo Jimmy
Da Xbase nur 32-bit erstellt, muss eventuell auch osk 32 bit sein. Vermutlich musst du das osk in dein Programmverzeichnis kopieren. Oder gar ein 32-bit osk suchen.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: OSK.EXE unter Win8 ( Win7 ?)

Beitrag von AUGE_OHR »

Herbert hat geschrieben:Da Xbase nur 32-bit erstellt, muss eventuell auch osk 32 bit sein. Vermutlich musst du das osk in dein Programmverzeichnis kopieren. Oder gar ein 32-bit osk suchen.
ich habe es auch so mit

Code: Alles auswählen

cRoot := GETENV( "SYSTEMROOT" )
RUNSHELL( "", cRoot+"\system32\"+cAction , .T. )
also auf das 32bit Verzeichnis probiert ... nix :angry4:
... aber alle anderen *.EXE kann ich ja ansprechen ... nur nicht das OSK.EXE per RunShell()

Die Idee das OSK.EXE ins Verzeichnis zu kopieren ist gut und das "müsste" ja gehen ... aber probiert es doch mit dem Dreizeiler selbst mal aus ... :banghead:
gruss by OHR
Jimmy
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: OSK.EXE unter Win8 ( Win7 ?)

Beitrag von satmax »

Hallo Jimmy,

ich habe mit Runshell() das gleiche Problem, was aber bei mir funktioniert ist:

Code: Alles auswählen

  TDRUNSHELL( "OSK.EXE")
Gruß
Markus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: OSK.EXE unter Win8 ( Win7 ?)

Beitrag von AUGE_OHR »

satmax hat geschrieben:ich habe mit Runshell() das gleiche Problem, was aber bei mir funktioniert ist:

Code: Alles auswählen

  TDRUNSHELL( "OSK.EXE")
ok, Danke ... es liegt also nicht an mir ;)

du bringst mich gerade auf eine Idee ... JA ich kann es mit ShellExecuteA() starten :blob8:
hm ... was ist dann mit RunShell() los ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: OSK.EXE unter Win8 ( Win7 ?)

Beitrag von AUGE_OHR »

man sagte mir das z.b. bei Tablet-PC schon vor dem Login die Bildschirm Tastatur aktive sein kann.

es gibt wohl für den Aufruf von OSK.EXE ein "spezielles Recht" was Runshell() wohl nicht "kennt" wenn es eine neue Instanz startet -> 740 -> fehlende Rechte.
hingegen ist der Aufruf aus dem Explorer oder per ShellExecuteA() mit den Rechten des angemeldeten User versehen und deshalb zulässig.
gruss by OHR
Jimmy
DelUser01

Re: OSK.EXE unter Win8 ( Win7 ?)

Beitrag von DelUser01 »

Hallo Jimmy

habe das gerade getestet:

Code: Alles auswählen

RunShell( "/C START osk.exe" )
damit startet die Bildschirmtastatur ohne Probleme.

Windows 8 64-Bit
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: OSK.EXE unter Win8 ( Win7 ?)

Beitrag von brandelh »

OSK kann ich bei hier bei Win7 auch starten (Suchfeld links unten und keine Admin Rechte)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: OSK.EXE unter Win8 ( Win7 ?)

Beitrag von AUGE_OHR »

Roland Gentner hat geschrieben:

Code: Alles auswählen

RunShell( "/C START osk.exe" )
JA ... damit wird auch eine neue Instanz gestartet.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: OSK.EXE unter Win8 ( Win7 ?)

Beitrag von AUGE_OHR »

brandelh hat geschrieben:OSK kann ich bei hier bei Win7 auch starten (Suchfeld links unten und keine Admin Rechte)
JA ... es ging nur um die Frage warum bei der Syntax

Code: Alles auswählen

RUNSHELL( "", "OSK.EXE" , .T. )
das "mehr" Rechte haben wollte ...
gruss by OHR
Jimmy
Benutzeravatar
Hans Zethofer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 278
Registriert: Fr, 27. Jan 2006 8:29
Wohnort: 2700 Wiener Neustadt
Hat sich bedankt: 1 Mal
Kontaktdaten:

Re: OSK.EXE unter Win8 ( Win7 ?)

Beitrag von Hans Zethofer »

Wie könnte man aus Alaska heraus die Instanz wieder killen (schließen)?
_____________
lg
Hans
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: OSK.EXE unter Win8 ( Win7 ?)

Beitrag von AUGE_OHR »

Hans Zethofer hat geschrieben:Wie könnte man aus Alaska heraus die Instanz wieder killen (schließen)?
meinst du etwa so was :

Code: Alles auswählen

#include "DLL.CH"
#define WM_CLOSE                        0x0010
#define WM_QUIT                         0x0012

PROCEDURE MAIN
LOCAL nHwnd := DllCall( "User32.dll", DLL_STDCALL, "FindWindowA", 0, "Bildschirmtastatur")

   IF nHwnd > 0
      DllCall( "User32.dll", DLL_STDCALL, "SendMessageA", nHwnd, WM_CLOSE, 0, 0 )
   ENDIF
RETURN
gruss by OHR
Jimmy
Benutzeravatar
Hans Zethofer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 278
Registriert: Fr, 27. Jan 2006 8:29
Wohnort: 2700 Wiener Neustadt
Hat sich bedankt: 1 Mal
Kontaktdaten:

Re: OSK.EXE unter Win8 ( Win7 ?)

Beitrag von Hans Zethofer »

Ja - Danke
werde es gleich mal ausprobieren
_____________
lg
Hans
Benutzeravatar
Hans Zethofer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 278
Registriert: Fr, 27. Jan 2006 8:29
Wohnort: 2700 Wiener Neustadt
Hat sich bedankt: 1 Mal
Kontaktdaten:

Re: OSK.EXE unter Win8 ( Win7 ?) [erledigt]

Beitrag von Hans Zethofer »

geht nicht :(
Bildschirmtastatur bleibt am Desktop eingeblendet

Code: Alles auswählen

nX:=DllCall( "User32.dll", DLL_STDCALL, "SendMessageA", nHwnd, WM_CLOSE, 0, 0 )
dieser Call gibt ein 0 zurück - ist das korrekt?
_____________
lg
Hans
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: OSK.EXE unter Win8 ( Win7 ?) [erledigt]

Beitrag von AUGE_OHR »

Hans Zethofer hat geschrieben:geht nicht :(
Bildschirmtastatur bleibt am Desktop eingeblendet

Code: Alles auswählen

nX:=DllCall( "User32.dll", DLL_STDCALL, "SendMessageA", nHwnd, WM_CLOSE, 0, 0 )
dieser Call gibt ein 0 zurück - ist das korrekt?
... und schon wieder taucht ein "User-Rechte" Problem auf.

Code: Alles auswählen

#include "DLL.CH"
#define WM_CLOSE       0x0010
#define WM_QUIT        0x0012
#define WM_SYSCOMMAND  0x0112
#define SC_CLOSE 		0xF060

PROCEDURE MAIN
LOCAL nHwnd := DllCall( "User32.dll", DLL_STDCALL, "FindWindowA", 0, "Bildschirmtastatur")
LOCAL nRet := 0

   IF nHwnd > 0
// hier fehlen die Rechte 
*     DllCall( "User32.dll", DLL_STDCALL, "SendMessageA", nHwnd, WM_QUIT, 0, 0 )
*     DllCall( "User32.dll", DLL_STDCALL, "PostMessageA", nHwnd, WM_CLOSE, 0, 0 )
*     DllCall( "Kernel32.dll", DLL_STDCALL, "TerminateProcess", nHwnd,@nRet)
// das geht auch als User unter Windows 8.x
     DllCall( "User32.dll", DLL_STDCALL, "SendMessageA", nHwnd,WM_SYSCOMMAND, SC_CLOSE,0 )
   ELSE
      ALERT("Error "+STR(nHwnd))
   ENDIF
RETURN
gruss by OHR
Jimmy
Benutzeravatar
Hans Zethofer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 278
Registriert: Fr, 27. Jan 2006 8:29
Wohnort: 2700 Wiener Neustadt
Hat sich bedankt: 1 Mal
Kontaktdaten:

Re: OSK.EXE unter Win8 ( Win7 ?) [erledigt]

Beitrag von Hans Zethofer »

Unter Win7 prof SP1 32 Bit geht diese Variante =D>

Danke
_____________
lg
Hans
Antworten