בקשה | תוכנה לספירת תווים/הקשות הקלדה
-
@יוסי-לוי כתב בבקשה | תוכנה לספירת תווים/הקשות הקלדה:
וצריך לראות איך להגדיר שהוא יספור רק הקשות בוורד
VBA כמובן
-
@pcinfogmach אין צורך להגיע לשם, אני חושב שאפשרי לדעת איזה תהליך קיבל את הקלט וטיפל בו,
הייתי עושה דוגמה קטנה, אבל @מתכנת-חובב כתב שכבר יש לו אז נשאיר לו את הבמה
@מקלדת אפשרלהוסיף רישום גם של ההקלדות פר מסמך מה שיחסוך את הרישום באקסל עבור כל לקוח..
-
@אביי אם יש דרך קלה ופשוטה לעשות משהו יעיל ונוח ב VBA עדיף ככה
אני כתבתי משהו בפייתון שיכול לזהות על איזה חלון נכתב (כלומר הוא סופר רק שהחלון שעליו הפוקוס הוא הוורד)
אבל זה בפייתון - מה שאומר איטי ואין לזה עדיין GUI כמו"כ לא בניתי לזה מנגנון שישמור את מספר התווים מפעם לפעם בקיצור, כרגע יש לי רק POC ואני לא יודע מתי אני ימצא לזה זמן
התחלתי לכתוב משהו ב C שגם הוא עובד אבל להתקדם שם יהיה לי יותר קשה כי C אני פחות מכיר -
@מתכנת-חובב כתב בבקשה | תוכנה לספירת תווים/הקשות הקלדה:
@אביי אם יש דרך קלה ופשוטה לעשות משהו יעיל ונוח ב VBA עדיף ככה
אבל בVBA אתה תצטרך לעשות את זה פר מסמך או משהו בסגנון,
תוכנה חיצונית שמזהה את ההקשות ולאיזה חלון הם הגיעו זה בדיוק הדרך לעשות את זה.
-
@מקלדת מצורף קוד פייתון ראשוני, מרגע ההפעלה התוכנה סופרת את ההקשות על כל אחד ממקשי המקלדת, ובכל פעם שמתבצע שינוי של החלון הפעיל היא רושמת את הנתונים לקובץ אקסל ייעודי עם התאריך הנוכחי בתיקייה "מונה הקשות" שתיווצר בשולחן העבודה.
יש הרבה מה לשפר, אבל זה בשביל ההתחלה
קובץ מהודר מגוגל דרייב או מג'יקוד
import time import keyboard import pandas as pd import threading import ctypes from ctypes import create_unicode_buffer, windll, wintypes from datetime import datetime import pytz import os def get_desktop_folder(): home_dir = os.path.expanduser("~") desktop_folder = os.path.join(home_dir, 'Desktop') return desktop_folder def get_foreground_window_title(): hwnd = windll.user32.GetForegroundWindow() length = windll.user32.GetWindowTextLengthW(hwnd) + 1 title = create_unicode_buffer(length) windll.user32.GetWindowTextW(hwnd, title, length) return title.value def record_typing(start_time, end_time, keystrokes, software_name, output_file): data = {'תחילת הכתיבה': [start_time], 'סיום הכתיבה': [end_time], 'מספר ההקשות': [keystrokes], 'שם התוכנה': [software_name]} df = pd.DataFrame(data) #df['תחילת הכתיבה'] = pd.to_datetime(df['תחילת הכתיבה'], unit='s').dt.strftime('%d/%m/%Y %H:%M:%S') #df['סיום הכתיבה'] = pd.to_datetime(df['סיום הכתיבה'], unit='s').dt.strftime('%d/%m/%Y %H:%M:%S') df['תחילת הכתיבה'] = pd.to_datetime(df['תחילת הכתיבה'], unit='s') df['סיום הכתיבה'] = pd.to_datetime(df['סיום הכתיבה'], unit='s') israel_tz = pytz.timezone('Asia/Jerusalem') df['תחילת הכתיבה'] = df['תחילת הכתיבה'].dt.tz_localize('UTC').dt.tz_convert(israel_tz) df['סיום הכתיבה'] = df['סיום הכתיבה'].dt.tz_localize('UTC').dt.tz_convert(israel_tz) df['תחילת הכתיבה'] = df['תחילת הכתיבה'].dt.strftime('%d/%m/%Y %H:%M:%S') df['סיום הכתיבה'] = df['סיום הכתיבה'].dt.strftime('%d/%m/%Y %H:%M:%S') try: existing_data = pd.read_excel(output_file, engine='openpyxl') df = pd.concat([existing_data, df], ignore_index=True) except FileNotFoundError: pass df.to_excel(output_file, index=False, engine='openpyxl') print(f"Data recorded for {software_name}") def keyboard_listener(output_file): start_time = time.time() software_name = get_foreground_window_title() end_time = start_time keystrokes = 0 def on_key_event(event): nonlocal start_time, end_time, keystrokes, software_name if event.event_type == keyboard.KEY_DOWN: keystrokes += 1 end_time = time.time() keyboard.hook(on_key_event) try: while True: time.sleep(1) current_software_name = get_foreground_window_title() if current_software_name != software_name: record_typing(start_time, end_time, keystrokes, software_name, output_file) start_time = time.time() software_name = current_software_name keystrokes = 0 except KeyboardInterrupt: pass finally: keyboard.unhook_all() record_typing(start_time, end_time, keystrokes, software_name, output_file) def main(): current_timestamp = time.time() current_datetime = datetime.utcfromtimestamp(current_timestamp) current_date = current_datetime.strftime('%d-%m-%Y') desktop_path = get_desktop_folder() folder_path = f'{desktop_path}\מונה הקשות' if not os.path.exists(folder_path): os.makedirs(folder_path) print(f"Folder '{folder_path}' created.") output_file_path = f'{folder_path}\{current_date}.xlsx' print("output path: " + output_file_path) print("Recording keystrokes...") listener_thread = threading.Thread(target=keyboard_listener, args=(output_file_path,)) listener_thread.start() try: listener_thread.join() except KeyboardInterrupt: pass if __name__ == "__main__": main()
לדעתי צריך לשנות את שיטת הרישום לאקסל, שיוכל לחשב אוטומטית.
להוסיף מקשים שלא ייכללו בספירה.
וכמובן ממשק גרפי למשתמש הפשוטאין לי מושג מתי יהיה לי זמן להשלים את זה..
-
@מקלדת כתב בבקשה | תוכנה לספירת תווים/הקשות הקלדה:
שלום וברכה לכל השוחים בימה של תיכנות.
יש לי ולחבר מרעי הקלדנים חלום כזה:
אני מקליד עבור לקוחות רבים, בגדול לכולם מחיר אחיד, בוא נגיד 5 ש"ח לאלף תווים.
לאחר סיום הקלדת כל קובץ אני מזין את מספר תויו/הקשותיו לתוך אקסל המיועד לאותו לקוח.
ובסוף החודש אני בודק לעצמי ומזין את כל האקסלים לתוך אקסל אחד כדי לדעת כמה תווים הקלדתי החודש, וכמה הרווחתי בס"ה.
הייתי רוצה תוכנה כזאת, אני לוחץ על הפעלה, ומעתה כל הקשה במסמך וורד יוזן לקאונטר.
ובסוף היום כאשר אלחץ על "הפסק" הוא יפסיק לספור, וכך אני אדע כבר בסוף היום כמה תוים הקלדתי היום פלוס כמה זה בכסף...
ואם אפשר, אפילו יותר רחוק, שבכל רגע נתון יופיע לי (כמו בתוכנות הניטור השונות) צג בצד שמאל עליון של המסך עם מספרים רצים - כמות התווים, וההמרה לכסף... כך שיתן לי תמריץ תוך כדי העבודה האפורה והשגרתית והמונוטנית של ההקלדה - לדעת על כמה תווים אני עומד, ובעיקר לראות את המספרים של הכסף עולים ועולים ועולים ועולים....יש תוכנה כזאת?
מישהו מכיר מישהו אחר שיכול לבנות תוכנה כזאת בשביל הכיף, או סתם בשביל לעזור לחבר הקלדנים?
שהוא יבנה ואני אדאג להפיץ בין חברי. ויש לי הרבה כאלה.
תודה מראשלא עברתי על כל השרשור.
אשמח לענות, אע"פ שחלילה איני שוחה בימה של תכנות, וממילא השאלה לא היתה מכוונת אליי, סליחה על ההתערבות.רעיון מעניין... ולא בעיה לפתח דבר כזה.
רק ב' שאלות:
א. למה כל הקשה? אתה מקבל גם על תוים שנמחקו? או שטעיתי וכוונתך לתוים קיימים בקובץ ולא להקשות.
ב. איך זה יצרף את הקבצים והלקוחות? או שלא אכפת לך לערבב ביניהם? אחרת, לפתח שלכל קובץ יהיה בנפרד זה אמנם אפשרי, אך מגדיל את העבודה באופן משמעותי.
ג. כמה היית מסכים להשקיע בכזה דבר? פני אליי באישי, כי כאן זה לא מקום לדון על כסף, רק אומר שכרגע אין סיכוי שללא תגמול אכנס לזה ככה סתם, עסוק מאד, סליחה. -
@מתכנת-חובב אולי פשוט תשלח אותו כאן?
-
תודה לכל המשיבים.
לגבי הפייתון, זה חסום לי (נטפרי). אפשר למייל שלי??
T0533142948 שטורדל קוגל וכו'.לגבי שאלת ה"אינו שוחה בימה של תכנות"
אם יש אפשרות שיזהה מילה אחת שנמחקה מתוך מה שהוא כבר ספר - מה טוב?
ולא - לא נורא, הרי זה לא נועד לתמחור סופי, בשביל זה פותחים את חלונית התווים בוורד לכל לקוח ולקוח לכל פרוייקט ופרוייקט.
זה רק בשבילי עצמי ולחבר מרעי, לדעת באיזה סכום/הקשות אני עומד בכל רגע נתון,
למשל עלי, אני יש לי מגבלה לא להקליד יותר מסכום של 300 ש"ח ביום. אך לא פחות ממאתיים. בשבילי תוכנה כזו יכולה א' מאוד להועיל, ב' מאוד להמריץ. לראות את המספרים האלה... -
@מקלדת אני מתכנן למכור את התוכנה הזאת ב 50 שקל אם יצא לי משהו ששווה את זה (אתה תוכל לקבל בחינם...)
העניין הוא שאני צריך רשימת דרישות - מה אתה מצפה שהתוכנה תעשה בדיוק מעבר לספירת תווים (כרגע מה שיש לי זה counter בצד ימין של המסך למעלה שמציג כמה תווים הוקלדו עד עכשיו בוורד אבל ברור לי שזה רק התחלה)
אם תוכל ליצור איתי קשר ב egozkokus1 בג'ימייל ונבין בדיוק מה נדרש אני יוכל להתקדם מכאן