Windows app accessibility का परिचय — UI Automation और reasonable accommodation requirements की तैयारी

· अद्यतन तिथि: · · accessibility, UI Automation, Windows, WinForms, WPF, reasonable accommodation, screen readers, Disability Discrimination Act, business apps

संशोधन इतिहास (पहला संस्करण, 20 Aug 2026 को प्रकाशित)
पहला प्रकाशन
इस लेख का हवाला दें(DOI: 10.5281/zenodo.22176490)

यह लेख Zenodo पर संग्रहीत है। नीचे वह DOI है जो हमेशा नवीनतम संस्करण की ओर ले जाता है, और वह DOI भी जो आपके पढ़े जा रहे संस्करण से बँधा है।

Go Komura (2026). Windows app accessibility का परिचय — UI Automation और reasonable accommodation requirements की तैयारी. KomuraSoft LLC. https://doi.org/10.5281/zenodo.22176490 https://comcomponent.com/hi/blog/windows-app-accessibility-ui-automation-guide/

DOI (नवीनतम संस्करण)
10.5281/zenodo.22176490
DOI (यह संस्करण)
10.5281/zenodo.22176491

“मध्य-कैरियर भर्ती जो दृष्टिबाधित हैं, मुख्य आदेश-प्रवेश app screen reader से उपयोग नहीं कर सकते। वे web browser और mail बिना समस्या उपयोग करते हैं, पर केवल हमारे business app का पठन सही नहीं चलता। क्या कुछ हो सकता है?” — customers के IT departments से इस तरह के परामर्श बढ़ रहे हैं।

एक पृष्ठभूमि कानूनी ढाँचा है। विकलांग व्यक्तियों के प्रति भेदभाव उन्मूलन अधिनियम का 2021 amendment 1 अप्रैल 2024 से प्रभावी हुआ, और विकलांग व्यक्तियों को “reasonable accommodation देना” व्यवसायों के लिए भी obligation बन गया।1 आगे, employee–कंपनी संबंध जैसा प्रारंभिक (employment क्षेत्र) विकलांग व्यक्तियों के रोजगार संवर्धन अधिनियम का क्षेत्र है, जिसने अप्रैल 2016 से employers को reasonable accommodation देने के लिए बाध्य किया है।2 यह विचार कि “accessibility websites विषय है और in-house Windows app से कोई लेना-देना नहीं” अब न कानूनी रूप से टिकता है न practice में।

दूसरी ओर, development फर्श से “पता नहीं क्या करें” ईमानदार जगह है। Windows desktop app की accessibility पर web से कम जानकारी है, और कोई जादुई बाद-का समाधान नहीं। निराशा की भी ज़रूरत नहीं। यदि समझें कि screen reader app कैसे पढ़ता है (UI Automation) और name, keyboard व रंग की बुनियाद अपनाएँ, business app की usability काफी सुधरती है। और उसमें बहुत कुछ हर user की productivity बढ़ाता है, विकलांगता हो या न हो।

Japanese business-app developers और IT staff के लिए, यह लेख कानूनी ढाँचे और standards की न्यूनतम छँटाई से, UI Automation के mechanism, WinForms/WPF implementation, keyboard operations, रंग व contrast, और validation tools से होते हुए प्राथमिकताएँ तय करने के यथार्थ तरीके तक एक ही प्रवाह में जोड़ता है।

इस लेख का प्रवाहइस लेख की structure, कानूनी ढाँचे और standards की छँटाई से UI Automation के mechanism, WinForms और WPF implementation, keyboard operations, रंग व contrast, validation tools, और प्राथमिकताएँ तय करने तक क्रम से जोड़ती हैकानूनी ढाँचा और standards छँटाईUI Automation का mechanismWinForms/WPF implementationKeyboard operationsरंग और contrastValidation toolsप्राथमिकताएँ कैसे तय करें

चित्र 1: यह लेख कानूनी ढाँचे को mechanism, implementation, validation और प्राथमिकताओं से एक ही प्रवाह में जोड़ता है।

1. निष्कर्ष पहले

  • Reasonable accommodation देना 1 अप्रैल 2024 से व्यवसायों के लिए भी obligation है। जब विकलांग व्यक्ति बाधा हटाने का आशय दर्शाए, excessive burden न होने वाली सीमा में response चाहिए। Employment क्षेत्र विकलांग व्यक्तियों के रोजगार संवर्धन अधिनियम के अधीन है, और वह अप्रैल 2016 से employer obligation है।12
  • Reasonable accommodation “व्यक्तिगत अनुरोध का constructive dialogue से उत्तर” की process है; app को पहले से आसान बनाना “environmental improvement” (effort-obligation) है। पूर्ण अग्रिम support obligation नहीं; मायने यह है कि संवाद एकतरफा न ठुकराएँ।1
  • Accessibility के technical मानदंड WCAG (JIS X 8341-3:2016) में केंद्रित हैं। JIS X 8341-3:2016 WCAG 2.0 की identical-content corresponding standard है, और W3C का WCAG2ICT non-web software पर लागू करने का guidance देता है। Desktop apps उसी सोच से जाँचे जा सकते हैं।34
  • Screen reader app को UI Automation (UIA) से पढ़ता है। UIA tree पर प्रत्येक element की properties — Name, ControlType आदि — और Invoke, Value, SelectionItem जैसे control patterns announcement व operations की content हैं।5
  • जिस button का Name खाली हो वह केवल “button” announce होता है। सर्वोच्च-प्राथमिकता सुधार naming है। WinForms AccessibleName और Label को tab order से जोड़ना उपयोग करता है; WPF AutomationProperties.Name/LabeledBy।67
  • हर function केवल keyboard से पहुँचना WCAG success criterion (2.1.1) है और साथ ही कुशल operator की input गति स्वयं। Tab order, access keys और focus indication रखना हर user की दक्षता से सीधे जुड़ता है।8
  • Text contrast ratio 4.5:1 या अधिक मार्गदर्शक मानें, और जानकारी केवल रंग से न पहुँचाएँ। Contrast themes (high contrast) में hard-coded रंगों के बजाय system colors का सम्मान करें।89
  • Validation को Accessibility Insights for Windows के FastPass और screen reader से hands-on जाँच से जोड़ें। क्योंकि वे एक ही UIA foundation पर हैं, यह काम FlaUI जैसे UI automated-testing assets के साथ भी परस्पर लाभ देता है।10
  • हर screen एक साथ ठीक करने की ज़रूरत नहीं। यथार्थ क्रम है (1) उन screens से जिन्हें वह user उपयोग करता है, (2) नया development standard-compliant, (3) shared controls ठीक कर बग़ल में फैलाएँ।

एक वाक्य में: Accessibility support “UIA tree पर सही name और operations expose करना, और keyboard व रंग की बुनियाद रखना” है।

2. कानूनी ढाँचे और standards की छँटाई — “obligation बनी” चीज़ क्या बदली

2.1. विकलांग व्यक्तियों के प्रति भेदभाव उन्मूलन अधिनियम — अप्रैल 2024 से व्यवसाय भी reasonable accommodation देने के लिए बाध्य

