תגובה: תוספות לעמדות קול הלשון וכדומה (ישיבה על קברו וכו')
המחשב שאליו כתבתי את התוכנה הזו במקור, זה מחשב עם מסך מגע ללא מקלדת כלל, ולכן הייתי צריך להוסיף את המקלדת בתוכנה עצמה, ועשיתי זאת מלכתחילה באמצעות (vb&.NET)
SendKeys.SendWait('א')
רק מה, שבעוד במחשב שממנו עבדתי המקלדת עבדה מעולה, במחשב של עמדת הקול הלשון המקלדת לא עבדה, בדיקה קטנה העלתה שהבעיה קיימת רק כשהתוכנה של קול הלשון פועלת, ואז גם לא עובדת מקלדת רגילה לא בקול הלשון ולא בדברים אחרים קרי, התוכנה הזו. (ctrl+alt+delete כן פעל)
לכן שיניתי את השיטה ועברתי ל'הזריק' את התו המבוקש הישר לתוך פקד הinput הפעיל בפקד הWebBrowser, וזה עובד מצויין עד כמה שאפשר לומר את זה על שיטה כזו...
רק שיש לזה חסרונות, במקור יש גם אפשרות לטעינת רב-קו ברב קו אונליין, ושם כשרוצים להטעין חופשי משהו אפשר לחפש שמות של ערים ומתקבלים החופשיים שמתאימים לטווח המרחק בין הערים, אבל התגובה הזו מופעלת לכאורה רק בהקלדה (ואני כותב לכאורה, כי כשגררתי אות מהתווית לתיבת הטקסט, זה גם העלה את האפשרויות) ובלי בחירה מהרשימה שנפתחת זה לא נקלט בכלל, גם אם אכתוב את שם העיר המלא - אבל זה עוד ניחא, יסתדרו בלי
.
אבל הבעיה השניה והגדולה יותר, שעמוד הזנת פרטי האשראי הוא כמו במרבית האתרים התקניים הוא iframe ואז הקלט לא נכנס לinput של הiframe ואין לי מושג למה בדיוק כי זה עדיין צריך להיות הinput הפעיל בדף, ושם לא עובד כלום, לא מקלדת בגלל הקול הלשון, לא הזרקה לאלמנט, (וגם לא גרירה מהתוויות, רק משדה לשדה, בדקתי) - וזה תוקע את כל ענין הרב-קו (אם לא לוקחים בחבון את המרת הערך הצבור מפרופיל לפרופיל
)
לא הייתי משקיע לכתוב את כל זה, אלא בגלל שבעבר היתה לנו תוכנה אחרת ששימשה לרב-קו וישיבה על קברו בלבד (ובזמנו הרב-קו נתקע בה) שכתב @מנצפך ובה כן עבדה לנו מקלדת נומרית פיזית שלא עובדת אצלי, וכנראה שהוא הכיר איזה דרך לעקוף את החסימה או הבליעה של קול הלשון, והשאלה היא מאי הדרך הזו, או שמישהו מכיר שיטה אחרת?
Private Sub keyboardH(str As String)
Dim script As String = "var focusedElement = document.activeElement;" &
"if (focusedElement && focusedElement.tagName === 'INPUT') {" &
"focusedElement.value += '" &
str &
"';" &
"focusedElement.focus();" &
"}"
WebBrowser1.Document.InvokeScript("execScript", New Object() {script, "JavaScript"})
End Sub
Private Sub keyboard(str As String)
WebBrowser1.Focus()
Dim script As String = "var inputElement = document.activeElement;" &
"if (inputElement && inputElement.tagName === 'INPUT') {" &
"inputElement.focus();" &
"}"
WebBrowser1.Document.InvokeScript("execScript", New Object() {script, "JavaScript"})
SendKeys.SendWait(str)
'endKeys.Send(str)
End Sub