ប្រើកម្មវិធី python ដ៏ងាយស្រួលនេះដើម្បីលងកំុព្យូទរ័ ។វាដំណើរការយ៉ាងស្ងៀមស្ងាត់នៅផ្ទៃខាងក្រោយកំុព្យូទរ័, ហើយវាផ្ញើរព្រឺត្តិការណ៏វាយអក្សរទៅបញ្ចាំងលើកញ្ចក់កំុព្យូទរ័ដែលអ្នកចង់បាន។អ្នកអាចចម្លងរឿងខ្មោចចូលក្នុងឯកសារអត្តបទមួយ ហើយកំណត់កម្មវិធីអោយវាចាប់ផ្តើមវាយអក្សរចេញមកនៅពេលណាក៏បាន។
តើវាប្រសើរសំរាប់អ្វី ?
អាចប្រើវាដើម្បីវង្វេង/បំភយ័មនុស្ស, ក៏ដូចជាធ្វើអោយលំដាប់វាយអក្សរ ដែលអ្នកញឹកញាប់ប្រើ ដំណើរការដោយស្វយ័ប្រវត្តិ ។ កម្មវិធីនេះដំណើរការតែលើកញ្ចក់កំុព្យូទរ័ដែលមានដំឡើងកម្មវិធី Python 2 រួចជាមុន។អ្នកក៏អាចនឹងត្រូវការដំឡើង ម៉ូឌុល pywin32 ។
![]()
|
![]()
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# Small python script to ghost type on any focused window in windows. # Based upon code by Michel Claveau: # https://mail.python.org/pipermail/python-win32/2013-July/012862.html import win32api,time,win32con,random def typethis(sentence=None,shift=False,control=False,delay=0.05,random_delay=0.05): for letter in sentence: time.sleep(random.random()*random_delay) # Makes it look like real typing c=letter punctflag = True if (letter>='A' and letter<='Z') or shift: win32api.keybd_event(win32con.VK_SHIFT, 0, 0, 0) punctflag = False if letter>='a' and letter<='z': c=letter.upper() punctflag = False if ((letter>='0' and letter<='9') or (letter==' ')): punctflag=False if control: win32api.keybd_event(win32con.VK_CONTROL, 0, 0, 0) if not punctflag: # Do this for real letters on the keyboard if isinstance(letter,(int)): ordletter=letter else: ordletter=ord(c) win32api.keybd_event(ordletter, 0, win32con.KEYEVENTF_EXTENDEDKEY | 0, 0) time.sleep(delay) win32api.keybd_event(ordletter, 0, win32con.KEYEVENTF_EXTENDEDKEY | win32con.KEYEVENTF_KEYUP, 0) time.sleep(delay) if control: win32api.keybd_event(win32con.VK_CONTROL, 0, win32con.KEYEVENTF_KEYUP, 0) if (letter>='A' and letter<='Z') or shift: win32api.keybd_event(win32con.VK_SHIFT, 0, win32con.KEYEVENTF_KEYUP, 0) # This must be some punctuation - try to deal with it. # win32con doesn't include OEM else: if letter=='.': win32api.keybd_event(190, 0, win32con.KEYEVENTF_EXTENDEDKEY | 0, 0) time.sleep(delay) win32api.keybd_event(190, 0, win32con.KEYEVENTF_EXTENDEDKEY | win32con.KEYEVENTF_KEYUP, 0) time.sleep(delay) elif letter==',': win32api.keybd_event(188, 0, win32con.KEYEVENTF_EXTENDEDKEY | 0, 0) time.sleep(delay) win32api.keybd_event(188, 0, win32con.KEYEVENTF_EXTENDEDKEY | win32con.KEYEVENTF_KEYUP, 0) time.sleep(delay) elif letter=='-': win32api.keybd_event(189, 0, win32con.KEYEVENTF_EXTENDEDKEY | 0, 0) time.sleep(delay) win32api.keybd_event(189, 0, win32con.KEYEVENTF_EXTENDEDKEY | win32con.KEYEVENTF_KEYUP, 0) time.sleep(delay) elif letter=='?': win32api.keybd_event(win32con.VK_SHIFT, 0, 0, 0) time.sleep(delay) win32api.keybd_event(191, 0, win32con.KEYEVENTF_EXTENDEDKEY | 0, 0) time.sleep(delay) win32api.keybd_event(191, 0, win32con.KEYEVENTF_EXTENDEDKEY | win32con.KEYEVENTF_KEYUP, 0) time.sleep(delay) win32api.keybd_event(win32con.VK_SHIFT, 0, win32con.KEYEVENTF_KEYUP, 0) time.sleep(delay) elif letter=='!': win32api.keybd_event(win32con.VK_SHIFT, 0, 0, 0) time.sleep(delay) win32api.keybd_event(ord('1'), 0, win32con.KEYEVENTF_EXTENDEDKEY | 0, 0) time.sleep(delay) win32api.keybd_event(ord('1'), 0, win32con.KEYEVENTF_EXTENDEDKEY | win32con.KEYEVENTF_KEYUP, 0) time.sleep(delay) win32api.keybd_event(win32con.VK_SHIFT, 0, win32con.KEYEVENTF_KEYUP, 0) time.sleep(delay) win32api.keybd_event(13, 0, win32con.KEYEVENTF_EXTENDEDKEY | 0, 0) # There is a carriage return at the end of each newline if delay>0.0: time.sleep(delay) win32api.keybd_event(13, 0, win32con.KEYEVENTF_EXTENDEDKEY | win32con.KEYEVENTF_KEYUP, 0) def typefromfile(filename): with open(filename, 'r') as fopen: # with automatically closes the file for line in fopen: typethis(line) time.sleep(3) # switch focus to a target window manually in this time. # Edit below this point to change what it types. # Supports lowercase and uppercase letters, # numbers, and . , - ! ? (depending on your keyboard layout) typethis("What is happening?") typefromfile("C:/Users/User/Desktop/ghost.txt") #typethis("all this should be in capslock", shift=True) |
របៀបប្រើប្រាស់
ទាញយក ghosttyping.pyw ហើយបើកវាក្នុង editor មួយ។ផ្លាស់ប្តូរជួរបន្ទាត់ទី ៩៤, ១០០ នឹង ទី ១០២ ទៅតាមបំណងសកម្មភាពឯកសារដែលអ្នកចង់បាន។អ្នកអាចធ្វើអោយវាផ្អាក, អោយវាវាយអក្សរជាជួរៗ, ឬអោយវាអានពីឯកសារ, តាមលំដាប់ណាមួយ, តាមចំនួនដងណាមួយ ក៏បាន។ឯកសារជាមួយនឹងផ្នែកបន្ថែមរបស់ .pyw (.pyw extension) នឹងដំណើរការដោយមើលមិនឃើញលើកញ្ចក់កំុព្យូទរ័ ពេលអ្នកចុចទ្វេរដងលើវា។យ៉ាងណាមិញ, បើសិនជាអ្នកត្រូវការបំបាត់កំហុសកូដ រួចហើយរក្សារទុកឯកសារជាម្តងទៀតនោះ វានឹងដំណើរការកូដនៅក្នុងបន្ទាត់ពាក្យបញ្ជារ (command line) ហើយវានឹងបង្ហាញអ្នកពត៌មានអំពីកំុហុសដែលកើតឡើង។
ក្បាច់នឹងល្បិចខ្លះៗដើម្បីធ្វើអោយវាកាន់តែប្រសើរឡើង
រកមើលកូដ Virtual Keyboard ដ៏ទៃទៀតដើម្បីពង្រីកកម្មវិធីនេះទៀត។ដឹងពីកូដមឺនុយចាប់ផ្តើម ( Start Menu codes ) បាននយ័ថាអ្នកអាចចាប់ផ្តើមកម្មវិធី ដូចជាកម្មវិធីរុករក (browser) ឬកម្មវិធីវាយអត្ថបទ (word-processor) ដោយស្វយ័ប្រវត្ត័ មុនពេលដែលអ្នកវាយអត្ថបទណាមួយចូលបន្ថែមទៀត។ប្រើ typethis(“b”,control=True) ដើម្បីកំណត់ពុម្ពអក្សរដិត ក្នុងអត្ថបទ។ប្រើ time.sleep(300) ដើម្បីអោយកម្មវិធីវាយអក្សរខ្មោច រងចាំ ៥ នាទីមុនពេលវាធ្វើសកម្មភាព ។ប្រើ typethis(“t”,control=True) ដើម្បីបើកផ្ទាំងរុករកថ្មីមួយ, រួចហើយបញ្ចូលអាសយ័ដ្ឋានវេបសាយណាមួយដែលអ្នកចង់បាន - typethis() ចុចបញ្ចូលដោយស្វយ័ប្រវត្ថិរាល់ដងក្រោយពេលអ្នកប្រេីវា, ហើយវានឹងបើកទំពរ័រុករកនោះដោយខ្លួនឯង។
យល់ដឹងកាន់តែច្រើនទៀតនៅ colab/hackerspace ដោយឥតគិតថ្លៃ។ គ្រាន់តែប្រាប់យើងពីចំណាប់អារម្មណ៏របស់អ្នកនឹងពេលវេលា ហើយយើងនឹងព្យាយាមទទួលស្វាគមន៏អ្នក។
ទទួលបង្រៀនគួរផ្ទាល់ខ្លួន ដើម្បីរៀន python/programming នឹងមុខវិជ្ជាទាក់ទងឯទៀតពី STEM Phnom Penh ។ ថ្នាក់បង្រៀនគួរផ្ទាល់ខ្លួនដ៏អស្ចារ្យ - តំលៃត្រឹមត្រូវ។