Make 'em Caps

Ο τομέας μας. ;)
Απάντηση
Άβαταρ μέλους
thetrojan01
Δημοσιεύσεις: 712
Εγγραφή: Κυρ Δεκ 21, 2008 2:45 pm
Τοποθεσία: Ρόδος
Επικοινωνία:

Make 'em Caps

Δημοσίευση από thetrojan01 » Πέμ Μαρ 05, 2009 4:27 pm

Πριν από πολύ καιρό, έγραψα το εξής προγραμματάκι για 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 » Πέμ Μαρ 05, 2009 6:22 pm

Βάλε 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 » Παρ Μαρ 06, 2009 1:47 pm

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 » Σάβ Μαρ 07, 2009 11:21 am

Εκεί που ορίζει αν θα ανάβει το 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 » Πέμ Μαρ 19, 2009 2:43 pm

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 » Πέμ Μαρ 19, 2009 7:19 pm

Νομίζω οτι σε πραγματική χρήση υπάρχουν περισσότερες πιθανότητες να εμφανιστούν έτσι αν δεν έχεις ραντ παρά όταν έχεις αφού υπάρχει κίνδυνος να συντονιστεί ο χρήστης με το πρόγραμμα σου

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

Re: Make 'em Caps

Δημοσίευση από kernelpanic » Πέμ Μαρ 19, 2009 10:03 pm

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 » Παρ Μαρ 20, 2009 4:21 pm

( kernelpanic, δε χρειάζεται να επισημαίνεις σε κάθε υποκατηγορία τα milestones των posts :P )
Εικόνα

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

Re: Make 'em Caps

Δημοσίευση από kernelpanic » Παρ Μαρ 20, 2009 6:15 pm

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.

Απάντηση