Make 'em Caps

Ο τομέας μας. ;)
Απάντηση
thetrojan01
Δημοσιεύσεις: 712
Εγγραφή: Κυρ Δεκ 21, 2008 2:45 pm

Make 'em Caps

Δημοσίευση από thetrojan01 »

Πριν από πολύ καιρό, έγραψα το εξής προγραμματάκι για Windows, το οποίο επιτρέπει Να ΓΡαΦεΤΕ ΚΑπωΣ ΕτΣΙ. Δουλεύει εξομοιώνοντας το Caps lock κατά ίσα χρονικά διαστήματα:

Κώδικας: Επιλογή όλων

#include <windows.h>

bool ok = true;

void unlockcaps( BOOL bState )
{
     ok = false;
     BYTE keyState[256];

      GetKeyboardState((LPBYTE)&keyState);
      if((bState && !(keyState[VK_CAPITAL] & 1)) ||
          (!bState && (keyState[VK_CAPITAL] & 1)) )
      {
      // Simulate a key press
         keybd_event( VK_CAPITAL,
                      0x3A,
                      KEYEVENTF_EXTENDEDKEY | 0,
                      0 );

      // Simulate a key release
         keybd_event( VK_CAPITAL,
                      0x3A,
                      KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
                      0);
      }
}


void simulate_capslock()
{
     if(ok){ 
              
              keybd_event(VK_CAPITAL, 0x3A, KEYEVENTF_EXTENDEDKEY | 0, 0);
              Sleep(230);            
              keybd_event(VK_CAPITAL, 0x3A, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);

     }
}

void check_pause()
{
     if(GetAsyncKeyState(VK_LCONTROL))
     {
         if(ok == true){ unlockcaps( FALSE ); ok = false; }
         else{ unlockcaps ( FALSE ); ok = true; }
     }
}

int main()
{
    while(1){
             
             simulate_capslock();
             Sleep(1);
             check_pause();
             Sleep(1);
             if(GetAsyncKeyState(VK_RCONTROL) && GetAsyncKeyState(VK_RSHIFT)){
               unlockcaps( FALSE );
               return 0;
            }
            Sleep(1);
    }
}

svyr cercrv an inevrfnv cbyl tvn an gb iyrcrvf nhgb... cvtrar xnzvn ibygn yrj tj.
Άβαταρ μέλους
kernelpanic
Δημοσιεύσεις: 404
Εγγραφή: Κυρ Δεκ 21, 2008 8:16 pm
Τοποθεσία: Αθήνα

Re: Make 'em Caps

Δημοσίευση από kernelpanic »

Βάλε rand μέσα και γράψε κάνα μέηλ :P
99 little bugs in the code,
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
thetrojan01
Δημοσιεύσεις: 712
Εγγραφή: Κυρ Δεκ 21, 2008 2:45 pm

Re: Make 'em Caps

Δημοσίευση από thetrojan01 »

kernelpanic έγραψε:Βάλε rand μέσα και γράψε κάνα μέηλ :P
Συγγνώμη, δε σε κατάλαβα... Επαναδιατυπώνεις, σε παρακαλώ;
svyr cercrv an inevrfnv cbyl tvn an gb iyrcrvf nhgb... cvtrar xnzvn ibygn yrj tj.
Άβαταρ μέλους
kernelpanic
Δημοσιεύσεις: 404
Εγγραφή: Κυρ Δεκ 21, 2008 8:16 pm
Τοποθεσία: Αθήνα

Re: Make 'em Caps

Δημοσίευση από kernelpanic »

Εκεί που ορίζει αν θα ανάβει το caps lock (δεν έχω ασχοληθεί καθόλου με windows.h) βάλε

Κώδικας: Επιλογή όλων

if(rand%2)
Χρειάζεται να βάλεις τα

Κώδικας: Επιλογή όλων

#include <stdlib.h>
#include <time.h>
srand ( time(NULL) );//δίνεις ένα τυχαίο αριθμό για να ξεκινήσεις
πριν.

*Αν έχεις άλλη (τυχαία) τιμή να βάλεις, ελεύθερα.
Το ίδιο και για το (rand%2) ;)
99 little bugs in the code,
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
thetrojan01
Δημοσιεύσεις: 712
Εγγραφή: Κυρ Δεκ 21, 2008 2:45 pm

Re: Make 'em Caps

Δημοσίευση από thetrojan01 »

kernelpanic έγραψε:Εκεί που ορίζει αν θα ανάβει το caps lock (δεν έχω ασχοληθεί καθόλου με windows.h) βάλε

Κώδικας: Επιλογή όλων

if(rand%2)
Χρειάζεται να βάλεις τα

Κώδικας: Επιλογή όλων

#include <stdlib.h>
#include <time.h>
srand ( time(NULL) );//δίνεις ένα τυχαίο αριθμό για να ξεκινήσεις
πριν.

*Αν έχεις άλλη (τυχαία) τιμή να βάλεις, ελεύθερα.
Το ίδιο και για το (rand%2) ;)
Το είχα σκεφτεί όταν έγραφα το πρόγραμμα τοτε. Αλλά είπα να το βάλω σε ίσα διαστήματα, για τη χειρότερη περίπτωση που θα έβγαιναν ΟΛΑ ΕΤσΙ... που είναι άσχημο. :roll:
svyr cercrv an inevrfnv cbyl tvn an gb iyrcrvf nhgb... cvtrar xnzvn ibygn yrj tj.
thelastnicholas
Δημοσιεύσεις: 74
Εγγραφή: Παρ Φεβ 13, 2009 8:07 pm

Re: Make 'em Caps

Δημοσίευση από thelastnicholas »

Νομίζω οτι σε πραγματική χρήση υπάρχουν περισσότερες πιθανότητες να εμφανιστούν έτσι αν δεν έχεις ραντ παρά όταν έχεις αφού υπάρχει κίνδυνος να συντονιστεί ο χρήστης με το πρόγραμμα σου
Άβαταρ μέλους
kernelpanic
Δημοσιεύσεις: 404
Εγγραφή: Κυρ Δεκ 21, 2008 8:16 pm
Τοποθεσία: Αθήνα

Re: Make 'em Caps

Δημοσίευση από kernelpanic »

thelastnicholas, 100στό ποστ :)
99 little bugs in the code,
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
Artakserksis
Δημοσιεύσεις: 106
Εγγραφή: Δευ Δεκ 15, 2008 3:02 pm

Re: Make 'em Caps

Δημοσίευση από Artakserksis »

( kernelpanic, δε χρειάζεται να επισημαίνεις σε κάθε υποκατηγορία τα milestones των posts :P )
Εικόνα
Άβαταρ μέλους
kernelpanic
Δημοσιεύσεις: 404
Εγγραφή: Κυρ Δεκ 21, 2008 8:16 pm
Τοποθεσία: Αθήνα

Re: Make 'em Caps

Δημοσίευση από kernelpanic »

Boiling point: 2η φορά :P
99 little bugs in the code,
99 bugs in the code,
Fix one bug,
Compile again,
104 little bugs in the code.
Απάντηση