Sadman Δημοσ. 28 Ιουνίου 2007 Δημοσ. 28 Ιουνίου 2007 Loipon tha ithela an ginete(mias k eimai asxetos apo programatismo)na mou peite pws bwrw n agrapsw ena programa to opoio tha pataei ena sigkekrimeo pliktro kathe x seconds. Ginetai auto an nai pws? Mipws boreite na mou grapsete ena eseis? Tha me swzate eyxaristo poliprokatabolika.!
ladhm Δημοσ. 28 Ιουνίου 2007 Δημοσ. 28 Ιουνίου 2007 Σε τι γλώσσα? Από οτι κατάλαβα δεν θες απλά τον αλγόριθμο...
Sadman Δημοσ. 28 Ιουνίου 2007 Μέλος Δημοσ. 28 Ιουνίου 2007 τι εννοεις γλωσσα?(C,C+ klp)? Βασηκα αυτο που θελω να το αναγνωριζουν τα windowsλογικο)και να παταει ενα χ πληκτρο καθε χ δευτερα απο μονο του χωρις εγω να βρισκομαι στο ΥΓ μου..Γινεται σωστα?
michael92 Δημοσ. 29 Ιουνίου 2007 Δημοσ. 29 Ιουνίου 2007 Το θες για συγκεκριμένο πρόγραμμα; (Μόνο javascript ξέρω και μόλις ξεκίνησα JAVA!) Αν πάντως το θες για Browser έχει παρόμοιες εντολές.
Sadman Δημοσ. 29 Ιουνίου 2007 Μέλος Δημοσ. 29 Ιουνίου 2007 Το θες για συγκεκριμένο πρόγραμμα; (Μόνο javascript ξέρω και μόλις ξεκίνησα JAVA!) Αν πάντως το θες για Browser έχει παρόμοιες εντολές. oxi dn to thelo gia Bronswer thx pantws.
dks_1979 Δημοσ. 29 Ιουνίου 2007 Δημοσ. 29 Ιουνίου 2007 Να πατάει ένα πλήκτρο απλά είναι εύκολο. Να το στέλνει όμως πού? Σε κάποια εφαρμογή? Σε κάποιο ανοιχτό παράθυρο?
Directx Δημοσ. 29 Ιουνίου 2007 Δημοσ. 29 Ιουνίου 2007 Μπορεί να γίνει, αν μιλάμε για MS-Windows με την χρήση της ρουτίνας keybd_event (ή της νεότερης SendInput) η οποία εξομοιώνει το πάτημα και την απελευθέρωση ενός πλήκτρου (Virtual Key) μεταξύ του 1 ως του 254 (πχ. το A = 65, το CAPS LOCK = 20 κτλ.). Η keybd_event εξομοιώνει το πάτημα του πλήκτρου μεταδίδοντας το στον Windows Manager ο οποίος με την σειρά του το μεταδίδει στην ανάλογη ενεργή Windows εφαρμογή. Ακολουθεί κώδικας που το επιδυκνύει σε μερικές εύκολες περιπτώσεις: > //-Simulate Keyboard Events (C) Directx-------------------------------------- #include <stdio.h> #include <windows.h> #include <conio.h> #include <time.h> #ifdef __BORLANDC__ #pragma hdrstop #endif //--------------------------------------------------------------------------- int nScanCode,nInterval; time_t ttStart, ttEnd; #ifdef __BORLANDC__ #pragma argsused #endif int main(int argc, char* argv[]) { printf(" Lame Key Press Simulator for 2000/XP (c) Directx\n"); printf(" Enter Keyboard Virtual Code (1-254):"); if(!(scanf("%d",&nScanCode)) || (nScanCode<1|| nScanCode>254)) /* Use 65 to -> A */ { printf(" Invalid ScanCode!\n"); return -1; } printf(" Enter Time-out (in seconds):"); if(!(scanf("%d",&nInterval)) || !nInterval) { printf(" Invalid Time-out!\n"); return -1; } ttStart = time(NULL); do { while(!kbhit()) { ttEnd = time(NULL); if(difftime(ttEnd,ttStart)>=nInterval) { printf(" -> Simulating keyboard press of KVC: %d.. (ESC to Quit)\n",nScanCode); keybd_event(nScanCode,0,0,0); keybd_event(nScanCode,0,KEYEVENTF_KEYUP,0); ttStart = time(NULL); } } }while(getch()!=0x1b); return 0; } //--------------------------------------------------------------------------- Υ.Γ. Ο κώδικας γράφτηκε σε CodeGear Turbo C++ και μπορεί να περιέχει bugs - ουσιαστικά είναι ότι πιο γρήγορο & απλό μπορείς να γράψεις σε Windows API αυτή την στιγμή -ούτε παράθυρα, ούτε διάλογοι απλά Console Έκδοση 2: Άλλαξα λίγο την δομή while(1) & if(getch==0x1b) σε ένα πολύ πιο όμορφο do{ }while() .. και αναφέρω πως η εφαρμογή κλείνει με πάτημα του ESC
Sadman Δημοσ. 29 Ιουνίου 2007 Μέλος Δημοσ. 29 Ιουνίου 2007 Μπορεί να γίνει, αν μιλάμε για MS-Windows με την χρήση της ρουτίνας keybd_event (ή της νεότερης SendInput) η οποία εξομοιώνει το πάτημα και την απελευθέρωση ενός πλήκτρου (Virtual Key) μεταξύ του 1 ως του 254 (πχ. το A = 65, το CAPS LOCK = 20 κτλ.). Η keybd_event εξομοιώνει το πάτημα του πλήκτρου μεταδίδοντας το στον Windows Manager ο οποίος με την σειρά του το μεταδίδει στην ανάλογη ενεργή Windows εφαρμογή. Ακολουθεί κώδικας που το επιδυκνύει σε μερικές εύκολες περιπτώσεις: > //-Simulate Keyboard Events (C) Directx-------------------------------------- #include <stdio.h> #include <windows.h> #include <conio.h> #include <time.h> #ifdef __BORLANDC__ #pragma hdrstop #endif //--------------------------------------------------------------------------- int nScanCode,nInterval; time_t ttStart, ttEnd; #ifdef __BORLANDC__ #pragma argsused #endif int main(int argc, char* argv[]) { printf(" Lame Key Press Simulator for 2000/XP (c) Directx\n"); printf(" Enter Keyboard Virtual Code (1-254):"); if(!(scanf("%d",&nScanCode)) || (nScanCode<1|| nScanCode>254)) /* Use 65 to -> A */ { printf(" Invalid ScanCode!\n"); return -1; } printf(" Enter Time-out (in seconds):"); if(!(scanf("%d",&nInterval)) || !nInterval) { printf(" Invalid Time-out!\n"); return -1; } ttStart = time(NULL); while(1) { while(!kbhit()) { ttEnd = time(NULL); if(difftime(ttEnd,ttStart)>=nInterval) { printf(" -> Simulating keyboard press of KVC: %d..\n",nScanCode); keybd_event(nScanCode,0,0,0); keybd_event(nScanCode,0,KEYEVENTF_KEYUP,0); ttStart = time(NULL); } } if(getch()==0x1b) break; } return 0; } //--------------------------------------------------------------------------- Υ.Γ. Ο κώδικας γράφτηκε σε CodeGear Turbo C++ και μπορεί να περιέχει bugs - ουσιαστικά είναι ότι πιο γρήγορο & απλό μπορείς να γράψεις σε Windows API αυτή την στιγμή -ούτε παράθυρα, ούτε διάλογοι απλά Console dokimasa ton ekana c/p sto Dev C++ kai otan kanw dimiourgia mou bggazei error. Na dokimasw me to CodeGear?
Directx Δημοσ. 29 Ιουνίου 2007 Δημοσ. 29 Ιουνίου 2007 Yup! Δοκίμασε CodeGear Turbo C++ ή κάτι άλλο συμβατό με αυτό τον compiler.. Επίσης το επισυνάπτω (δεύτερη έκδοση) compiled - είναι δοκιμασμένο σε XP Home Edition. Σε εμένα δουλεύει σωστά (ελπίζω και στους υπόλοιπους), όποιος θέλει το τσεκάρει με δικιά του ευθύνη, demo είναι άλλωστε! Καλή συνέχεια! Υ.Γ. Εδώ http://api.farmanager.com/en/winapi/virtualkeycodes.html υπάρχει μια λίστα με τους κωδικούς των Virtual Keys του Λ.Σ. προσοχή όμως καθώς οι τιμές τους δίνονται σε Hexadecimal αντί σε Decimal μορφή! keypressv2.zip
Sadman Δημοσ. 29 Ιουνίου 2007 Μέλος Δημοσ. 29 Ιουνίου 2007 Yup! Δοκίμασε CodeGear Turbo C++ ή κάτι άλλο συμβατό με αυτό τον compiler.. Επίσης το επισυνάπτω (δεύτερη έκδοση) compiled - είναι δοκιμασμένο σε XP Home Edition. Σε εμένα δουλεύει σωστά (ελπίζω και στους υπόλοιπους), όποιος θέλει το τσεκάρει με δικιά του ευθύνη, demo είναι άλλωστε! Καλή συνέχεια! Υ.Γ. Εδώ http://api.farmanager.com/en/winapi/virtualkeycodes.html υπάρχει μια λίστα με τους κωδικούς των Virtual Keys του Λ.Σ. προσοχή όμως καθώς οι τιμές τους δίνονται σε Hexadecimal αντί σε Decimal μορφή! διλαδη το 51(hex) πιο ειναι καννικα?
Directx Δημοσ. 29 Ιουνίου 2007 Δημοσ. 29 Ιουνίου 2007 To 81, (δηλαδή το Q) - Μπορείς να κάνεις εύκολα την μετατροπή μονάδων με την βοήθεια του Calculator (calc.exe) των MS-Windows αν γυρίσεις το View του σε Scientific mode. Σε δεύτερο επίπεδο μπορεί να αλλάξει ο κώδικας ώστε να διαβάζει Characters αντί Virtual Key codes ή αντί για Decimal αριθμούς Hexadecimal (απλά αλλάζουμε το "%d"->"%x" στο scanf) ..
alkisg Δημοσ. 29 Ιουνίου 2007 Δημοσ. 29 Ιουνίου 2007 Αφού είσαι άσχετος με προγραμματισμό, γιατί δεν δοκιμάζεις κανένα από τα προγράμματα autohotkey ή autoit? Θα σου κάνουν μια χαρά τη δουλειά που θέλεις χωρίς να μπλέκεις με προγραμματισμό...
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.