Logo

רד-בורד: ארכיון

ראשי > תיכנות > עזרה ב c++

03/07/2006 17:33:34 QWQW
איך אני עושה שאם משתמש ילחץ על כפתור אז היכתב משהו למחשב?(כמו שיש בטרינר שלוחצים על כפתור ואז הקוד פועל)
03/07/2006 20:08:01 tal
אתה צריך לספק קצת יותר פרטים... אני אומנם לא מתכנת ב- ++C אבל מה שכתבת כאן בהחלט לא מספיק.

רצוי להציג באיזו סביבה אתה מפתח, מה אתה מנסה בידיוק להשיג (בצורה קצת יותר מפורטת מ"ללחוץ על כפתור שיכתוב למחשב"..). הכוונה לקובץ במחשב? הסבר את עצמך.
03/07/2006 20:13:30 Ratinho
תנסה להשתמש בgetch()
נגיד
קוד:
x=getch();

או שזה אולי
קוד:
getch(x);

זה אמור להיות אחד מהם, ברגע שהמשתמש לוחץ על תו זה יקלט למשתנה X.
03/07/2006 21:25:40 tal
יפה שהבנת מה הוא רוצה.. אני קישרתי את מה שהוא ביקש דווקא לטפסים גרפים.. אבל שיהיה =)
04/07/2006 11:50:01 i-gcp
הוא התקוון לבנות טרינר. א הוא שאל איך בונים תוכנה שעושה כאילו לחצת במקלדת אותיות.
04/07/2006 13:35:11 tal
אה... אפשר בעיקרון "להאזין" למקלדת כמו ש- key logger עושה וברגע שהוא מזהה לחצן ספציפי הוא מפעיל את מה שאתה רוצה.. אבל זה כבר יותר מורכב..
תחפש על הנושא של key logging בגוגל ואתה תמצא.
04/07/2006 14:57:30 Ratinho
זה ממש לא בעיה, וכן משתמש במה שאמרתי, אפשר בקלות לעשות
קוד:
while(1)
}
x=getch()
if (x==’z’)
flag=1;
else
move();
}

כמובן עם פונקציות מתאימות, ועוד כמה פורים, אבל העיקרון..
04/07/2006 15:39:32 QWQW
התכוונתי למשל עם אני נגיד רוצה לבנות טרינר לgta והקוד בלטתי פגיע נגיד הוא abcde אז איך אני עושה שברגע שאני ילחץ לדוגמא על המספר 5 אז המחשב יכתוב abcde כדי שהקוד יפעל
04/07/2006 16:07:04 Ratinho
צ’מע, אתה הרי עושה לולאה אין סופית, נכון?
שנגיד ברגע שילחצו על החץ שמאלה זה יזוז שמאלה, נכון?
אז תוסיף שם בתנאים שאחרי ה
x=getch()
if (x==’5’)
cheat();
בא לאיסיקיו / מסנג’ר, אני אסביר לך בפרטנות...
04/07/2006 16:11:55 ziv
אם אתה רוצה לעשות טרינר ל GTA
אז אתה צריך שהפעולה תעשה גם אם החלון לא בפוקוס, וכן getch וחבריו לא יעבדו.
אם אתה משתמש ב APIs של וינדוס אז יש את הפונקציה GetAsyncKeyState אתה יכול לקרוא עליה ב msdn של מיקרוסופט.
בהצלחה...[ההודעה נערכה על-ידי ziv ב-04/07/2006 16:12:37]
04/07/2006 19:35:34 tal
זיו מדבר בידיוק על מה שרצית לענות לכם.
הרי כדי שהטריינר יעבוד הוא אמור לדעת לקבל קלטים מהמקלדת גם שהחלון לא בפוקוס (או לחילופין שאין בכלל חלון)..
זאת הסיבה שבכלל העלתי את ה- key logging. ולא רטינו. זה לא כזה פשוט. לפחות לא למישהו חסר ידע בעבודה עם APIs..
04/07/2006 20:46:26 Ratinho
חשבתי שהוא מדבר על סתם תוכנית, שאיך שלוחצים על משהו זה יעשה משהו, כמו טרינר, לא טרינר..
בע, מישהו הבין?[ההודעה נערכה על-ידי Ratinho ב-04/07/2006 20:47:07]
07/07/2006 15:57:47 hashashan
אינטראפטים
חפש מידע על
getintvect
12/07/2006 13:41:06 zd4y
you need to simulate keyboard events.
this can be done using the keybd_event function
search for it in msdn.microsoft.com

to get the virtual-key code look for it in the table
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui
/winui/WindowsUserInterface/UserInput/VirtualKeyCodes.asp



ותפסיקו לזיין תשכל.

[ההודעה נערכה על-ידי zd4y ב-12/07/2006 13:41:55][ההודעה נערכה על-ידי zd4y ב-12/07/2006 13:44:23]
13/07/2006 10:02:13 zd4y
וואללה, לא שמתי לב שיש לך בעיה של לקבל את המקש שנלחץ בלי קשר לחלון...
מה שאתה צריך זה הוק על כל החלונות שנמצאים בדסקטופ הנוכחי.
זה נקרא system-wide hook. עושים את זה בעזרת SetWindowsHookEx. שוב, קרא ב-msdn. בשביל הוק על המקלדת הפרמטר הראשון הוא WH_KEYBOARD_LL.
בשביל לתפוס את כל החלונות על הדסקטופ הנוכחי הפרמטר האחרון צריך להיות NULL.
כשה hook procedure (פרמטר שני) שלך תיקרא (בכל לחיצה על המקלדת) תקבל פוינטר לבאפר שמכיל flags,scan code and a vk code.
ה UINT האחרון זה הוירטואל-קי קוד, זה מה שאתה צריך לבדוק כדי לדעת איזה מקש נלחץ, שוב, מהטבלה בהודעה הקודמת. ברגע שנלחץ נגיד,5, אתה שולח abbcb או מה שתרצה בעזרת keybd_event, מההודעה הקודמת.[ההודעה נערכה על-ידי zd4y ב-13/07/2006 10:03:11]
עמודים: 1