[C#] Close On Screen Keyboard

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 17-09 10:44
Beste tweakeraars,

Voor een touch-applicatie roep ik op een gegeven moment het On Screen Keyboard (OSK) van Windows 7 aan. Maar om gebruiksgemak te verbeteren moet deze automatisch worden afgesloten wanneer de focus van het textbox af is. Veel artikelen op StackOverflow en MSDN Social open en sluiten het OSK met de onderstaande regels. Deze werkte voor mij niet dus heb ik een andere oplossing bedacht. Hij opent het OSK wel, alleen sluiten lukt niet. Iemand een idee?

C#:
1
2
3
 _p = System.Diagnostics.Process.Start("osk.exe");

_p.Kill();


C#:
1
2
3
4
5
6
7
8
9
10
 private void CallOnKeyboard(object sender, EventArgs e) {
            string progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink";
            string onScreenKeyboardPath = Path.Combine(progFiles, "TabTip.exe");

            _p = Process.Start(onScreenKeyboardPath);
        }

        private void CloseOnKeyboard(object sender, EventArgs e) {
            _p.Kill();
        }

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
En waarom? Heb je daar naar gekeken / gezocht? En jouw 'workaround' heeft toch hetzelfde probleem of begrijp ik je topic verkeerd?

Heb je een 32 of 64 bit applicatie? Dit werkt voor mij gewoon mits ik prefer32 bit uit zet en de target op AnyCPU of x64 (ofwel: 64bits applicatie op 64bits OS):
C#:
1
2
3
4
5
6
7
8
9
10
11
12
using System.Diagnostics;
using System.Threading;

class Program
{
    static void Main(string[] args)
    {
        var _p = Process.Start(@"osk.exe");
        Thread.Sleep(2000);
        _p.Kill();
    }
}

Ik gok dat je voor een 32bit OS geen aanpassingen hoeft te doen aan je code; daar heb je namelijk niet te maken met folder virtualization (wat geheid de oorzaak is van je probleem). Je zult alleen wel een specifieke 32bit build moeten doen.

[ Voor 67% gewijzigd door RobIII op 04-12-2015 11:50 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 17-09 10:44
RobIII schreef op vrijdag 04 december 2015 @ 11:27:
[...]

En waarom? Heb je daar naar gekeken / gezocht? En jouw 'workaround' heeft toch hetzelfde probleem of begrijp ik je topic verkeerd?
Beide openen wel een keyboard. Alleen de Kill() werkt niet. Bij beide niet. Nu ik de Kill achter een button hang krijg ik volgende error:

"An unhandled exception of type 'System.InvalidOperationException' occurred in System.dll

Additional information: Cannot process request because the process has exited."


Zit al op Google te zoeken, en kom dingen tegen als deze helpt niet. Heb Close aangepast naar :

C#:
1
2
3
4
5
6
7
private void CloseOnKeyboard(object sender, EventArgs e) {
            try {
                _p.Kill();
            } catch (Exception ex) {
                MessageBox.Show(ex.ToString());
            }
        }


En als ik je edit begrijp, staan me config settings gewoon goed nu?

Afbeeldingslocatie: http://i.imgur.com/zTQKp8B.png

[ Voor 5% gewijzigd door ThaAresX op 04-12-2015 11:52 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Nee (en by the way: nu build je 't bovenste project niet eens...)
Afbeeldingslocatie: http://static.tweakers.net/ext/f/oBmyqNEJS3VQ2avMSTcc1Vu2/full.png

[ Voor 11% gewijzigd door RobIII op 04-12-2015 11:56 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 17-09 10:44
Zo staan me settings nu, alleen wanneer ik wil testen of de osk nu wel werkt, krijg ik een error :

"Error while trying to run project: Could not lead file or assembly "Project" or one of its dependencies. An attempt was made to load a program in an incorrect format."

Afbeeldingslocatie: http://i.imgur.com/9BCiDOB.png

En zet ik Platform target op x86, dan is er geen probleem. Platform kan ik trouwens niet aanpassen. Enige optie is x86.

Het project waar de osk in aangeroepen word is btw een Windows Forms project. De class library kan ik de tips die je me net gaf wel aanpassen, maar die stonden al zo.

EDIT**

Probleem opgelost door zelf een touch toetsenbord te maken. OSK gaf sowieso veel knoppen/opties die niet van toepassing waren voor mij. Hierdoor heb ik ook het gebruik van het scherm beperkt.

[ Voor 22% gewijzigd door ThaAresX op 04-12-2015 15:04 ]