विकलांग व्यक्तियों के प्रति भेदभाव उन्मूलन अधिनियम वह कानून है जो administrative organs और व्यवसायों द्वारा विकलांग व्यक्तियों के “unjust discriminatory treatment” को प्रतिबंधित करता है, और “reasonable accommodation देना” अपेक्षित करता है। 2021 (Reiwa 3) amendment में व्यवसायों द्वारा reasonable accommodation देना, जो effort-obligation था, obligation बन गया, और संशोधित अधिनियम 1 अप्रैल 2024 (Reiwa 6) से प्रभावी हुआ।1

Cabinet Office leaflet के अनुसार reasonable accommodation देना उस सीमा में response देना है जो excessive burden न हो, जब विकलांग व्यक्ति आशय दर्शाए कि समाज में बाधा हटाने के लिए कोई response चाहिए। और क्योंकि content विकलांगता विशेषता, दृश्य और स्थिति से भिन्न होती है, एक “constructive dialogue” जिसमें विकलांग व्यक्ति और व्यवसाय संवाद जोड़कर response साथ सोचें पर ज़ोर है। Constructive dialogue एकतरफा ठुकराना reasonable-accommodation obligation का उल्लंघन बन सकता है, कहा गया है।1

यहाँ दो practical भेद मायने रखते हैं।

  1. “पहले से सब कुछ रखना” वह नहीं जो obligation बनी। Unspecified संख्या के विकलांग व्यक्तियों के लिए अग्रिम सुधार उपाय — नरम पक्ष जैसे manual review और training, कठोर पक्ष जैसे सुविधा barrier-free बनाना — “environmental improvement” कहलाते हैं, और यह effort-obligation है।1 Business app को screen reader से उपयोग योग्य अवस्था में पहले रखना environmental-improvement effort माना जा सकता है। जितना environmental improvement आगे बढ़ा, व्यक्तिगत reasonable accommodation का भार उतना हल्का।
  2. Employment क्षेत्र विकलांग व्यक्तियों के प्रति भेदभाव उन्मूलन अधिनियम के अधीन नहीं बल्कि विकलांग व्यक्तियों के रोजगार संवर्धन अधिनियम के अधीन है। वही leaflet कहता है कि employment और काम उस अधिनियम के प्रावधानों का पालन करते हैं।1 और उस अधिनियम के अधीन, अप्रैल 2016 (Heisei 28) से प्रभावी amendment से, employment में विकलांगता भेदभाव का निषेध और excessive burden न होने वाली सीमा में reasonable accommodation देना employers पर बाध्य है।2 प्रारंभिक परामर्श “employee business app उपयोग नहीं कर सकता” वास्तव में 2024 से बहुत पहले obligation के क्षेत्र में रहा है।
Reasonable accommodation और environmental improvement की स्थितिसामान्य व्यवसाय और विकलांग व्यक्ति का संबंध भेदभाव उन्मूलन अधिनियम के अधीन है, और व्यक्तिगत अनुरोध का constructive dialogue से उत्तर देकर reasonable accommodation देना अप्रैल 2024 से obligation है; employment क्षेत्र अप्रैल 2016 से रोजगार संवर्धन अधिनियम के अधीन employer obligation है; app को पहले आसान बनाना environmental improvement, effort-obligation हैव्यवसाय + विकलांगताEmployment / कामकौन सा दृश्य?भेदभाव अधिनियमरोजगार अधिनियमसंवाद से अनुरोधAccommodation देंObligation 2024 सेAccommodation देंObligation 2016 सेपहले आसान appEnvironmental improvementEffort-obligation

चित्र 2: शासी अधिनियम दृश्य से बँटता है; reasonable accommodation obligation है, और अग्रिम सुधार environmental improvement, effort-obligation है।

व्यक्तिगत मामला कानून में कैसे माना जाए स्थिति पर निर्भर करता है। यह लेख कानूनी व्याख्या में नहीं जाता; जब response माँगी जाए तो अभियंता क्या कर सकता है, उस दृष्टि से आगे बढ़ता है। Primary sources के लिए Cabinet Office और Ministry of Health, Labour and Welfare सामग्री देखें।12

2.2. JIS X 8341-3 और WCAG — “web मानदंड” software तक भी फैलते हैं

Technical-मानदंड पक्ष JIS X 8341-3:2016 में केंद्रित है। यह standard ISO/IEC 40500:2012 की corresponding standard है, और standard का मुख्य भाग W3C के WCAG 2.0 की identical content है।3 यदि ठोस जानना हो कि “accessibility support” क्या है, WCAG success criteria पढ़ना (अब WCAG 2.1/2.2 में विस्तारित) सबसे छोटा path है, और WAIC का Japanese translation भी published है।8

प्रश्न “क्या WCAG web content का मानदंड है?” उचित है, पर W3C ने WCAG2ICT (Guidance on Applying WCAG 2 to Non-Web Information and Communications Technologies) नामक Group Note में व्यवस्थित किया है WCAG 2.0/2.1/2.2 success criteria non-web documents और software पर कैसे लागू करें।4 यानी “text alternative”, “contrast”, “keyboard operations”, और “रंग एकमात्र साधन नहीं” जैसी सोच Windows desktop apps पर web जैसे ही ढाँचे में लागू हो सकती है। इस लेख के अध्याय 3 से वह सोच ठोस WinForms/WPF implementation में उतरती है।

JIS X 8341-3 और WCAG का संबंधJIS X 8341-3:2016 WCAG 2.0 की identical-content corresponding standard है, और WCAG2ICT दिखाता है WCAG success criteria non-web software पर कैसे लागू करें, इसलिए Windows desktop apps उसी ढाँचे में जाँचे जा सकते हैंIdentical content की corresponding standardWCAG 2.0(W3C)JIS X 8341-3:2016WCAG2ICTNon-web software पर लागूWindows desktop app

चित्र 3: JIS X 8341-3:2016 WCAG 2.0 की corresponding standard है, और WCAG2ICT उन्हीं मानदंडों को desktop apps तक बढ़ाता है।

3. Assistive technology app कैसे पढ़ती है — UI Automation की तिकड़ी

3.1. UIA tree, properties और control patterns

Windows में UI Automation (UIA) नामक accessibility foundation बना है। UIA वह mechanism है जिससे screen readers जैसी assistive technology UI जानकारी पाती है और standard input के अलावा UI operate करती है, और यह app पक्ष (provider) व assistive-technology पक्ष (client) के बीच मध्यस्थता करता है।5

UIA की दुनिया निम्न तिकड़ी से समझी जा सकती है।5

तत्व भूमिका Representative उदाहरण
UIA tree Tree जो desktop को root मानकर window → control तक चलती है। Assistive technology UI समझने यह tree चलती है Window, pane, button, edit box
Properties Values जो प्रत्येक element की प्रकृति दर्शाते हैं Name (उद्देश्य), ControlType (प्रकार), AutomationId (identifier), IsEnabled, IsKeyboardFocusable
Control patterns प्रति प्रकार “क्या operations हो सकते हैं” की शब्दावली Invoke (दबाएँ), Value (मान पढ़ें/लिखें), SelectionItem (चुनें), Toggle (चालू/बंद), ExpandCollapse (फैलाएँ/समेटें)

जब screen reader button पर focus करता है, announcement “आदेश पुष्टि करें button” मोटे तौर पर Name + control type का combination है। जब user “execute” operation करे, assistive technology Invoke pattern से वह button दबाती है। यानी यदि Name और pattern सही expose हों तो पढ़ा और operate हो सकता है; यदि न हों, screen पर दिखने पर भी यह न होने के बराबर है।

