اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر

S1.png.b94d949126a2c6e59bab9ec56849dab2.png

أخواني وأساتذتي ومعلمينا ( دون استثناء )

بعد قراءتي لموضوع الأخ @mohammed farhat في هذا الموضوع :-

ازالة لوحة المفاتيح العربية الزائدة الناتجة عن اعدادت اللغة لتشغيل الاكسيس

تبادر لي استخراج فكرة من مشروعي السابق ( تغيير لغة النظام في Unicode ) ، بحيث كانت فعلاً مشكلة تؤرق مطوري ومبرمجي آكسيس . حيث كانت النتيجة من تعداد الملفات التي نقوم بتحميلها تؤدي إلى إضافة أكثر من لغة في لوحات المفاتيح في نسخة الويندوز الخاصة بالمطور . وهنا يجدر بي الذكر إلى أن أحد أهم الأسباب أن بعض ملفات قواعد البيانات التي نقوم بتحميلها تأتي مرفقة بإعدادات لغة أو تخطيط لوحة مفاتيح مخصصة حسب جهاز المصدر ، خاصة إذا تم إنشاؤها أو تعديلها على أنظمة تشغيل بلغات مختلفة . فعند تشغيل الملف ، قد يقوم النظام تلقائياً بإضافة تلك اللغات لتوافق التنسيق أو الترميز المستخدم .

 

وهنا ذَهبَت بي الحلول بعد تعددها إلى إنشاء باتش يجبر الويندوز عند التشغيل لإستعادة لوحات المفاتيح التي تهم المطور وهي عادةً :-

اللغة الإنجليزية + اللغة العربية الخاصة ببلده .

 

وفي التالي صورة من الموضوع الأصلي لشكل لوحات المفاتيح الغير مرغوب بها :-

image.png.ad3ec89148b5c9b878f92248ee787753.png

وسيلاحظ المستخدم إنه سيضطر للضغط على مفاتيح التبديل بين لغات لوحة المفاتيح اكثر من مرة للوصول الى اللغة التي يريدها . ومن هنا خرجتُ بفكرة الباتش الذي ما علينا إلا تشغيله مرة واحدة فقط لا غير ، واختيار البلد الذي نرغب بتثبيت لغة لوحة مفاتيحها ، من خلال الواجهة التالية :-

image.png.4d498683e8cd38f3a25bdad735f2ddbf.png

 

لاحظوا أنني قمت بإضافة الدول العربية فقط لا غير ( الفكرة قابلة للتطوير لاحقاً للغات أخرى ثابتة ) . فمثلاً ولنفترض أنني اريد تثبيت لوحة المفاتيح العربية للأردن ، فسنختار رقم 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.

 

النتيجة مرهونة بتجاربكم طبعاً 😊 .

05.png.8fe3b502e8827cbc9c5d0d0a8c4e8770.png

  1. الباتش تمت تجربته على العديد من إصدارات ويندوز 10 فما فوق . أي لم يتم تجربته على الإصدارات الأقل من ويندوز 10 
  2. الفكرة غير موجودة في أي منتدى عربي أو غربي . وهذا ما يميز منتديات أوفيسنا 😎

 

Foksh Layout.zip

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information