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

c++ czemu to nie działa keybd_event("X", 0, 0, 0); ?

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

Dlaczego to nie działa( linijka 149,150)

keybd_event(xo, 0, 0, 0);

 

//---------------------------------------------------------------------------


//---------------------------------------------------------------------------

#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;
	
}
//---------------------------------------------------------------------------

/*void wykonaj()
{



//keybd_event('Z', 0, 0, 0);
//keybd_event('Z', 0, KEYEVENTF_KEYUP, 0);

if (p < t_cur.size())

	{
		 if( Form1->ProgressBar1->Position < 100)
	{

	Form1->ProgressBar1->Position+=10;
	}
	else
	{
       Form1->	ProgressBar1->Position=0;
	}


		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;

	}


}
     */
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 xo =litery[do_liter];
		do_liter++;
		keybd_event(xo, 0, 0, 0);
		keybd_event(xo, 0, KEYEVENTF_KEYUP, 0);
		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");
}
//---------------------------------------------------------------------------

PS: Chciałby ktoś poprawić mój kod?

komentarz 28 marca 2020 przez DragonCoder Nałogowiec (36,500 p.)
1. Co znaczy nie dziala?

2. Builder jest przestarzaly, przeskocz na Qt

1 odpowiedź

0 głosów
odpowiedź 28 marca 2020 przez DragonCoder Nałogowiec (36,500 p.)

z builderem znam sie 0, ale patrzac na doku winapi to:

void keybd_event(
  BYTE      bVk,
  BYTE      bScan,
  DWORD     dwFlags,
  ULONG_PTR dwExtraInfo
);

A virtual-key code. The code must be a value in the range 1 to 254. For a complete list, see Virtual Key Codes.

i te virtual keys podaje sie w formie VK_.... cala liste masz w linku , a nie xo, co kolwiek te xo znaczy

https://docs.microsoft.com/de-de/windows/win32/inputdev/virtual-key-codes

 

komentarz 28 marca 2020 przez fff Gaduła (3,950 p.)

 

a nie xo, co kolwiek te xo znaczy

1)


String xo =litery[do_liter]

może być inna nazwa

2)

to np zamiast 

keybd_event("A", 0, 0, 0); 

mam użyć

 

 keybd_event(0x41, 0, 0, 0);

?

komentarz 28 marca 2020 przez DragonCoder Nałogowiec (36,500 p.)
ale to nie moze byc string. Ta funkcja jako 1 argument przyjmuje byte. Te stale tzn VK_ESC np to nic innego jak enum, ktory kryje za soba wartosc liczba w takiej postaci jak 0x1E np. Nie wiem jakie to dokladnie wartosci. Teoretycznie to kompilator powinnien Ci wywalic blad w tej funkcji.

jezeli ma to byc np tab to zrob:

keybd_event(VK_TAB, 0, 0, 0);

EDIT:

tak, jesli ma to byc litera to uzywasz 0x41 np. Ogolnie mozesz to zrobic dla dowolnej wartosci, tak jak jest w linku
komentarz 4 kwietnia 2020 przez fff Gaduła (3,950 p.)
edycja 4 kwietnia 2020 przez fff

CZEMU NIE KLIKAJĄ MI SIĘ LITERY?

//---------------------------------------------------------------------------

#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");
}
//---------------------------------------------------------------------------

 

Podobne pytania

0 głosów
2 odpowiedzi 228 wizyt
pytanie zadane 11 września 2016 w C# przez Człowiek Niewidzialn Użytkownik (500 p.)
0 głosów
2 odpowiedzi 191 wizyt
pytanie zadane 2 lipca 2016 w C# przez matilogias Obywatel (1,550 p.)
0 głosów
1 odpowiedź 404 wizyt
pytanie zadane 7 lutego 2020 w C i C++ przez JACOBSSSPRO Początkujący (410 p.)

92,634 zapytań

141,505 odpowiedzi

319,883 komentarzy

62,015 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!

...