UI Automation की तिकड़ीApp provider के रूप में UIA tree पर प्रत्येक element की properties और control patterns expose करता है; screen reader client के रूप में Name और ControlType announce करता है और Invoke जैसे patterns से operate करता हैAnnounce करता हैOperate करता हैApp(provider)UIA treeProperties(Name, ControlType आदि)Patterns(Invoke, Value आदि)Screen reader(client)

चित्र 4: Screen reader app द्वारा UIA tree पर expose properties और patterns का उपयोग announcement व operations के लिए करता है।

3.2. Screen reader एक UIA client है

Windows पर मुख्य screen readers में Windows-built-in Narrator; निःशुल्क open-source NVDA;11 और Japan में व्यापक commercial PC-Talker शामिल हैं। Announcement शैली भिन्न है, पर desktop app UI पढ़ने का primary path हर मामले में UIA है। इसलिए app-side response “किसी विशेष screen reader का support” नहीं बल्कि UIA को सही जानकारी expose करने पर केंद्रित है।

मुख्य screen readers का साझा pathयदि app UIA को सही जानकारी expose करे, Narrator, NVDA और PC-Talker सभी उसी path से UI पढ़ सकते हैं, इसलिए app-side response किसी विशेष screen reader पर नहीं बल्कि UIA expose करने पर केंद्रित हैजानकारी exposeAppUI Automation(UIA)NarratorNVDAPC-TalkerResponse UIA expose करने पर केंद्रित

चित्र 5: मुख्य screen readers सभी UIA को path मानते हैं, इसलिए app की response UIA expose करने पर केंद्रित है।

3.3. “खाली Name वाला button” किस रूप में announce होता है?

एक ठोस उदाहरण। मानें toolbar में Save button केवल floppy-disk icon दिखाता है। दृष्टि वाले user को icon अर्थ देता है, पर यदि Name खाली छोड़ा गया, screen reader इस button को केवल “button” announce करता है। यदि पड़ोसी “खोलें” और “छापें” वही हों, user केवल “button, button, button” सुनता है और नहीं जान सकता कौन सा कौन सा है। Microsoft की accessibility-improvement guide भी बिना Name button, और केवल “Image” announce चित्र, को representative समस्याएँ मानती है जो user का काम रोकती हैं।7

सौभाग्य से WinForms और WPF दोनों standard controls में UIA support शुरू से है, और कई मामलों में Name text या label से automatic तय होता है। जो टूटता है वह usually (1) केवल icon, name की content नहीं, (2) label से कोई संबंध नहीं, या (3) custom drawing जो UIA tree पर जानकारी नहीं रखती, में से एक है। अगले दो अध्याय प्रति framework सुधार देखते हैं।

Announcement टूटने के तीन typical तरीकेAnnouncement तब टूटती है जब केवल icon होने से name की content नहीं, जब label से संबंध नहीं, या जब custom drawing UIA tree पर जानकारी नहीं रखती, और अंततः केवल button announce होती हैकेवल icon, content नहींName खाली हो जाता हैLabel से संबंध नहींCustom drawing जानकारी नहीं देतीकेवल button announce

चित्र 6: Announcement टूटना usually तीन patterns में आता है: name content अपर्याप्त, संबंध अपर्याप्त, या custom drawing।

4. WinForms में implementation — AccessibleName और tab order

4.1. Controls जिनका Text automatic Name बनता है, और जिनका नहीं

WinForms में text दिखाने वाला control, जैसे Button या CheckBox, Text property का मान UIA Name के रूप में उपयोग करता है। दूसरी ओर ComboBox, ListBox, ListView, PictureBox, ProgressBar, TabControl, TextBox, TreeView आदि Text को Name नहीं बनाते। इन्हें name किसी अन्य साधन से चाहिए।6

सबसे maintainable तरीका target control के ठीक पहले tab order में descriptive Label रखना है। यदि target control का TabIndex Label के TabIndex के ठीक बाद आए, वह Label text automatic UIA Name बनता है। Screen पर दिखने वाला label और announcement मेल खाते हैं, और शब्द दो बार सँभालने नहीं पड़ते।612

यदि Label न रख सकें, AccessibleName स्पष्ट set करें। पूरक व्याख्या चाहिए तो AccessibleDescription, और भूमिका रूप से भिन्न हो तो AccessibleRole भी set कर सकते हैं।13

WinForms control का name कैसे तय होता हैButton आदि के लिए Text ज्यों-का-त्यों UIA Name बनता है; TextBox जैसे controls जिनका Text reuse नहीं होता, ठीक पहले tab order के Label का text उपयोग होता है; Label न रख सकें तो AccessibleName स्पष्ट set करेंहाँनहींहाँनहींControlक्या ऐसा प्रकार जिसका Text Name बने?Text ज्यों का त्यों Nameठीक पहले tab order में Label?Label का text Name बनता हैAccessibleName स्पष्ट set करें

चित्र 7: WinForms Name के लिए decision क्रम Text, ठीक पहले tab order का Label, AccessibleName है।

// An icon-only toolbar button: state the name for announcement explicitly
saveToolStripButton.AccessibleName = "Save";

// An image-only button: name + a supplementary explanation
btnSearchCustomer.AccessibleName = "Search customer";
btnSearchCustomer.AccessibleDescription = "Search the customer master by customer code or name";

// Set it directly on an input field where you cannot place a Label in the immediately preceding tab order
txtOrderNo.AccessibleName = "Order number";

// A PictureBox reused as a chart display: match the role to the reality as well
pictureBoxChart.AccessibleRole = AccessibleRole.Chart;
pictureBoxChart.AccessibleName = "Monthly order-count chart";

चेतावनी: यदि Visual Studio के Properties pane में AccessibleName एक बार set कर फिर साफ़ करें, designer file में empty-string setting रह सकती है और default name resolution में बाधा डालती है। Designer file से matching पंक्ति हटाएँ।6

Empty-string AccessibleName के रह जाने की समस्याProperties pane में AccessibleName एक बार set कर साफ़ करने पर designer file में empty-string setting रह जाती है और default name resolution में बाधा डालती है, इसलिए designer file से matching पंक्ति हटाकर ठीक करेंAccessibleName set करेंProperties pane में साफ़ करेंEmpty-string setting रह जाती हैDefault name resolution में बाधाDesigner file से matching पंक्ति हटाएँ

चित्र 8: Properties pane में साफ़ करने पर भी empty string रहती है, इसलिए designer file से matching पंक्ति हटाकर ठीक करें।

4.2. आदेश-प्रवेश screen पर सामान्य सुधार

Business app में जो स्थान हम वास्तव में अक्सर ठीक करते हैं, checklist के रूप में सार हैं।

सामान्य अवस्था समस्या कैसे ठीक करें
केवल-icon ToolStripButton केवल “button” announce AccessibleName set करें
TextBox के पास Label है पर tab order बिखरा Input field का name खाली, या unrelated name Input field Label के TabIndex के ठीक बाद रखें
PictureBox Click से button की तरह भूमिका button नहीं पहुँचती, keyboard से नहीं दबता Button से बदलें, या AccessibleRole/AccessibleName प्लस keyboard support
DataGridView column header खाली या केवल प्रतीक Cell announce होने पर column का अर्थ अस्पष्ट HeaderText पर अर्थपूर्ण column name set करें
Content group के लिए केवल Panel, शीर्षक चित्र कौन सा input group है पता नहीं GroupBox उपयोग करें, या शीर्षक Label बनाएँ

