@gore
Danke für den Hinweis, aber wenn ich das mit
Sysnative umsetze, erhalte ich von Shellexecute() die Rückmeldung 3 (Datei nicht gefunden). Also rufe ich generell '%WinDir%\system32\osk.exe' auf.
@all
Aber - und jetzt wird es verrückt - ich habe eine nachvollziehbare, aber nicht praktikable Lösung gefunden.
Ich habe zwei Schaltflächen:
1. Schaltfläche ist Version 1 mit
ChangeFSRedirection()
2. Schaltfläche ist Version 2 mit
IsProcess32OnWin64 von gore
- Klick auf Schaltfläche 2 -> Shellexecute = 5; Windows meldet: Could not start On-Screen Keyboard.
- Klick auf Schaltfläche 1 -> Shellexecute = 42; Und plötzlich startet die Bildschirmtastatur
- bei jedem weiteren Klick auf Schaltfläche 1 oder 2 startet die BST wieder mit 42
Danach schließe ich das kleine Testprogramm:
- Ich starte mit Klick auf Schaltfläche 1 -> Shellexecute = 5; nichts passiert (so wie bisher)
- Klick auf Schaltfläche 2 -> Shellexecute = 5; nichts passiert (so wie bisher)
- bei jedem weiteren Klick auf Schaltfläche 1 oder 2 passiert nichts
Ich kann mir das Verhalten nicht erklären. Also habe ich versucht, eine Mischung von beidem zu erstellen, aber dann habe ich wieder Shellexecute() mit Rückgabe von 5.
Delphi-Quellcode:
IsProcess32OnWin64(GetCurrentProcess); // von gore
ChangeFSRedirection(true); // Redirect stoppen
Path := CreateCorrectWinDir('%WinDir%\system32\osk.exe');
Memo1.Lines.Add('start von ' + Path);
isStarted := ShellExecute(0, 'open', PChar(Path), '', '', SW_SHOWNORMAL);
Memo1.Lines.Add('isStarted : ' + IntToStr(isStarted));
ChangeFSRedirection(false); // Redirect wieder starten
Ich bin echt am Verzweifeln. Langsam muss ich davon ausgehen, dass an meinen frisch installierten, englischen Windows 7 64 Bit irgendetwas nicht funktioniert.
Könntet Ihr daher bitte noch einmal mein Testprogramm (bereits kompiliert) probieren und mir Eure Ergebnisse unter Eurem Windows 7 64Bit durchgeben?