• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pomoże ktoś znaleźć błąd c++

Object Storage Arubacloud
0 głosów
122 wizyt
pytanie zadane 5 kwietnia 2020 w C i C++ przez fff Gaduła (3,950 p.)


MAM Problem ->( w linijkach 114-126). Tworzę takiego jakby bota ale utknąłem- działają mi kliknięcia myszki, zaś kliknięcia klawiatury nie działają. Pomoże ktoś i powie dlaczego?

Tutaj Unit1.cpp

 |

V




//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <vector>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
POINT cur;
std::vector<POINT> t_cur;
String poslist;
int p;
int powtorzenia=10-1;
String doW[100];
int dl_tab=0;
String litery[20];
 
void what_to_do(int co, String szczegol)
{
    if(co==1)
    {
        doW[dl_tab]="click";
    }
    else
    {
        doW[dl_tab]="press";
    }
 
    Form1->ListBox3->Items->Add(doW[dl_tab]+": "+szczegol);
    dl_tab++;
}
void add_pose()
{
     t_cur.push_back(cur);
    poslist = " X: " +IntToStr(cur.x) + "       Y: " +  IntToStr(cur.y);
    Form1->ListBox1->Items->Add(poslist);
 
    what_to_do(1,poslist);
}
 
void __fastcall TForm1::HotKey(TMessage &Msg)
{
    if (Msg.WParam == 1){
     Timer1->Enabled=false;
    }
    if (Msg.WParam == 2) {
    add_pose();
    }
 
     if (Msg.WParam == 3) {
 
    }
}
 
 
int obecne = 0;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Timer1->Enabled = true;
    Timer2->Enabled = true;
    obecne = 0;
     
}
//---------------------------------------------------------------------------
 
 
 
 
int obecne_tab=0;
int do_liter=0;//która litera
 
//------------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
 
Form1->Panel1->Color = RGB(rand()%250, rand()%250, rand()%250 );
 
 
 
