Σελίδα 1 από 1

Make 'em Caps

Δημοσιεύτηκε: Πέμ Μαρ 05, 2009 4:27 pm
από 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);
    }
}


Re: Make 'em Caps

Δημοσιεύτηκε: Πέμ Μαρ 05, 2009 6:22 pm
από kernelpanic
Βάλε rand μέσα και γράψε κάνα μέηλ :P

Re: Make 'em Caps

Δημοσιεύτηκε: Παρ Μαρ 06, 2009 1:47 pm
από thetrojan01
kernelpanic έγραψε:Βάλε rand μέσα και γράψε κάνα μέηλ :P
Συγγνώμη, δε σε κατάλαβα... Επαναδιατυπώνεις, σε παρακαλώ;

Re: Make 'em Caps

Δημοσιεύτηκε: Σάβ Μαρ 07, 2009 11:21 am
από kernelpanic
Εκεί που ορίζει αν θα ανάβει το caps lock (δεν έχω ασχοληθεί καθόλου με windows.h) βάλε

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

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

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

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

*Αν έχεις άλλη (τυχαία) τιμή να βάλεις, ελεύθερα.
Το ίδιο και για το (rand%2) ;)

Re: Make 'em Caps

Δημοσιεύτηκε: Πέμ Μαρ 19, 2009 2:43 pm
από thetrojan01
kernelpanic έγραψε:Εκεί που ορίζει αν θα ανάβει το caps lock (δεν έχω ασχοληθεί καθόλου με windows.h) βάλε

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

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

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

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

*Αν έχεις άλλη (τυχαία) τιμή να βάλεις, ελεύθερα.
Το ίδιο και για το (rand%2) ;)
Το είχα σκεφτεί όταν έγραφα το πρόγραμμα τοτε. Αλλά είπα να το βάλω σε ίσα διαστήματα, για τη χειρότερη περίπτωση που θα έβγαιναν ΟΛΑ ΕΤσΙ... που είναι άσχημο. :roll:

Re: Make 'em Caps

Δημοσιεύτηκε: Πέμ Μαρ 19, 2009 7:19 pm
από thelastnicholas
Νομίζω οτι σε πραγματική χρήση υπάρχουν περισσότερες πιθανότητες να εμφανιστούν έτσι αν δεν έχεις ραντ παρά όταν έχεις αφού υπάρχει κίνδυνος να συντονιστεί ο χρήστης με το πρόγραμμα σου

Re: Make 'em Caps

Δημοσιεύτηκε: Πέμ Μαρ 19, 2009 10:03 pm
από kernelpanic
thelastnicholas, 100στό ποστ :)

Re: Make 'em Caps

Δημοσιεύτηκε: Παρ Μαρ 20, 2009 4:21 pm
από Artakserksis
( kernelpanic, δε χρειάζεται να επισημαίνεις σε κάθε υποκατηγορία τα milestones των posts :P )

Re: Make 'em Caps

Δημοσιεύτηκε: Παρ Μαρ 20, 2009 6:15 pm
από kernelpanic
Boiling point: 2η φορά :P