प्रत्येक कुछ पंक्तियों का सुधार है, पर screen-reader user के लिए यह “अनुपयोगी screen” और “उपयोग योग्य screen” का द्वार है।

5. WPF में implementation — AutomationProperties और AutomationPeer

5.1. AutomationProperties.Name / LabeledBy / HelpText

WPF में जिसका Content string हो, जैसे Button, वह content UIA Name बनती है। केवल-icon button (Image या Path) में Name की content नहीं, इसलिए AutomationProperties.Name से बताएँ, या पास display text हो तो AutomationProperties.LabeledBy से जोड़ें।7

TextBox की महत्वपूर्ण चेतावनी है। TextBlock का Text Name के रूप में reuse होता है, पर TextBox का Text UIA Value property पक्ष पर expose होता है और Name नहीं बनता। Input fields के लिए display-label TextBlock को LabeledBy से जोड़ना पहला उम्मीदवार है। Announcement और on-screen display मेल खाते हैं, और शब्द दो बार सँभालने से बचते हैं।14

<!-- An input field: associate the display label with LabeledBy -->
<TextBlock x:Name="OrderNoLabel" Text="Order number" />
<TextBox
    AutomationProperties.LabeledBy="{Binding ElementName=OrderNoLabel}"
    AutomationProperties.AutomationId="OrderNoTextBox" />

<!-- An icon-only button: state the name, and a supplement if needed -->
<Button
    AutomationProperties.Name="Confirm order"
    AutomationProperties.HelpText="Confirm the order being entered and allocate inventory">
    <Path Data="{StaticResource CheckIconGeometry}" Width="16" Height="16" />
</Button>
WPF control का name कैसे तय होता हैजिसका Content string हो वह content Name बनती है; अन्यथा पास display label को LabeledBy से जोड़ना पहला उम्मीदवार है; वह भी न हो तो AutomationProperties.Name बताएँ; TextBox का Text Value पक्ष पर expose होता है, Name नहींहाँनहींहाँनहींControlक्या Content string है?Content Name बनती हैपास display label?LabeledBy से जोड़ेंName स्पष्ट set करेंTextBox का TextValue के रूप में expose, Name नहीं

चित्र 9: WPF Name के लिए decision क्रम Content string, LabeledBy, स्पष्ट setting है; TextBox का Text Name नहीं बनता।

Name में न समा पूरक जानकारी AutomationProperties.HelpText से expose हो सकती है।7 साथ ही AutomationId UI automated testing में element identification का identifier है, इसलिए screen-design time naming convention तय करना बाद में लाभ देता है (गहराई से “Windows desktop apps के लिए UI automated testing”)।

5.2. Custom control को AutomationPeer चाहिए

स्वयं खींचा custom control ज्यों-का-त्यों UIA tree पर अर्थपूर्ण जानकारी expose नहीं कर सकता। WPF में UIElement-derived class पर OnCreateAutomationPeer override करें और AutomationPeer-derived class लौटाकर name, type और patterns expose करें। यदि existing control से inherit ले रहे हों, matching Peer (ButtonBase के लिए ButtonBaseAutomationPeer) inherit में लेने से पहले से implement व्यवहार मिलता है।15

AutomationPeer से जानकारी कैसे expose होती हैCustom control OnCreateAutomationPeer override कर AutomationPeer-derived class लौटाकर name, type और patterns expose करता है; existing control से inherit हों तो matching Peer inherit में लेकर पहले से implement व्यवहार लेंCustom controlOnCreateAutomationPeerPeer-derived class लौटाएँName, type और patterns exposeExisting control से inheritMatching Peer inherit में लेंपहले से implement व्यवहार लें

चित्र 10: Custom control OnCreateAutomationPeer से Peer लौटाता है और UIA को जानकारी expose करता है।

// An example of a control that custom-draws line status as a coloured lamp
public class StatusLamp : Control
{
    public static readonly DependencyProperty IsOnlineProperty =
        DependencyProperty.Register(nameof(IsOnline), typeof(bool), typeof(StatusLamp),
            new FrameworkPropertyMetadata(false,
                FrameworkPropertyMetadataOptions.AffectsRender, OnIsOnlineChanged));

    public bool IsOnline
    {
        get => (bool)GetValue(IsOnlineProperty);
        set => SetValue(IsOnlineProperty, value);
    }

    internal static string NameFor(bool isOnline)
        => isOnline ? "Line status: online" : "Line status: offline";

    private static void OnIsOnlineChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        // Raise a UIA property-changed event the moment the value changes. Without this,
        // a screen reader keeps the old name and cannot notice the change of state
        if (UIElementAutomationPeer.FromElement((UIElement)d) is AutomationPeer peer)
        {
            peer.RaisePropertyChangedEvent(
                AutomationElementIdentifiers.NameProperty,
                NameFor((bool)e.OldValue), NameFor((bool)e.NewValue));
        }
    }

    protected override AutomationPeer OnCreateAutomationPeer()
        => new StatusLampAutomationPeer(this);
}

public class StatusLampAutomationPeer : FrameworkElementAutomationPeer
{
    public StatusLampAutomationPeer(StatusLamp owner) : base(owner) { }

    protected override AutomationControlType GetAutomationControlTypeCore()
        => AutomationControlType.Text; // Text-equivalent if it is a status display with no operation

    protected override string GetNameCore()
        => StatusLamp.NameFor(((StatusLamp)Owner).IsOnline);
}

Name लौटाना पर्याप्त नहीं; बदलते ही event से बताना भी Peer का काम है। Assistive technology का मान दोबारा लाने का अपना समय नहीं, इसलिए जो implementation change event नहीं उठाता वह “फिर पूछे जाने पर ही सही” अवस्था में है, और screen-reader user को state change नहीं बताया जाता।

Screen reader को state change बताने का प्रवाहControl का मान बदलते ही AutomationPeer Name property-changed event उठाता है; assistive technology स्वयं दोबारा नहीं लाती, इसलिए बिना event पुराने name पर रहती है और change नहीं देखतीScreen readerAutomationPeerControlScreen readerAutomationPeerControlबिना event पुराने name पर रहता हैIsOnline मान बदलता हैName property-changed event उठाएँनई state announce करें

चित्र 11: मान change screen reader तक तभी पहुँचता है जब AutomationPeer उसे change event से बताए।

यदि custom control में operations हों (दब सके, मान बदल सके, चुना जा सके), GetPattern override कर IInvokeProvider या IRangeValueProvider जैसी pattern interfaces दें।15 बिंदु यह है कि यदि Peer भी shared-control-library पक्ष पर बनाएँ, उसका उपयोग करने वाली हर screen automatic supported हो जाती है। वही अध्याय 9 के “बग़ल में फैलाना” की नींव है।

6. क्या हर function केवल keyboard से पहुँचा जा सकता है?

WCAG success criterion 2.1.1 (Keyboard) अपेक्षा करता है कि content की सभी functionality keyboard interface से operate हो।8 Screen-reader user सिद्धांततः mouse नहीं उपयोग करता, इसलिए keyboard से न पहुँचने वाला function न होने के बराबर है। जाँच दृष्टियाँ निम्न हैं।

