Foksh قام بنشر منذ 1 ساعه قام بنشر منذ 1 ساعه أخواني وأساتذتي ومعلمينا ( دون استثناء ) بعد قراءتي لموضوع الأخ @mohammed farhat في هذا الموضوع :- ازالة لوحة المفاتيح العربية الزائدة الناتجة عن اعدادت اللغة لتشغيل الاكسيس تبادر لي استخراج فكرة من مشروعي السابق ( تغيير لغة النظام في Unicode ) ، بحيث كانت فعلاً مشكلة تؤرق مطوري ومبرمجي آكسيس . حيث كانت النتيجة من تعداد الملفات التي نقوم بتحميلها تؤدي إلى إضافة أكثر من لغة في لوحات المفاتيح في نسخة الويندوز الخاصة بالمطور . وهنا يجدر بي الذكر إلى أن أحد أهم الأسباب أن بعض ملفات قواعد البيانات التي نقوم بتحميلها تأتي مرفقة بإعدادات لغة أو تخطيط لوحة مفاتيح مخصصة حسب جهاز المصدر ، خاصة إذا تم إنشاؤها أو تعديلها على أنظمة تشغيل بلغات مختلفة . فعند تشغيل الملف ، قد يقوم النظام تلقائياً بإضافة تلك اللغات لتوافق التنسيق أو الترميز المستخدم . وهنا ذَهبَت بي الحلول بعد تعددها إلى إنشاء باتش يجبر الويندوز عند التشغيل لإستعادة لوحات المفاتيح التي تهم المطور وهي عادةً :- اللغة الإنجليزية + اللغة العربية الخاصة ببلده . وفي التالي صورة من الموضوع الأصلي لشكل لوحات المفاتيح الغير مرغوب بها :- وسيلاحظ المستخدم إنه سيضطر للضغط على مفاتيح التبديل بين لغات لوحة المفاتيح اكثر من مرة للوصول الى اللغة التي يريدها . ومن هنا خرجتُ بفكرة الباتش الذي ما علينا إلا تشغيله مرة واحدة فقط لا غير ، واختيار البلد الذي نرغب بتثبيت لغة لوحة مفاتيحها ، من خلال الواجهة التالية :- لاحظوا أنني قمت بإضافة الدول العربية فقط لا غير ( الفكرة قابلة للتطوير لاحقاً للغات أخرى ثابتة ) . فمثلاً ولنفترض أنني اريد تثبيت لوحة المفاتيح العربية للأردن ، فسنختار رقم 3 ( كمثال ) ثم مفتاح الإدخال Enter فقط . وسيتكفل الباتش بترتيب الأمور بحيث عند كل تشغيل للويندوز سيتم تثبيت فقط اللغة الانجليزية والعربية للأردن كما في المثال . الباتش يعمل بصمت من خلال الأكواد التالية ، وقد تم إضافة شرح بسيط لكل حدث تلافياً من الخوف من أي ملفات أو خطوات غامضة :- ::attrib +r "%~f0" @echo off @echo off mode con:cols=75 lines=35 setlocal enabledelayedexpansion for /f %%a in ('echo prompt $E^| cmd') do set "ESC=%%a" set "blue=%ESC%[1;34m" set "green=%ESC%[1;32m" set "cyan=%ESC%[1;36m" set "red=%ESC%[1;31m" set "yellow=%ESC%[1;33m" set "magenta=%ESC%[1;35m" set "reset=%ESC%[0m" echo. echo %blue%**********************************************%reset% echo %green%*** ***%reset% echo %cyan%*** %yellow%FFFFF%red%F %magenta%OOO %blue%KK KK %green%SSSS %cyan%HH HH %cyan%***%reset% echo %yellow%*** %red%FF %magenta%O O %blue%KK KK %green%SS %cyan%HH HH %yellow%***%reset% echo %red%*** %magenta%FFFFF %blue%O O %green%KKK %cyan%SS %yellow%HHHHHH %red%***%reset% echo %magenta%*** %blue%FF %green%O O %cyan%KK KK %yellow%SS %red%HH HH %magenta%***%reset% echo %blue%*** %green%FF %cyan%OOO %yellow%KK KK %red%SSSSS %magenta%HH HH %blue%***%reset% echo %green%*** ***%reset% echo %cyan%********************%yellow%2 %red%0 %magenta%2 %blue%5%cyan%*******************%reset% echo. :: باقي الكود يبقى كما هو... echo Select the Arabic country to add its keyboard layout: echo 1 - Egypt echo 2 - Saudi Arabia echo 3 - Jordan echo 4 - Iraq echo 5 - Morocco echo 6 - UAE echo 7 - Syria echo 8 - Lebanon echo 9 - Tunisia echo 10 - Algeria echo 11 - Kuwait echo 12 - Bahrain echo 13 - Oman echo 14 - Qatar echo 15 - Libya echo 16 - Sudan echo 17 - Yemen set /p choice=Enter the number of your choice (1-17) or 'X' to remove startup task: :: التحقق إذا كان المستخدم يريد إزالة المهمة if /i "%choice%"=="X" ( echo. echo Removing startup task... :: حذف المهمة المجدولة schtasks /Delete /TN "KeyboardShutdownFix" /F 2>nul :: حذف الملفات من مجلد Startup if exist "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\KeyboardFix.bat" ( del "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\KeyboardFix.bat" ) if exist "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\RunHidden.vbs" ( del "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\RunHidden.vbs" ) echo Startup task removed successfully! echo. echo Closing automatically in: timeout /t 1 /nobreak >nul & echo 3... timeout /t 1 /nobreak >nul & echo 2... timeout /t 1 /nobreak >nul & echo 1... exit /b ) set "localeID=" set "localeName=" if "%choice%"=="1" set localeID=00000C01& set localeName=ar-EG if "%choice%"=="2" set localeID=00000401& set localeName=ar-SA if "%choice%"=="3" set localeID=00002C01& set localeName=ar-JO if "%choice%"=="4" set localeID=00000801& set localeName=ar-IQ if "%choice%"=="5" set localeID=00001801& set localeName=ar-MA if "%choice%"=="6" set localeID=00003801& set localeName=ar-AE if "%choice%"=="7" set localeID=00002801& set localeName=ar-SY if "%choice%"=="8" set localeID=00003001& set localeName=ar-LB if "%choice%"=="9" set localeID=00001C01& set localeName=ar-TN if "%choice%"=="10" set localeID=00001401& set localeName=ar-DZ if "%choice%"=="11" set localeID=00003401& set localeName=ar-KW if "%choice%"=="12" set localeID=00003C01& set localeName=ar-BH if "%choice%"=="13" set localeID=00002001& set localeName=ar-OM if "%choice%"=="14" set localeID=00004001& set localeName=ar-QA if "%choice%"=="15" set localeID=00001001& set localeName=ar-LY if "%choice%"=="16" set localeID=00002C01& set localeName=ar-SD if "%choice%"=="17" set localeID=00002401& set localeName=ar-YE if not defined localeID ( echo. echo Invalid selection. Exiting... timeout /t 3 /nobreak >nul exit /b ) echo Applying keyboard settings immediately... reg delete "HKCU\Keyboard Layout\Preload" /f >nul 2>&1 reg delete "HKCU\Keyboard Layout\Substitutes" /f >nul 2>&1 reg add "HKCU\Keyboard Layout\Preload" /v 1 /t REG_SZ /d 00000409 /f reg add "HKCU\Keyboard Layout\Preload" /v 2 /t REG_SZ /d %localeID% /f reg add "HKCU\Keyboard Layout\Substitutes" /v %localeID% /t REG_SZ /d %localeID% /f set psFile=%TEMP%\UpdateLang.ps1 echo $langList = Get-WinUserLanguageList > "%psFile%" echo $langList.Clear() >> "%psFile%" echo $langList.Add("en-US") >> "%psFile%" echo $langList.Add("%localeName%") >> "%psFile%" echo Set-WinUserLanguageList $langList -Force >> "%psFile%" powershell -ExecutionPolicy Bypass -File "%psFile%" set "shutdownScript=%TEMP%\KeyboardShutdownFix.bat" echo @echo off > "%shutdownScript%" echo reg delete "HKCU\Keyboard Layout\Preload" /f >nul 2^>^&1 >> "%shutdownScript%" echo reg delete "HKCU\Keyboard Layout\Substitutes" /f >nul 2^>^&1 >> "%shutdownScript%" echo reg add "HKCU\Keyboard Layout\Preload" /v 1 /t REG_SZ /d 00000409 /f >> "%shutdownScript%" echo reg add "HKCU\Keyboard Layout\Preload" /v 2 /t REG_SZ /d %localeID% /f >> "%shutdownScript%" echo reg add "HKCU\Keyboard Layout\Substitutes" /v %localeID% /t REG_SZ /d %localeID% /f >> "%shutdownScript%" echo exit >> "%shutdownScript%" set "taskName=KeyboardShutdownFix" set "taskXml=%TEMP%\ShutdownTask.xml" echo ^<?xml version="1.0" encoding="UTF-16"?^> > "%taskXml%" echo ^<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"^> >> "%taskXml%" echo ^<RegistrationInfo^> >> "%taskXml%" echo ^<Description^>Fix keyboard layout before shutdown^</Description^> >> "%taskXml%" echo ^</RegistrationInfo^> >> "%taskXml%" echo ^<Triggers^> >> "%taskXml%" echo ^<SessionStateChangeTrigger^> >> "%taskXml%" echo ^<Enabled^>true^</Enabled^> >> "%taskXml%" echo ^<StateChange^>SessionLock^</StateChange^> >> "%taskXml%" echo ^</SessionStateChangeTrigger^> >> "%taskXml%" echo ^</Triggers^> >> "%taskXml%" echo ^<Principals^> >> "%taskXml%" echo ^<Principal id="Author"^> >> "%taskXml%" echo ^<UserId^>%USERDOMAIN%\%USERNAME%^</UserId^> >> "%taskXml%" echo ^<LogonType^>InteractiveToken^</LogonType^> >> "%taskXml%" echo ^<RunLevel^>HighestAvailable^</RunLevel^> >> "%taskXml%" echo ^</Principal^> >> "%taskXml%" echo ^</Principals^> >> "%taskXml%" echo ^<Settings^> >> "%taskXml%" echo ^<MultipleInstancesPolicy^>IgnoreNew^</MultipleInstancesPolicy^> >> "%taskXml%" echo ^<DisallowStartIfOnBatteries^>false^</DisallowStartIfOnBatteries^> >> "%taskXml%" echo ^<StopIfGoingOnBatteries^>false^</StopIfGoingOnBatteries^> >> "%taskXml%" echo ^<AllowHardTerminate^>true^</AllowHardTerminate^> >> "%taskXml%" echo ^<StartWhenAvailable^>false^</StartWhenAvailable^> >> "%taskXml%" echo ^<RunOnlyIfNetworkAvailable^>false^</RunOnlyIfNetworkAvailable^> >> "%taskXml%" echo ^<IdleSettings^> >> "%taskXml%" echo ^<StopOnIdleEnd^>true^</StopOnIdleEnd^> >> "%taskXml%" echo ^<RestartOnIdle^>false^</RestartOnIdle^> >> "%taskXml%" echo ^</IdleSettings^> >> "%taskXml%" echo ^<AllowStartOnDemand^>true^</AllowStartOnDemand^> >> "%taskXml%" echo ^<Enabled^>true^</Enabled^> >> "%taskXml%" echo ^<Hidden^>false^</Hidden^> >> "%taskXml%" echo ^<RunOnlyIfIdle^>false^</RunOnlyIfIdle^> >> "%taskXml%" echo ^<WakeToRun^>false^</WakeToRun^> >> "%taskXml%" echo ^<ExecutionTimeLimit^>PT5M^</ExecutionTimeLimit^> >> "%taskXml%" echo ^<Priority^>7^</Priority^> >> "%taskXml%" echo ^</Settings^> >> "%taskXml%" echo ^<Actions Context="Author"^> >> "%taskXml%" echo ^<Exec^> >> "%taskXml%" echo ^<Command^>"%shutdownScript%"^</Command^> >> "%taskXml%" echo ^</Exec^> >> "%taskXml%" echo ^</Actions^> >> "%taskXml%" echo ^</Task^> >> "%taskXml%" schtasks /Delete /TN "%taskName%" /F 2>nul schtasks /Create /TN "%taskName%" /XML "%taskXml%" /F set "startupBat=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\KeyboardFix.bat" set "vbsFile=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\RunHidden.vbs" echo @echo off > "%startupBat%" echo reg add "HKCU\Keyboard Layout\Preload" /v 1 /t REG_SZ /d 00000409 /f >> "%startupBat%" echo reg add "HKCU\Keyboard Layout\Preload" /v 2 /t REG_SZ /d %localeID% /f >> "%startupBat%" echo reg add "HKCU\Keyboard Layout\Substitutes" /v %localeID% /t REG_SZ /d %localeID% /f >> "%startupBat%" echo exit >> "%startupBat%" echo Set WshShell = CreateObject("WScript.Shell") > "%vbsFile%" echo WshShell.Run "cmd /c call ""%startupBat%""", 0, False >> "%vbsFile%" echo. echo Keyboard settings applied successfully! echo. echo English (US) set as default. echo Arabic layout for selected country added as secondary. echo. echo Note: The system will maintain these settings automatically echo on every startup (no window will be visible). echo. echo Closing automatically in: timeout /t 1 /nobreak >nul & echo 3... timeout /t 1 /nobreak >nul & echo 2.. timeout /t 1 /nobreak >nul & echo 1. النتيجة مرهونة بتجاربكم طبعاً 😊 . الباتش تمت تجربته على العديد من إصدارات ويندوز 10 فما فوق . أي لم يتم تجربته على الإصدارات الأقل من ويندوز 10 ❌ الفكرة غير موجودة في أي منتدى عربي أو غربي . وهذا ما يميز منتديات أوفيسنا 😎 Foksh Layout.zip
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان