דילוג לתוכן
  • חוקי הפורום
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
לוגו מותג
  1. דף הבית
  2. מחשבים וטכנולוגיה
  3. עזרה הדדית - מחשבים וטכנולוגיה
  4. עזרה - תנאי לבדיקת השפה

עזרה - תנאי לבדיקת השפה

מתוזמן נעוץ נעול הועבר נפתר עזרה הדדית - מחשבים וטכנולוגיה
11 פוסטים 3 כותבים 283 צפיות 2 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • נ נחנ נ נח

    יש כזאת פקודה שבודקת איזה שפה יש במחשב כרגע?
    3dbac6da-8847-4b02-9317-3f3e32124ddd-image.png
    (ב cmd/powershell/vbscript)
    תודה

    :::

    לשנות שפה אפשר עם vbscript

    set x=createobject("wscript.shell")
    x.sendkeys "+%"
    

    זה 'לוחץ' על shift+alt

    :::

    chvC מנותק
    chvC מנותק
    chv
    כתב ב נערך לאחרונה על ידי
    #2

    @נ-נח שאלה מצויינת
    כל מה שאני יכול להגיד לך שיש בפווארשל אובייקט מוגדר לזה שנקרא Get-Culture שמחזיר מערך של נתונים על כל הנושא של שפה ושם יש מפתח אחד שנקרא keyboardLayoutID שהוא אמור להכיל את הפריסת מקשים הנוכחית (זה מה שאתה מחפש)
    המציאות בפועל שוינדוס בנוי כנראה בצורה גאונית, או לא יודע מה ההסבר - זה לא עובד. זה מחזיר לי תמיד את השפה ברירת מחדל אצלי (אנגלית) גם כשאני על עברית. 🤦‍♂️
    הנתונים שהפקודה הזו מחזירה הם הקידוד של הפריסת מקשים על פי תקן LCID (Windows Language Code Identifier) יש לכל שפה קוד בעל 4 (?) ספרות. לדוגמא עברית זה 1037, אנגלית-ארהב זה 1033 (חח אנחנו קרובים אליהם)
    כאן יש רשימה מלאה https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c

    השימוש בפונקציה כמו שהזכרתי ייראה ככה בערך:

    (Get-Culture).keyboardLayoutID
    

    זה מחזיר את המספר הנ"ל (זה פשוט החרגה של הפלט שיצא מ-Get-Culture רק לחלק של keyboardLayoutID. אתה יכול להריץ רק את Get-Culture או עם פרמטרים כמו שתראה כאן https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-culture?view=powershell-7.1)

    קצרה בינתי מלהבין את הפדיחה הזו, אם אתה מצליח למצוא דרך אחרת אשמח לדעת גם

    בלוג

    נ נחנ תגובה 1 תגובה אחרונה
    5
    • chvC chv

      @נ-נח שאלה מצויינת
      כל מה שאני יכול להגיד לך שיש בפווארשל אובייקט מוגדר לזה שנקרא Get-Culture שמחזיר מערך של נתונים על כל הנושא של שפה ושם יש מפתח אחד שנקרא keyboardLayoutID שהוא אמור להכיל את הפריסת מקשים הנוכחית (זה מה שאתה מחפש)
      המציאות בפועל שוינדוס בנוי כנראה בצורה גאונית, או לא יודע מה ההסבר - זה לא עובד. זה מחזיר לי תמיד את השפה ברירת מחדל אצלי (אנגלית) גם כשאני על עברית. 🤦‍♂️
      הנתונים שהפקודה הזו מחזירה הם הקידוד של הפריסת מקשים על פי תקן LCID (Windows Language Code Identifier) יש לכל שפה קוד בעל 4 (?) ספרות. לדוגמא עברית זה 1037, אנגלית-ארהב זה 1033 (חח אנחנו קרובים אליהם)
      כאן יש רשימה מלאה https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c

      השימוש בפונקציה כמו שהזכרתי ייראה ככה בערך:

      (Get-Culture).keyboardLayoutID
      

      זה מחזיר את המספר הנ"ל (זה פשוט החרגה של הפלט שיצא מ-Get-Culture רק לחלק של keyboardLayoutID. אתה יכול להריץ רק את Get-Culture או עם פרמטרים כמו שתראה כאן https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-culture?view=powershell-7.1)

      קצרה בינתי מלהבין את הפדיחה הזו, אם אתה מצליח למצוא דרך אחרת אשמח לדעת גם

      נ נחנ מנותק
      נ נחנ מנותק
      נ נח
      כתב ב נערך לאחרונה על ידי
      #3

      @chv אצלי השפה ברירת המחדל זה עברית - וזה עושה תמיד 1033 (אנגלית)

      chvC תגובה 1 תגובה אחרונה
      0
      • נ נחנ נ נח

        @chv אצלי השפה ברירת המחדל זה עברית - וזה עושה תמיד 1033 (אנגלית)

        chvC מנותק
        chvC מנותק
        chv
        כתב ב נערך לאחרונה על ידי
        #4

        @נ-נח אמר בעזרה - תנאי לבדיקת השפה:

        @chv אצלי השפה ברירת המחדל זה עברית - וזה עושה תמיד 1033 (אנגלית)

        אין, אני אומר לך זה לא ברור מה ניסגר עם הפונקציה הזאת (עכשיו שכתבת את זה חיפשתי קצת ובאמת עוד אנשים מתלוננים. וינדוס דיבילי)

        בלוג

        תגובה 1 תגובה אחרונה
        3
        • נ נחנ מנותק
          נ נחנ מנותק
          נ נח
          כתב ב נערך לאחרונה על ידי
          #5

          בסוף הצלחתי להכין משהו...

          'Set a = CreateObject("WScript.Shell")
          wscript.sleep 50
          a.Sendkeys "a"
          a.Sendkeys "~"
          ' | out-file $env:TEMP\temp.vbs
          wscript $env:TEMP\temp.vbs
          $a = read-host
          if ($a -eq 'a')
          {
          'Set a = CreateObject("WScript.Shell")
          a.Sendkeys "+%"
          ' | out-file $env:TEMP\temp.vbs
          wscript $env:TEMP\temp.vbs
          }
          timeout /t 1
          del $env:TEMP\temp.vbs
          

          אם המחשב על אנגלית זה מחליף לעברית, ואם הוא על עברית הוא נשאר אותו דבר

          chvC פישלפ 2 תגובות תגובה אחרונה
          2
          • נ נחנ נ נח

            בסוף הצלחתי להכין משהו...

            'Set a = CreateObject("WScript.Shell")
            wscript.sleep 50
            a.Sendkeys "a"
            a.Sendkeys "~"
            ' | out-file $env:TEMP\temp.vbs
            wscript $env:TEMP\temp.vbs
            $a = read-host
            if ($a -eq 'a')
            {
            'Set a = CreateObject("WScript.Shell")
            a.Sendkeys "+%"
            ' | out-file $env:TEMP\temp.vbs
            wscript $env:TEMP\temp.vbs
            }
            timeout /t 1
            del $env:TEMP\temp.vbs
            

            אם המחשב על אנגלית זה מחליף לעברית, ואם הוא על עברית הוא נשאר אותו דבר

            chvC מנותק
            chvC מנותק
            chv
            כתב ב נערך לאחרונה על ידי
            #6

            @נ-נח אמר בעזרה - תנאי לבדיקת השפה:

            בסוף הצלחתי להכין משהו...

            'Set a = CreateObject("WScript.Shell")
            wscript.sleep 50
            a.Sendkeys "a"
            a.Sendkeys "~"
            ' | out-file $env:TEMP\temp.vbs
            wscript $env:TEMP\temp.vbs
            $a = read-host
            if ($a -eq 'a')
            {
            'Set a = CreateObject("WScript.Shell")
            a.Sendkeys "+%"
            ' | out-file $env:TEMP\temp.vbs
            wscript $env:TEMP\temp.vbs
            }
            timeout /t 1
            del $env:TEMP\temp.vbs
            

            אם המחשב על אנגלית זה מחליף לעברית, ואם הוא על עברית הוא נשאר אותו דבר

            😄 חכם אהבתי את הדרך.. תודה על העדכון זה יכול להיות שימושי לי 👍

            בלוג

            נ נחנ תגובה 1 תגובה אחרונה
            2
            • chvC chv

              @נ-נח אמר בעזרה - תנאי לבדיקת השפה:

              בסוף הצלחתי להכין משהו...

              'Set a = CreateObject("WScript.Shell")
              wscript.sleep 50
              a.Sendkeys "a"
              a.Sendkeys "~"
              ' | out-file $env:TEMP\temp.vbs
              wscript $env:TEMP\temp.vbs
              $a = read-host
              if ($a -eq 'a')
              {
              'Set a = CreateObject("WScript.Shell")
              a.Sendkeys "+%"
              ' | out-file $env:TEMP\temp.vbs
              wscript $env:TEMP\temp.vbs
              }
              timeout /t 1
              del $env:TEMP\temp.vbs
              

              אם המחשב על אנגלית זה מחליף לעברית, ואם הוא על עברית הוא נשאר אותו דבר

              😄 חכם אהבתי את הדרך.. תודה על העדכון זה יכול להיות שימושי לי 👍

              נ נחנ מנותק
              נ נחנ מנותק
              נ נח
              כתב ב נערך לאחרונה על ידי
              #7

              @chv דרך אגב בטח שמת לב שאם מחליפים בשורה 8 את a ב1
              זה עושה בדיוק הפוך

              if ($a -eq '1')
              
              chvC תגובה 1 תגובה אחרונה
              2
              • נ נחנ נ נח

                @chv דרך אגב בטח שמת לב שאם מחליפים בשורה 8 את a ב1
                זה עושה בדיוק הפוך

                if ($a -eq '1')
                
                chvC מנותק
                chvC מנותק
                chv
                כתב ב נערך לאחרונה על ידי
                #8

                @נ-נח אמר בעזרה - תנאי לבדיקת השפה:

                @chv דרך אגב בטח שמת לב שאם מחליפים בשורה 8 את a ב1
                זה עושה בדיוק הפוך

                if ($a -eq '1')
                

                כן (לא שידעתי שזה יהיה 1, אני לא כזה גאון ביוניקוד..)

                אני יגיד לך מה חזק פה ומה נהניתי. החזק כאן הוא שאתה מנצל את חוסר התמיכה של הפלטפורמה שאתה עובד איתה (ביוניקוד. vbs לא תומכת ביוניקוד, לפחות לא בפונקציה הזו של sendkeys שב-shell)
                כלומר אתה מנצל את זה שהם לא עובדים עם יוניקוד, ומשום מה התוצאה של הפקודה משתבשת (בצורה שלא היתה קורית אם היה תמיכה נורמלית. בצורה נורמלית זה היה נשלח תמיד בצורה שכתבת בפקודה)

                קח לדוגמא את ה-sendkeys של System.Windows.Forms.
                ככה זה ייראה בערך:

                Add-Type -AssemblyName System.Windows.Forms
                [System.Windows.Forms.SendKeys]::SendWait('a')
                

                וזה ישלח תמיד a גם אם תהיה על עברית. כי הפונקציה הזו בשונה ממה שאתה משתמש - תומכת ביוניקוד כמו כל דבר נורמלי היום בעולם.

                קיצר אהבתי.

                בלוג

                נ נחנ תגובה 1 תגובה אחרונה
                2
                • chvC chv

                  @נ-נח אמר בעזרה - תנאי לבדיקת השפה:

                  @chv דרך אגב בטח שמת לב שאם מחליפים בשורה 8 את a ב1
                  זה עושה בדיוק הפוך

                  if ($a -eq '1')
                  

                  כן (לא שידעתי שזה יהיה 1, אני לא כזה גאון ביוניקוד..)

                  אני יגיד לך מה חזק פה ומה נהניתי. החזק כאן הוא שאתה מנצל את חוסר התמיכה של הפלטפורמה שאתה עובד איתה (ביוניקוד. vbs לא תומכת ביוניקוד, לפחות לא בפונקציה הזו של sendkeys שב-shell)
                  כלומר אתה מנצל את זה שהם לא עובדים עם יוניקוד, ומשום מה התוצאה של הפקודה משתבשת (בצורה שלא היתה קורית אם היה תמיכה נורמלית. בצורה נורמלית זה היה נשלח תמיד בצורה שכתבת בפקודה)

                  קח לדוגמא את ה-sendkeys של System.Windows.Forms.
                  ככה זה ייראה בערך:

                  Add-Type -AssemblyName System.Windows.Forms
                  [System.Windows.Forms.SendKeys]::SendWait('a')
                  

                  וזה ישלח תמיד a גם אם תהיה על עברית. כי הפונקציה הזו בשונה ממה שאתה משתמש - תומכת ביוניקוד כמו כל דבר נורמלי היום בעולם.

                  קיצר אהבתי.

                  נ נחנ מנותק
                  נ נחנ מנותק
                  נ נח
                  כתב ב נערך לאחרונה על ידי נ נח
                  #9

                  @chv לא ידעתי שיש את הסנד-קיס גם בפווארשל, נראה הרבה יותר טוב
                  תודה רבה!!!

                  תגובה 1 תגובה אחרונה
                  1
                  • נ נחנ נ נח

                    בסוף הצלחתי להכין משהו...

                    'Set a = CreateObject("WScript.Shell")
                    wscript.sleep 50
                    a.Sendkeys "a"
                    a.Sendkeys "~"
                    ' | out-file $env:TEMP\temp.vbs
                    wscript $env:TEMP\temp.vbs
                    $a = read-host
                    if ($a -eq 'a')
                    {
                    'Set a = CreateObject("WScript.Shell")
                    a.Sendkeys "+%"
                    ' | out-file $env:TEMP\temp.vbs
                    wscript $env:TEMP\temp.vbs
                    }
                    timeout /t 1
                    del $env:TEMP\temp.vbs
                    

                    אם המחשב על אנגלית זה מחליף לעברית, ואם הוא על עברית הוא נשאר אותו דבר

                    פישלפ מנותק
                    פישלפ מנותק
                    פישל
                    מדריכים
                    כתב ב נערך לאחרונה על ידי
                    #10

                    @נ-נח אמר בעזרה - תנאי לבדיקת השפה:

                    בסוף הצלחתי להכין משהו...

                    'Set a = CreateObject("WScript.Shell")
                    wscript.sleep 50
                    a.Sendkeys "a"
                    a.Sendkeys "~"
                    ' | out-file $env:TEMP\temp.vbs
                    wscript $env:TEMP\temp.vbs
                    $a = read-host
                    if ($a -eq 'a')
                    {
                    'Set a = CreateObject("WScript.Shell")
                    a.Sendkeys "+%"
                    ' | out-file $env:TEMP\temp.vbs
                    wscript $env:TEMP\temp.vbs
                    }
                    timeout /t 1
                    del $env:TEMP\temp.vbs
                    

                    אם המחשב על אנגלית זה מחליף לעברית, ואם הוא על עברית הוא נשאר אותו דבר

                    ניסתי לכתוב זאת בפקודות באט
                    הדבקתי כמו שהוא
                    לא עובד
                    אשמח לעזרה אני צריך עוד קובץ צריך לכתוב עוד משהו?
                    להפעיל כמנהל לא עזר?

                    נ נחנ תגובה 1 תגובה אחרונה
                    0
                    • פישלפ פישל

                      @נ-נח אמר בעזרה - תנאי לבדיקת השפה:

                      בסוף הצלחתי להכין משהו...

                      'Set a = CreateObject("WScript.Shell")
                      wscript.sleep 50
                      a.Sendkeys "a"
                      a.Sendkeys "~"
                      ' | out-file $env:TEMP\temp.vbs
                      wscript $env:TEMP\temp.vbs
                      $a = read-host
                      if ($a -eq 'a')
                      {
                      'Set a = CreateObject("WScript.Shell")
                      a.Sendkeys "+%"
                      ' | out-file $env:TEMP\temp.vbs
                      wscript $env:TEMP\temp.vbs
                      }
                      timeout /t 1
                      del $env:TEMP\temp.vbs
                      

                      אם המחשב על אנגלית זה מחליף לעברית, ואם הוא על עברית הוא נשאר אותו דבר

                      ניסתי לכתוב זאת בפקודות באט
                      הדבקתי כמו שהוא
                      לא עובד
                      אשמח לעזרה אני צריך עוד קובץ צריך לכתוב עוד משהו?
                      להפעיל כמנהל לא עזר?

                      נ נחנ מנותק
                      נ נחנ מנותק
                      נ נח
                      כתב ב נערך לאחרונה על ידי
                      #11

                      @פישל זה בpowershll 😀

                      תגובה 1 תגובה אחרונה
                      3

                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • חוקי הפורום
                      • לא נפתר
                      • משתמשים
                      • חיפוש גוגל בפורום
                      • צור קשר