दृष्टि क्या confirm करें WinForms / WPF में मुख्य साधन
Tab order क्या Tab-key गति क्रम visual order (ऊपर-बाएँ → नीचे-दाएँ) से मेल खाता है? TabIndex सजाना, TabStop set करना
Access keys क्या Alt+letter से मुख्य मद पर सीधे जा सकते हैं? WinForms में Text में &; WPF में header में _
Shortcuts क्या बारंबार operations (save, search, confirm) की स्वतंत्र key है? Ctrl+S आदि सौंपना, menu पर दिखाना
Focus indication क्या आँखों से देख सकते हैं focus अब कहाँ है? Focus rectangle न हटाएँ; custom-draw पर स्वयं खींचें
केवल-mouse functions क्या कोई function केवल double-click, right-click, drag या hover से? वही function menu या key से भी दें
Dialog क्या Enter = default button और Esc = cancel काम करते हैं? AcceptButton/CancelButton, IsDefault/IsCancel

WinForms accessibility walkthrough भी बुनियाद के रूप में input fields के ठीक पहले tab order में label रखना, और जिन controls व menus पर user जाना चाहे उन पर access keys रखना सूचीबद्ध करता है।12

जो ज़ोर देना चाहते हैं वह यह कि यह “विकलांगता support की extra लागत” नहीं। आदेश प्रवेश जैसी regular job में, home position से हाथ हटाए बिना input पूरा कर पाना ही operator की throughput तय करता है। अव्यवस्थित tab order या mouse-आवश्यक operations वह दोष है जो हर user की productivity हर दिन थोड़ी काटता है। Accessibility support और keyboard दक्षता एक ही काम के दो नाम हैं (उपयोग environment अनुसार प्राथमिकताओं के लिए “Windows app UX design” भी देखें)।

Keyboard सजाने का दोहरा प्रभावTab order, access keys और focus indication सजाना एक साथ दो प्रभाव देता है — assistive-technology user function तक पहुँचता है, और हर operator की input गति — और केवल mouse से उपयोग योग्य function न होने के बराबर हैKeyboard सजाएँAssistive-tech userहर operator की गतिकेवल-mouse functionन होने के बराबर

चित्र 12: Keyboard operations सजाना assistive-technology support और हर user की दक्षता एक साथ साकार करता है; केवल-mouse functions न होने के बराबर हैं।

7. रंग और contrast — 4.5:1 और “रंग एकमात्र साधन नहीं”

7.1. Contrast ratio का मार्गदर्शक 4.5:1 है

WCAG success criterion 1.4.3 (Contrast (Minimum)) text और text की images के लिए कम से कम 4.5:1 contrast ratio, और बड़े text के लिए कम से कम 3:1 अपेक्षित करता है।8 सफ़ेद background पर हल्का-धूसर text रखने वाला आधुनिक design इस मानदंड से नीचे गिरना दुर्लभ नहीं। Business app users में वे शामिल हैं जिनकी दृष्टि और रंग दृष्टि उम्र से बदली, और जो कारखाने जैसी कम रोशनी में उपयोग करते हैं। Design review पर contrast checker से मापने की आदत डालें।

7.2. जानकारी केवल रंग से न पहुँचाएँ

Success criterion 1.4.1 (Use of Color) है कि रंग जानकारी पहुँचाने का एकमात्र visual साधन नहीं होना चाहिए।8 Business app में typical उदाहरण निम्न हैं।

  • Error पंक्ति केवल लाल text में दिखाना → error icon और message column भी दें
  • Required fields केवल label रंग से दिखाना → “*” या शब्द “आवश्यक” जोड़ें
  • Status केवल lamp रंग से दिखाना → रंग + आकार, या शब्द (“चल रहा”, “रुका”)

रंग दृष्टि की विविधता देखते यह भी “विशेष response” नहीं बल्कि display design की बुनियाद है।

केवल रंग से पहुँचाई जानकारी का replacementकेवल लाल text में error दिखाने वाले display को error icon प्लस message column से बदला जाता है; केवल label रंग से required दिखाने को शब्द आवश्यक जोड़कर; केवल lamp रंग से status को आकार या शब्द से जोड़करकेवल लाल text में errorIcon और शब्द भी देंकेवल label रंग से requiredशब्द आवश्यक जोड़ेंकेवल lamp रंग से statusरंग को आकार या शब्द से जोड़ें

चित्र 13: केवल रंग से पहुँचाने के typical उदाहरण icon, शब्द, और आकार या text जोड़कर बदले जाते हैं।

7.3. Contrast themes (high contrast) का पालन

Windows में contrast themes (पूर्व high contrast) हैं जो foreground और background के मज़बूत अलगाव वाली color scheme पर switch करती हैं; user built-in themes चुन और edit कर सकता है जो contrast ratio सामान्यतः 7:1 या अधिक रखने के लिए design हैं।9 App पक्ष का सिद्धांत सरल है: रंग hard-code न करें; system colors का सम्मान करें।

  • WinForms: यदि ForeColor/BackColor default पर छोड़ें, user की color setting उपयोग होती है। जहाँ अपना रंग लगाया हो, SystemInformation.HighContrast से जानें, SystemColors-based scheme पर switch करें, और UserPreferenceChanged event से setting change का पालन करें।12
  • WPF/WinUI: यदि SystemColors-class resources reference करें, theme switch का पालन होता है। जहाँ अपना brush भरा हो वह टूटने का कारण बनता है।9
Contrast themes का पालनजहाँ रंग hard-code हो वहाँ contrast theme switch पर scheme टूटती है, इसलिए SystemColors-based scheme पर switch करें और setting-change event से पालन करें; system colors reference करें तो user के रंग automatic पालन होते हैंHard-codeSystem-color referenceContrast theme पर switchरंग कैसे specify?Color scheme टूटती हैUser रंगों का automatic पालनSystemColors पर switchSetting-change event से पालन

चित्र 14: केवल जहाँ रंग hard-code हो वहाँ contrast themes में टूटता है; system-color reference automatic पालन करता है।

साथ ही, कम दृष्टि वाला user अक्सर उच्च OS magnification (DPI scaling) उपयोग करता है, इसलिए high-DPI support भी accessibility support का हिस्सा है। App जिसका layout 125%–200% पर टूटे उस बिंदु पर अनुपयोगी है। विवरण के लिए “WinForms में high-DPI support” और “WPF high-DPI support” देखें।

8. Practice में validation — Accessibility Insights और screen-reader hands-on जाँच

8.1. Accessibility Insights for Windows

Microsoft Windows apps के लिए accessibility validation tool के रूप में Accessibility Insights for Windows देता है, तीन मुख्य उपयोगों के साथ।10

  • Live Inspect: Element पर mouse hover करें या keyboard-focus करें, और उसकी UIA properties (Name, ControlType, patterns आदि) confirm कर सकते हैं। “इस button का Name क्या है” देखने का सबसे छोटा साधन।
  • FastPass: पाँच मिनट से कम में high-impact accessibility समस्याएँ पकड़ने वाली हल्की जाँच। Missing Name जैसी mechanically decided समस्याएँ प्रति नई screen list हो सकती हैं।
  • Troubleshooting: विशेष समस्या के निदान और सुधार में सहायता। पकड़ी समस्या से इस लेख में उद्धृत per-framework सुधार guides तक सीधे चल सकते हैं।