if (obecne <= powtorzenia)
{
 
    Form1->Label2->Caption=obecne+1;
 
        if( Form1->ProgressBar1->Position < 100)
    {
 
    Form1->ProgressBar1->Position+=10;
    }
    else
    {
       Form1->   ProgressBar1->Position=0;
    }
 
    if( doW[obecne_tab] == "press")
    {
        String lit=litery[do_liter];
 
 
        /*keybd_event(0x41, 0, 0, 0);
        keybd_event(0x41, 0, KEYEVENTF_KEYUP, 0);     */
 
           if(lit=="A")
        {
        keybd_event('A', 0, 0, 0);
        keybd_event('A', 0, KEYEVENTF_KEYUP, 0);
        }
        else if(lit=="B")
        {
        keybd_event(0x42, 0, 0, 0);
        keybd_event(0x42, 0, KEYEVENTF_KEYUP, 0);
        }
 
        do_liter++;
        obecne++;
    }
    else
    {
 
        if (p < t_cur.size())
 
            {
 
 
                t_cur[p].x;
                SetCursorPos(t_cur[p].x, t_cur[p].y);
 
                mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
                mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
 
                p++;
 
        //keybd_event('Z', 0, 0, 0);
        //keybd_event('Z', 0, KEYEVENTF_KEYUP, 0);
        }
        else
        {
         p = 0;
         obecne++;
 
        }
        }
 
}
else
{
    Timer1->Enabled=false;
}
       //   Form1->Timer1->Enabled=false;
 
 
 
 
 
 
 
 
 
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
      Timer1->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
        cur.x = Mouse->CursorPos.x;
        cur.y = Mouse->CursorPos.y;
         // Mouse->CursorPos.x;
           //   Mouse->CursorPos.y;
        Label1->Caption = "X: " + IntToStr(cur.x) + "   Y: " + IntToStr(cur.y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
     add_pose();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
       ListBox1->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
    for (int i = 0; i < t_cur.size(); i++)
    {
        poslist = " X: " +IntToStr(t_cur[i].x) + "       Y: " +  IntToStr(t_cur[i].y);
        Form1->ListBox1->Items->Add(poslist);
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    RegisterHotKey(Form1->Handle, 1, 0, VK_SPACE);
    RegisterHotKey(Form1->Handle, 2, 0, VK_TAB);
    p=0;
}
//---------------------------------------------------------------------------
 
void change_time(int ms)
{
   Form1->Timer2->Interval=ms;
   Form1->Timer1->Interval=ms;
}
 
//----------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
    int msValue;
    msValue = Form1->msl->Value;
    change_time(msValue);
    //Timer2->Interval=ms;
    //Timer1->Interval=ms;
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button10Click(TObject *Sender)
{
    change_time(1);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button7Click(TObject *Sender)
{
    change_time(10);    
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button8Click(TObject *Sender)
{
    change_time(100);   
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button9Click(TObject *Sender)
{
    change_time(1000);  
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button11Click(TObject *Sender)
{
    change_time(10000);
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button12Click(TObject *Sender)
{
    powtorzenia=pole1->Value-1;
}
//---------------------------------------------------------------------------
 
int dlugosc_tab_liter=0;
void add_letter(String letter)
{
    poslist = letter;
    Form1->ListBox2->Items->Add(poslist);
    litery[dlugosc_tab_liter]=letter;
    dlugosc_tab_liter++;
    what_to_do(2, letter);
 
 
 
}
 
void __fastcall TForm1::Button13Click(TObject *Sender)
{
    add_letter("A");
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button14Click(TObject *Sender)
{
   add_letter("B");
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button15Click(TObject *Sender)
{
   add_letter("C");
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button16Click(TObject *Sender)
{
   add_letter("D");
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button17Click(TObject *Sender)
{
   add_letter("E");
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button18Click(TObject *Sender)
{
    add_letter("F");
}
//---------------------------------------------------------------------------

 

komentarz 5 kwietnia 2020 przez j23 Mędrzec (194,920 p.)

Nawiasem:

String lit = litery[do_liter];

if (lit == "A") 
{
        ...
}
else if (lit == "B")

po racjonalizacji:

char lit = litery[do_liter];

if (lit == 'A') {
    ...
}
else if (lit == 'B') {
    ...
}

// albo jeszcze lepiej:

switch (litery[do_liter]) {
case 'A':
    ...
    break;

case 'B':
    ...
    break;
}

 

komentarz 6 kwietnia 2020 przez fff Gaduła (3,950 p.)

@j23, 


nie działa nadal

{same kliknięcia myszki tak zaś klawiatury nie}

komentarz 6 kwietnia 2020 przez j23 Mędrzec (194,920 p.)
To nie było rozwiązanie problemu, tylko pokazanie jak wskazany fragment powinnien być zrobiony.
komentarz 6 kwietnia 2020 przez fff Gaduła (3,950 p.)
ale nie będę zamieniał string na char bo string będzie potrzebny do innych wartość np. [ENTER]

 

To jak ma być?
komentarz 6 kwietnia 2020 przez j23 Mędrzec (194,920 p.)

No ale to:

String lit = litery[do_liter];

ewidentnie odnosi się do pojedynczych znaków (nawet nazwa zmiennej na to wskazuje). A jeśli tak, to po co ze znaku robić Stringa i porównywać go jak łańcuch znakowy? Kod powinien być prosty i racjonalny.

Co do głównego problemu: sprawdzałeś debuggerem, czy wykonanie programu dochodzi do wywołań funkcji keybd_event?

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 360 wizyt
pytanie zadane 15 stycznia 2019 w Systemy operacyjne, programy przez rbt_ok Nowicjusz (140 p.)
0 głosów
1 odpowiedź 124 wizyt
pytanie zadane 21 grudnia 2015 w C i C++ przez Munvik Dyskutant (9,350 p.)
+1 głos
1 odpowiedź 521 wizyt
pytanie zadane 28 lipca 2021 w Java przez nowawtowarzystwie Nowicjusz (130 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...