Προς το περιεχόμενο

Mia mikri xari plz!


Sadman

Προτεινόμενες αναρτήσεις

Δημοσ.

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.!

Δημοσ.

τι εννοεις γλωσσα?(C,C+ klp)?

Βασηκα αυτο που θελω να το αναγνωριζουν τα windowsλογικο)και να παταει ενα χ πληκτρο καθε χ δευτερα απο μονο του χωρις εγω να βρισκομαι στο ΥΓ μου..Γινεται σωστα?

Δημοσ.

Το θες για συγκεκριμένο πρόγραμμα; (Μόνο javascript ξέρω και μόλις ξεκίνησα JAVA!)

 

Αν πάντως το θες για Browser έχει παρόμοιες εντολές.

Δημοσ.
Το θες για συγκεκριμένο πρόγραμμα; (Μόνο javascript ξέρω και μόλις ξεκίνησα JAVA!)

 

Αν πάντως το θες για Browser έχει παρόμοιες εντολές.

 

oxi dn to thelo gia Bronswer thx pantws.

Δημοσ.

Να πατάει ένα πλήκτρο απλά είναι εύκολο.

Να το στέλνει όμως πού? Σε κάποια εφαρμογή? Σε κάποιο ανοιχτό παράθυρο?

Δημοσ.

Μπορεί να γίνει, αν μιλάμε για 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

Δημοσ.
Μπορεί να γίνει, αν μιλάμε για 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?

Δημοσ.

Yup! Δοκίμασε CodeGear Turbo C++ ή κάτι άλλο συμβατό με αυτό τον compiler..

 

Επίσης το επισυνάπτω (δεύτερη έκδοση) compiled - είναι δοκιμασμένο σε XP Home Edition.

Σε εμένα δουλεύει σωστά (ελπίζω και στους υπόλοιπους), όποιος θέλει το τσεκάρει με δικιά του ευθύνη, demo είναι άλλωστε! :mrgreen:

 

Καλή συνέχεια!

:)

 

Υ.Γ.

Εδώ http://api.farmanager.com/en/winapi/virtualkeycodes.html υπάρχει μια λίστα με τους κωδικούς των Virtual Keys του Λ.Σ. προσοχή όμως καθώς οι τιμές τους δίνονται σε Hexadecimal αντί σε Decimal μορφή!

keypressv2.zip

Δημοσ.
Yup! Δοκίμασε CodeGear Turbo C++ ή κάτι άλλο συμβατό με αυτό τον compiler..

 

Επίσης το επισυνάπτω (δεύτερη έκδοση) compiled - είναι δοκιμασμένο σε XP Home Edition.

Σε εμένα δουλεύει σωστά (ελπίζω και στους υπόλοιπους), όποιος θέλει το τσεκάρει με δικιά του ευθύνη, demo είναι άλλωστε! :mrgreen:

 

Καλή συνέχεια!

:)

 

Υ.Γ.

Εδώ http://api.farmanager.com/en/winapi/virtualkeycodes.html υπάρχει μια λίστα με τους κωδικούς των Virtual Keys του Λ.Σ. προσοχή όμως καθώς οι τιμές τους δίνονται σε Hexadecimal αντί σε Decimal μορφή!

διλαδη το 51(hex) πιο ειναι καννικα?

Δημοσ.

To 81, (δηλαδή το Q) - Μπορείς να κάνεις εύκολα την μετατροπή μονάδων με την βοήθεια του Calculator (calc.exe) των MS-Windows αν γυρίσεις το View του σε Scientific mode.

 

Σε δεύτερο επίπεδο μπορεί να αλλάξει ο κώδικας ώστε να διαβάζει Characters αντί Virtual Key codes ή αντί για Decimal αριθμούς Hexadecimal (απλά αλλάζουμε το "%d"->"%x" στο scanf) ..

Δημοσ.

Αφού είσαι άσχετος με προγραμματισμό, γιατί δεν δοκιμάζεις κανένα από τα προγράμματα autohotkey ή autoit? Θα σου κάνουν μια χαρά τη δουλειά που θέλεις χωρίς να μπλέκεις με προγραμματισμό...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...