Windows SDK में शामिल Inspect.exe और AccEvent भी UIA tree और properties confirm कर सकते हैं, पर वे legacy tools माने जाते हैं, और अब Accessibility Insights पर जाना recommended है।10

Accessibility Insights के तीन उपयोगAccessibility Insights for Windows Live Inspect से UIA properties confirm, FastPass से high-impact समस्याओं की हल्की जाँच, और Troubleshooting से निदान व सुधार सहायता देता है; Inspect.exe जैसे legacy tools से जाना recommended हैजाना recommendedAccessibility InsightsLive InspectFastPassTroubleshootingUIA properties confirmHigh-impact समस्याएँ पकड़ेंनिदान और सुधार सहायताInspect.exe आदि

चित्र 15: Accessibility Insights के तीन उपयोग confirm, पकड़ना और निदान हैं, और legacy tools से जाने का destination है।

8.2. Screen reader से hands-on जाँच

Tool की automatic जाँच केवल mechanically decided समस्याएँ पकड़ सकती है। अंत में, हमेशा screen reader से वास्तविक business operations चलाएँ। Windows-built-in Narrator Ctrl+Windows key+Enter से तुरंत शुरू होता है, और NVDA निःशुल्क लाया जा सकता है।11 जाँच की तरकीब screen देखे बिना (या display बंद) केवल announcement पर भरोसा कर यह आज़माना है कि “एक आदेश दर्ज कर पुष्टि करें” जैसा वास्तविक कार्य पूरा हो सकता है या नहीं। Name होते हुए भी announcement क्रम असंगत होना, या focus का modal से बाहर निकलना, केवल hands-on मिलता है।

Tool validation और hands-on जाँच का combinationFastPass जैसी automatic जाँच केवल mechanically decided समस्याएँ पकड़ सकती है; शेष hands-on screen reader से वास्तविक business operations चलाकर announcement-क्रम और focus समस्याएँ खोजकर मिलता हैTool की automatic जाँचMechanically decided समस्याएँन पकड़ी समस्याएँ रहती हैंScreen reader से hands-on जाँचBusiness operations चलाएँAnnouncement-क्रम और focus समस्याएँ

चित्र 16: Automatic जाँच से mechanical समस्याएँ list करें, और शेष screen reader से hands-on खोजें।

8.3. Development प्रवाह में बनाना, और UI automated testing से परस्पर लाभ

Validation व्यक्ति-निर्भर न रहे, इसके लिए नई screens की review मदों में निम्न checklist जोड़ने की सलाह है।

# जाँच मद साधन
1 FastPass शून्य errors Accessibility Insights
2 हर input field और button का Name है Live Inspect
3 केवल Tab key से हर function पहुँचा जा सकता है हाथ से
4 Enter/Esc और मुख्य shortcuts काम करते हैं हाथ से
5 Text contrast ratio 4.5:1 या अधिक Contrast checker
6 Contrast theme में नहीं टूटता Theme switch कर दृष्टि से जाँचें
7 200% scaling पर नहीं टूटता Display settings बदल कर दृष्टि से जाँचें
8 Screen reader से representative कार्य पूरा हो सकता है Narrator/NVDA

और एक और। FlaUI आदि से UI automated testing उसी UIA पर बना है जिसका screen reader उपयोग करते हैं। Accessibility के लिए रखे Name और patterns test code के भाग बनते हैं, और tests के लिए design किया AutomationId Live Inspect में debugging आसान करता है। इसके विपरीत UIA tree में न दिखने वाला UI tests और assistive technology दोनों के लिए invisible है। Accessibility और testability एक ही investment के दो पहलू हैं (“Windows desktop apps के लिए UI automated testing”)।

Accessibility और UI automated testing का परस्पर लाभScreen reader और FlaUI जैसा UI automated testing एक ही UIA पर बने हैं, इसलिए रखे Name और patterns दोनों से उपयोग हो सकते हैं, और UIA tree में न दिखने वाला UI दोनों से invisible हैUIA tree सजानाScreen reader पढ़ सकता हैUI automated testing में उपयोगएक ही investment के दो पहलूUIA में न दिखने वाला UIदोनों से invisible

चित्र 17: एक ही UIA foundation पर होने से UIA tree सजाना assistive technology और UI automated testing दोनों को लाभ देता है।

9. प्राथमिकताएँ कैसे तय करें — हर screen एक साथ न ठीक करें

सैकड़ों screens की core system एक साथ ठीक करना लागत और quality दोनों में अयथार्थ है। जो दृष्टिकोण हम सुझाते हैं वह निम्न तीन स्तर हैं।

  1. उन screens से ठीक करें जिन्हें वह user job में उपयोग करता है। Reasonable accommodation संबंधित व्यक्ति के अनुरोध का व्यक्तिगत उत्तर देने की process है।1 पहले व्यक्ति को screen reader से वास्तविक job चलाने दें, और साथ पहचानें कहाँ अटकते हैं। कई मामलों में दैनिक काम की screens कुछ से एक दर्जन तक सिमटती हैं, और उनमें घातक समस्याएँ (बिना name button, keyboard से न दबने वाला confirm button) दिनों के सुधार में हल हो सकती हैं।
  2. नए development को standard-compliant बनाएँ। अध्याय 8 की checklist Definition of Done में जोड़ें, और नई screens शुरू से supported बनाएँ। बाद के सुधार से भिन्न, design time बनाने की लागत वृद्धि मामूली है।
  3. Shared controls ठीक कर बग़ल में फैलाएँ। Search dialog, grid, या date input जैसे shared in-house parts पर default AccessibleName या AutomationPeer लागू करें तो वह उनका उपयोग करने वाली हर screen पर batch में प्रभावी होता है। व्यक्तिगत screens एक-एक छूने से कहीं अधिक cost-effective चाल है।
सुधार प्राथमिकता के तीन स्तरUser job में उपयोग करने वाली screens से ठीक करें, नई development को checklist से standard-compliant बनाएँ, और shared controls ठीक कर हर screen तक फैलाएँ1. User की screens से ठीक करें2. नया काम standard-compliant3. Shared controls से बग़ल में फैलाएँउनका उपयोग करने वाली हर screen पर batch में प्रभावी

चित्र 18: हर screen एक साथ ठीक कर नहीं, बल्कि उपयोग में screens, नया काम, और shared parts के तीन स्तरों में आगे बढ़ें।

और संवाद का record technical response जितना ही महत्वपूर्ण है। Reasonable accommodation “व्यक्तिगत संवाद और समायोजन” की process है, हर अनुरोध पूर्ण पूरा करने की नहीं। व्यक्ति के साथ वैकल्पिक साधन सोचना (वह काम दूसरी screen पर करना, CSV export तैयार करना, operations में cover करना) और excessive-burden वाले सुधार पर सहमत होना भी constructive dialogue का वैध परिणाम है।1 क्या माँगा गया, क्या उत्तर दिया गया, और क्या वैकल्पिक साधन बना, record करना संगठन की सद्भावना का प्रमाण बनता है।

Constructive dialogue और record का प्रवाहविकलांग व्यक्ति के अनुरोध का constructive dialogue से उत्तर दें; जो सुधार हो सके करें; excessive-burden वाले सुधार पर व्यक्ति से वैकल्पिक साधन सोचें और सहमत हों; क्या माँगा, क्या उत्तर दिया, क्या वैकल्पिक बना, record करेंनहींहाँअनुरोधConstructive dialogueक्या भार excessive है?सुधार से उत्तर देंवैकल्पिक साधन सोचें और सहमत होंइतिहास record करें

