C# yopilgan maksimal klaviatura dasturni to'xtatadi

Men ochilgan yangi shakldagi NumericUpDown oynasini bosganimda ko'rsatish uchun Windows 8 da klaviaturani olishga muvaffaq bo'ldim. Afsuski, "fokus yo'qolgan" holatida klaviaturani yopgandan so'ng, oyna buzilgan va bu qalqib chiquvchi oyna yopilmaguncha butun dasturni ko'rsatmaydi.

//Close keyboard
void CopiedNudPass_LostFocus(object sender, EventArgs e)
{

    Version win8version = new Version(6, 2, 9200, 0);

    if (Environment.OSVersion.Version >= win8version)
    {
        Process[] oskProcessArray = Process.GetProcessesByName("TabTip");
        foreach (Process onscreenProcess in oskProcessArray)
        {
            onscreenProcess.Kill();
        }
    Refresh();
    }
}

Shunday qilib, asosan, hozirda ochilgan shakldan klaviaturani yopayotganda fon oynasini yangilashim kerak. Har qanday maslahat qadrlanadi. Rahmat.


person fac7orx    schedule 23.12.2013    source manba


Javoblar (1)


Men o'z yechimimni bu erda topdim:

TabletKeyboard(TabTip.exe) ilovasi uchun jarayon tugatilgandan keyin wpfda asl hajmiga qaytmaydi

Mana mening yangi yopish kodim:

//Close keyboard
void CopiedNudPass_LostFocus(object sender, EventArgs e)
{
        Version win8version = new Version(6, 2, 9200, 0);

        if (Environment.OSVersion.Version >= win8version)
        {
            uint WM_SYSCOMMAND = 274;
            uint SC_CLOSE = 61536;
            IntPtr KeyboardWnd = FindWindow("IPTip_Main_Window", null);
            PostMessage(KeyboardWnd.ToInt32(), WM_SYSCOMMAND, (int)SC_CLOSE, 0);
        }
}

Men WindowsBase-ga havola qo'shishim va loyihaga tashqi funktsiyalarni qo'shishim kerak edi. Qadamlar va qo'shimcha kod men ushbu postda bog'langan urlda. System.Windows.Interop-dan foydalanish uchun WindowsBase uchun ma'lumotnomani qanday qo'shishingiz mumkin; ishlamoq:

  1. Loyihani o'ng tugmasini bosing
  2. Qo'shish-ni belgilang va Ma'lumotnoma-ni bosing
  3. Assambleyalar ostida Framework tanlanganligiga ishonch hosil qiling
  4. Pastga aylantiring va "WindowsBase" ni tekshiring va OK tugmasini bosing
  5. System.Windows.Interop yordamida qo'shing; kodingizning yuqori qismida va bajarilgan
person fac7orx    schedule 23.12.2013