चित्र 19: Constructive dialogue में व्यक्ति से सुधार या वैकल्पिक साधन पर सहमत होते हैं, और वह इतिहास record में छोड़ते हैं।

10. सारांश

  • अप्रैल 2024 से प्रभावी संशोधित विकलांग व्यक्तियों के प्रति भेदभाव उन्मूलन अधिनियम से reasonable accommodation देना व्यवसायों के लिए भी obligation बन गया। Employment क्षेत्र 2016 से विकलांग व्यक्तियों के रोजगार संवर्धन अधिनियम के अधीन employer obligation है। App को पहले आसान बनाना “environmental improvement” (effort-obligation) है, और जितना आगे गया, व्यक्तिगत responses उतनी हल्की।
  • Technical मानदंड WCAG (JIS X 8341-3:2016) में केंद्रित हैं, और वही सोच WCAG2ICT से desktop apps पर लागू हो सकती है।
  • Screen reader app को UI Automation से पढ़ता है। UIA tree, properties (Name/ControlType/AutomationId), और control patterns की तिकड़ी नींव है।
  • सर्वोच्च प्राथमिकता Name है। WinForms AccessibleName और Label को tab order से जोड़ना उपयोग करता है; WPF AutomationProperties.Name/LabeledBy; custom controls AutomationPeer।
  • हर function केवल keyboard से पहुँचना WCAG success criterion है और साथ ही हर operator की productivity। Tab order, access keys और focus indication सजाएँ।
  • रंग की तीन बुनियादें contrast ratio 4.5:1, रंग एकमात्र साधन नहीं, और contrast themes में system colors का सम्मान हैं।
  • Validation को Accessibility Insights के FastPass+Live Inspect और Narrator/NVDA से hands-on जाँच से जोड़ें, और नई screens की checklist के रूप में development प्रवाह में बनाएँ।
  • हर screen एक साथ न ठीक करें; user की screens → नए काम के लिए standard support → shared controls का बग़ल roll-out क्रम में आगे बढ़ें। Reasonable accommodation संवाद की process है, और इतिहास का record संगठन की रक्षा करता है।

पहले कदम के रूप में अपनी मुख्य screens में से एक चुनें, Accessibility Insights for Windows में FastPass चलाएँ, फिर केवल Tab key से job चलाएँ। तीस मिनट में आपके अपने app की current स्थिति आश्चर्यजनक रूप से ठोस हो जाती है।

संबंधित लेख

संबंधित परामर्श क्षेत्र

KomuraSoft LLC WinForms/WPF business apps की accessibility सुधार (screen-reader support, keyboard operations सजाना, contrast-theme support), shared controls पर AutomationPeer लागू करना, और Accessibility Insights से current-status निदान व प्राथमिकता-निर्धारण परामर्श सँभालता है। “हम confirm करना चाहते हैं कि employee हमारा app screen reader से उपयोग कर सकता है या नहीं” चरण से शुरू करना ठीक है।

संदर्भ लिंक

  1. Cabinet Office, Leaflet “From 1 April 2024, the provision of reasonable accommodation became an obligation”. यह कि Reiwa 3 amendment 1 अप्रैल Reiwa 6 से प्रभावी हुआ और व्यवसायों द्वारा reasonable accommodation देना obligation बना; कि reasonable accommodation excessive burden न होने वाली सीमा में विकलांग व्यक्ति के आशय का उत्तर है; कि constructive dialogue महत्वपूर्ण है और एकतरफा इनकार obligation उल्लंघन बन सकता है; कि “environmental improvement” unspecified संख्या के लिए अग्रिम सुधार effort-obligation है; और कि employment व काम रोजगार संवर्धन अधिनियम के प्रावधानों का पालन करते हैं। ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10

  2. Ministry of Health, Labour and Welfare, The prohibition of discrimination against persons with disabilities in employment and the obligation to provide reasonable accommodation. यह कि Heisei 28 अप्रैल से प्रभावी संशोधित रोजगार संवर्धन अधिनियम employers को employment में विकलांगता भेदभाव निषेध और excessive burden न होने वाली सीमा में reasonable accommodation देने के लिए बाध्य करता है; और संबंधित सामग्री जैसे reasonable-accommodation guidelines। ↩ ↩2 ↩3 ↩4

  3. Web Accessibility Infrastructure Committee (WAIC), Understanding JIS X 8341-3:2016. यह कि JIS X 8341-3:2016 ISO/IEC 40500:2012 की corresponding standard है और मुख्य भाग WCAG 2.0 की identical content है; और standard द्वारा माने गए web content का दायरा। ↩ ↩2

  4. W3C, Guidance on Applying WCAG 2 to Non-Web Information and Communications Technologies (WCAG2ICT). W3C Group Note जो दिखाता है WCAG 2.0/2.1/2.2 के सिद्धांत, guidelines और success criteria non-web documents और software पर कैसे लागू करें। ↩ ↩2

  5. Microsoft Learn, UI Automation Specification. यह कि UI Automation screen readers जैसी assistive technology को UI जानकारी देता है और standard input के अलावा operations सक्षम करता है; और UIA elements, tree, properties, control patterns, control types और events की रचना। ↩ ↩2 ↩3

  6. Microsoft Learn, WinForms: Setting the accessible name on a control. यह कि कुछ controls पर Text UIA Name के रूप में reuse होता है, जबकि ComboBox, ListBox, ListView, PictureBox, ProgressBar, TabControl, TextBox, TreeView आदि नहीं; कि target control Label के TabIndex के ठीक बाद रखने से Label text Name बनता है; और AccessibleName स्पष्ट set करना तथा designer file में empty string रह जाना। ↩ ↩2 ↩3 ↩4

  7. Microsoft Learn, WPF: Setting the accessible name on a button. यह कि Button का Content default से UIA Name के रूप में reuse होता है; कि बिना name button का उद्देश्य screen reader announce नहीं कर सकता; और TextBlock को AutomationProperties.LabeledBy से जोड़ना तथा AutomationProperties.Name स्पष्ट set करना। ↩ ↩2 ↩3 ↩4

  8. W3C / Web Accessibility Infrastructure Committee (WAIC) translation, Web Content Accessibility Guidelines (WCAG) 2.1 Japanese translation. Success criterion 1.4.3 (Contrast (Minimum)) text के लिए 4.5:1 और बड़े text के लिए 3:1; success criterion 1.4.1 (Use of Color) रंग को एकमात्र visual साधन न बनाना; और success criterion 2.1.1 (Keyboard) सभी functionality की keyboard operability। ↩ ↩2 ↩3 ↩4 ↩5 ↩6

  9. Microsoft Learn, Contrast themes. यह कि contrast themes सामान्यतः 7:1 या अधिक contrast ratio का सीमित palette उपयोग करती हैं; built-in themes चुनना और रंग edit करना; और SystemColor-class resources foreground/background pairs के रूप में defined हैं और theme switch का automatic पालन करते हैं। ↩ ↩2 ↩3

  10. Microsoft Learn, Accessibility testing. Accessibility Insights for Windows के तीन परिदृश्य — Live Inspect (hover/focus से UIA properties confirm), FastPass (पाँच मिनट से कम में high-impact समस्याएँ), और Troubleshooting — तथा Inspect और AccEvent जैसे legacy tools से जाने की recommendation। ↩ ↩2 ↩3

  11. NVDA Japanese Team, NVDA Japanese edition. निःशुल्क open-source Windows screen reader NVDA और उसके Japanese version का प्रावधान। ↩ ↩2

  12. Microsoft Learn, Walkthrough: Creating an Accessible Windows-based Application. Input fields के ठीक पहले tab order में descriptive Label रखना; Text में & से access keys; SystemInformation.HighContrast से high contrast जानना और SystemColors उपयोग; UserPreferenceChanged event का पालन; और रंग से पहुँचाई जानकारी के साथ visual संकेत जोड़ना। ↩ ↩2 ↩3

  13. Microsoft Learn, Providing Accessibility Information for Controls. WinForms control की AccessibleName, AccessibleDescription, AccessibleRole और AccessibleDefaultActionDescription properties और उन्हें कैसे set करें। ↩

  14. Microsoft Learn, WPF: Setting the accessible name on an edit field. यह कि TextBlock का Text UIA Name के रूप में reuse होता है, जबकि TextBox का Text UIA Value के रूप में expose होता है; और label TextBlock को AutomationProperties.LabeledBy से TextBox से जोड़ना, या AutomationProperties.Name set करना। ↩

  15. Microsoft Learn, UI Automation of a WPF Custom Control. Custom control OnCreateAutomationPeer override कर AutomationPeer-derived class लौटाना; base control के matching Peer class inherit में लेना; GetPattern से pattern provider देना; और XAML पक्ष से AutomationProperties attributes से override करना। ↩ ↩2

निकटवर्ती विषयों में गहराई से जाने के लिए समान टैग वाले नवीनतम लेख।

"Not Responding" वास्तव में क्या है — Windows ऐप के hang का फैसला कैसे करता है, और hang न करने वाले ऐप कैसे design करें

Windows का "Not Responding" वह mechanism है जिसमें OS तय करता है कि window ने 5 सेकंड message नहीं लिया और उसे ghost window से बदल देता ह...

ये पृष्ठ विषय को सेवाओं और निर्णयों के व्यापक संदर्भ में रखते हैं।

यह लेख निम्नलिखित सेवाओं से सीधे जुड़ा है।

अक्सर पूछे जाने वाले प्रश्न

इस लेख के विषय पर परामर्श में अक्सर पूछे जाने वाले प्रश्न।

क्या business app की accessibility support कानून से आवश्यक है?
विकलांग व्यक्तियों के प्रति भेदभाव उन्मूलन अधिनियम का 2021 amendment 1 अप्रैल 2024 से प्रभावी हुआ, और विकलांग व्यक्तियों को reasonable accommodation देना व्यवसायों के लिए भी obligation बन गया। Reasonable accommodation वह response है जो विकलांग व्यक्ति के अनुरोध पर व्यक्तिगत बाधा को उस सीमा में हटाती है जो excessive burden न हो; app को पहले से उपयोग में आसान बनाना "environmental improvement" नामक effort-obligation है। Employment, जैसे employee और कंपनी का संबंध, उस अधिनियम के अधीन नहीं बल्कि विकलांग व्यक्तियों के रोजगार संवर्धन अधिनियम के अधीन है, जिसने अप्रैल 2016 से प्रभावी amendment से employers को reasonable accommodation देने के लिए बाध्य किया। यानी "employee business app उपयोग नहीं कर सकता" स्थिति कुछ समय से obligation के क्षेत्र में है। किसी मामले में कितना जाना व्यक्तिगत स्थिति पर निर्भर करता है, इसलिए Cabinet Office और Ministry of Health, Labour and Welfare के primary sources confirm करें और संबंधित व्यक्ति से संवाद से decision लें।
Screen reader Windows desktop app कैसे पढ़ता है?
Narrator और NVDA जैसे screen readers app के UI को UI Automation (UIA) नामक accessibility foundation से पढ़ते हैं। App पक्ष on-screen elements को UIA tree नामक structure में expose करता है; प्रत्येक element में Name (उद्देश्य) और ControlType (प्रकार) जैसी properties, और Invoke (दबाएँ) व Value (मान) जैसे control patterns होते हैं। Screen reader यह जानकारी "आदेश पुष्टि करें button" के रूप में announce करता है और pattern से operate करता है। Standard WinForms और WPF controls में यह mechanism शुरू से है, इसलिए developer का मुख्य काम Name खाली न छोड़ना, UI को keyboard से operable बनाना, और custom controls पर जानकारी लागू करना है।
Existing WinForms app पर कहाँ से शुरू करें?
सबसे छोटा path target screen पर Accessibility Insights for Windows का FastPass चलाना और खाली Name वाले controls व tab-order समस्याएँ list करना है। सुधार icon-only buttons पर AccessibleName set करने, input fields के ठीक पहले tab order में Label जोड़ने, और TabIndex को visual order से मिलाने से शुरू होते हैं। फिर Narrator या NVDA शुरू करें और screen देखे बिना वास्तविक business operations चलाएँ, और confirm करें कहाँ अटकते हैं। हर screen एक साथ ठीक करने की ज़रूरत नहीं; जिन screens को कोई वास्तव में उपयोग करता है उनसे शुरू करना, और नई screens को checklist से standard-compliant बनाना, यथार्थ है।
High-contrast (contrast themes) support के लिए क्या करें?
Base रंग hard-code न करना और system colors का सम्मान करना है। WinForms में ForeColor/BackColor default पर छोड़ें या SystemColors उपयोग करें, स्थिति SystemInformation.HighContrast से जानें, और switch का UserPreferenceChanged event से पालन करें। WPF और WinUI में भी, यदि SystemColors-class resources reference करें, theme switch automatic पालन होता है। साथ ही जानकारी "केवल रंग से" न पहुँचाएँ — error केवल लाल दिखाना — और इसे icon या शब्द से जोड़ें। Ordinary theme में भी WCAG के text contrast ratio 4.5:1 या अधिक को मार्गदर्शक मानना खराब रोशनी वाली दुकान और वृद्ध users के लिए UI अधिक readable बनाता है।
क्या accessibility support UI automated testing में भी मदद करती है?
हाँ। FlaUI जैसे UI automated-testing tools उसी UI Automation पर बने हैं जिसका screen reader उपयोग करते हैं। Accessibility के लिए रखे Name, ControlType और control patterns test code से ज्यों-के-त्यों उपयोग हो सकते हैं, और tests के लिए design किया AutomationId element identification स्थिर करता है। इसके विपरीत custom-drawn UI जो UIA tree में नहीं दिखता, screen reader और tests दोनों के लिए invisible है। Accessibility और automated testing एक ही foundation में investment हैं, इसलिए किसी एक को रखने से दूसरे की लागत भी घटती है।

लेखक की प्रोफ़ाइल

लेख के लेखक का परिचय पृष्ठ।

Go Komura

KomuraSoft LLC के प्रतिनिधि

Windows सॉफ़्टवेयर विकास, तकनीकी परामर्श और बग जाँच में विशेषज्ञ, विशेष रूप से मौजूदा सिस्टम वाली परियोजनाओं और पुनरुत्पादन में कठिन बग में।

सार्वजनिक लिंक

ब्लॉग पर लौटें