kłopot z przesłaniem max 1 raz SendKeys::SendWait("2");

0

w programie ta instrukacja choć wykona się1 raz to przycisk naciskany jest 2 razy:

 

		if(index_wybranej_reki==2)
		{
		SendKeys::SendWait("2");//czasami za 1 razem nacisnie 2 razy
		cout<<endl<<"nacisnieto 2"<<endl;
                 system("pause");
		}

sprawdzałem inny kod taki i on działa dobrze:

 

#define WM_CHAR    0x0102
system("pause");
//system("start notepad");
Sleep(2000);
HWND hn, ht;
hn = FindWindow(_T("Notepad"),_T("Bez tytułu — Notatnik"));
ht = FindWindowEx(hn, 0, _T("EDIT"), NULL);
for (int i=0;i<25;i++)
{
cout<<i<<endl;
SendMessage (ht, WM_CHAR, '1', 0); //wysylanie do nieaktywnego okna
Sleep(10);
SendMessage (ht, WM_CHAR, '2', 0); 
Sleep(10);
SendMessage (ht, WM_CHAR, 13, 0); //enter
Sleep(10);
}
system("pause");

0

dalej mam problem z tym do notatnika czyli tu: SetForegroundWindow(notatnikhwnd); przesyla zawsze sie 1 literka co 1 runde
a tutaj: SetForegroundWindow(testWindow); do okna w internet explorer czasami 2 literki to jest kod:
i to choć to się pokaże zawsze tylko 1 raz cout<<endl<<"nacisnieto 2"<<endl; dla każdego TypeStr("1");//za pomoca keybd_event
np na 6 rund zamiast w internet explorer 6 razy kliknąć jest kliknięto 8 razy

kilka obrazków z działania tego fragmentu kodu:
http://www.image-share.com/ipng-896-95.html
http://www.image-share.com/ipng-896-96.html
widać z kodu że klawisz powinien być naciśnięty 2 razy jednak klawisze były naciśnięte 3 razy 2 razy ten co miał i 1 raz nie wiem jaki ale wywołał ewent w tej grze przeglądowej ten i inny niż miał dodatkowy

nawet zmodyfikowana funkcja przyciskania klawiszy pokazuje że wciśnięty jest tylko 1 klawisz a do intenet explorer czasami przesyłane są2 klawisze:

 

///////////////////////////////////////////////////////////////////////////////////////////////////////

void TypeStr(char *lpszString)//Napalms elite TypeStr function:
	{
	  char cChar;
	  while((cChar=*lpszString++)) // loops through chars
	  {
		cout<<"cChar="<<cChar<<endl;
	    short vk=VkKeyScan(cChar); // keycode of char
		cout<<"vk=VkKeyScan(cChar)="<<vk<<endl;
	    if((vk>>8)&1){keybd_event(VK_LSHIFT,0,0,0);} // hold shift if necessary
	    keybd_event((unsigned char)vk,0,0,0); // key in		
		/////////////////////////////////////////////////////////////////////////////////////
		cout<<"w funkcji void TypeStr(char *lpszString)"<<endl;
		cout<<"po keybd_event((unsigned char)vk,0,0,0); // key in "<<endl;
		cout<<" i przed keybd_event((unsigned char)vk,0,KEYEVENTF_KEYUP,0); // key out"<<endl;
		if (GetKeyState(0x44) < 0)//D key // wcisniety
		{cout<<"d wcisniety"<<endl;}
		else{cout<<"d odcisniety"<<endl;}
		if (GetKeyState(0x31) < 0)//1 key // wcisniety
		{cout<<"1 wcisniety"<<endl;}
		else{cout<<"1 odcisniety"<<endl;}
		if (GetKeyState(0x32) < 0)//1 key // wcisniety
		{cout<<"2 wcisniety"<<endl;}
		else{cout<<"2 odcisniety"<<endl;}
		if (GetKeyState(0x33) < 0)//1 key // wcisniety
		{cout<<"3 wcisniety"<<endl;}
		else{cout<<"3 odcisniety"<<endl;}
		if (GetKeyState(0x34) < 0)//1 key // wcisniety
		{cout<<"4 wcisniety"<<endl;}
		else{cout<<"4 odcisniety"<<endl;}
		if (GetKeyState(VK_SPACE) < 0)//SPACEBAR (0x20) key // wcisniety
		{cout<<"spacja wcisnieta"<<endl;}
		else{cout<<"spacja odcisnieta"<<endl;}


		for(int i=0;i<0xff;i+=0x01)
		{
		if (GetKeyState(i) < 0)//D key // wcisniety
		{cout<<"wcisniety i= "<<dec<<i<<" hex= "<<hex<<i<<dec<<endl;}
		else{}

			
		}
	    //system("pause");//lub cin.get(); // wait
		////////////////////////////////////////////////////////////////////////////////
	    Sleep((rand()%50+50));
	    keybd_event((unsigned char)vk,0,KEYEVENTF_KEYUP,0); // key out
	    if((vk>>8)&1){keybd_event(VK_LSHIFT,0,KEYEVENTF_KEYUP,0);} // release shift if necessary
		/////////////////////////////////////////////////////////////////////////////////////
		cout<<"w funkcji void TypeStr(char *lpszString)"<<endl;
		cout<<"po keybd_event((unsigned char)vk,0,0,0); // key in "<<endl;
		cout<<" i po keybd_event((unsigned char)vk,0,KEYEVENTF_KEYUP,0); // key out"<<endl;
		if (GetKeyState(0x44) < 0)//D key // wcisniety
		{cout<<"d wcisniety"<<endl;}
		else{cout<<"d odcisniety"<<endl;}
		if (GetKeyState(0x31) < 0)//1 key // wcisniety
		{cout<<"1 wcisniety"<<endl;}
		else{cout<<"1 odcisniety"<<endl;}
		if (GetKeyState(0x32) < 0)//1 key // wcisniety
		{cout<<"2 wcisniety"<<endl;}
		else{cout<<"2 odcisniety"<<endl;}
		if (GetKeyState(0x33) < 0)//1 key // wcisniety
		{cout<<"3 wcisniety"<<endl;}
		else{cout<<"3 odcisniety"<<endl;}
		if (GetKeyState(0x34) < 0)//1 key // wcisniety
		{cout<<"4 wcisniety"<<endl;}
		else{cout<<"4 odcisniety"<<endl;}
		if (GetKeyState(VK_SPACE) < 0)//SPACEBAR (0x20) key // wcisniety
		{cout<<"spacja wcisnieta"<<endl;}
		else{cout<<"spacja odcisnieta"<<endl;}


		for(int i=0;i<0xff;i+=0x01)
		{
		if (GetKeyState(i) < 0)//D key // wcisniety
		{cout<<"wcisniety i= "<<dec<<i<<" hex= "<<hex<<i<<dec<<endl;}
		else{}

			
		}
	    //system("pause");//lub cin.get(); // wait
		////////////////////////////////////////////////////////////////////////////////
	  }
	}


///////////////////////////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////
	cout<<endl<<"2	     wypisanie ostatecznego wyboru reki:"<<endl;
	cout<<endl<<"	     reka nr :"<<index_wybranej_reki<<endl;
	cout<<endl<<"index_wybranej_reki_dod  reka nr :"<<index_wybranej_reki_dod<<endl;

	    //system("pause");//lub cin.get(); // wait

	    SetForegroundWindow(testWindow);
		SetCursorPos(width11+(rand()%150+440), height11+(rand()%150+340));
		Sleep((rand()%150+200));  
		mouse_event(MOUSEEVENTF_LEFTDOWN,0 ,0,0,0);
		Sleep((rand()%50+100));
		mouse_event(MOUSEEVENTF_LEFTUP,0 ,0,0,0);
		Sleep((rand()%50+100));
		
		if(tab_do_koncowego_sortowania_[4][0]==0)
		{

		//SendKeys::SendWait("d");
		TypeStr("d");//za pomoca keybd_event
		cout<<endl<<"nacisnieto d"<<endl;
		Sleep(123);
		SetForegroundWindow(notatnikhwnd);
		TypeStr("d");//za pomoca keybd_event
		//SendMessage (testWindow12, WM_CHAR, 'd', 0); //wysylanie do nieaktywnego okna
		cout<<endl<<"nacisnieto d"<<endl;
        //system("pause");
		goto next;
		}
		if(index_wybranej_reki==1)
		{
		//SendKeys::SendWait("1");
		TypeStr("1");//za pomoca keybd_event
		cout<<endl<<"nacisnieto 1"<<endl;
		Sleep(123);
		SetForegroundWindow(notatnikhwnd);
		TypeStr("1");//za pomoca keybd_event
		//SendMessage (testWindow12, WM_CHAR, '1', 0); //wysylanie do nieaktywnego okna
		cout<<endl<<"nacisnieto 1"<<endl;
       // system("pause");
		}
		if(index_wybranej_reki==2)
		{
		//SendKeys::SendWait("2");//czasami za 1 razem nacisnie 2 razy
		TypeStr("2");//za pomoca keybd_even
		cout<<endl<<"nacisnieto 2"<<endl;
		Sleep(123);
		SetForegroundWindow(notatnikhwnd);
		TypeStr("2");//za pomoca keybd_event
		//SendMessage (testWindow12, WM_CHAR, '2', 0); //wysylanie do nieaktywnego okna
		cout<<endl<<"nacisnieto 2"<<endl;
       // system("pause");
		}
		if(index_wybranej_reki==3)
		{
		//SendKeys::SendWait("3");
		TypeStr("3");//za pomoca keybd_event
		cout<<endl<<"nacisnieto 3"<<endl;
		Sleep(123);
		SetForegroundWindow(notatnikhwnd);
		TypeStr("3");//za pomoca keybd_event
		//SendMessage (testWindow12, WM_CHAR, '3', 0); //wysylanie do nieaktywnego okna
		cout<<endl<<"nacisnieto 3"<<endl;
        //system("pause");
		}
		if(index_wybranej_reki==4)
		{
		//SendKeys::SendWait("4");
		TypeStr("4");//za pomoca keybd_event
		cout<<endl<<"nacisnieto 4"<<endl;
		Sleep(123);
		SetForegroundWindow(notatnikhwnd);
		TypeStr("4");//za pomoca keybd_event
		//SendMessage (testWindow12, WM_CHAR, '4', 0); //wysylanie do nieaktywnego okna
		cout<<endl<<"nacisnieto 4"<<endl;
       // system("pause");
		}
next:
	Sleep((rand()%150+200));
	SetForegroundWindow(testWindow2);
        system("pause");//lub cin.get(); // wait 

//////////////////////////////////////////////////////////////////////////////


 
 

///////////////////////////////////////////////////////////////////////////////////////////////////////

void TypeStr(char *lpszString)//Napalms elite TypeStr function:
	{
	  char cChar;
	  while((cChar=*lpszString++)) // loops through chars
	  {
		cout<<"cChar="<<cChar<<endl;
	    short vk=VkKeyScan(cChar); // keycode of char
		cout<<"vk=VkKeyScan(cChar)="<<vk<<endl;
	    if((vk>>8)&1){keybd_event(VK_LSHIFT,0,0,0);} // hold shift if necessary
	    keybd_event((unsigned char)vk,0,0,0); // key in
	    Sleep((rand()%50+50));
	    keybd_event((unsigned char)vk,0,KEYEVENTF_KEYUP,0); // key out
	    if((vk>>8)&1){keybd_event(VK_LSHIFT,0,KEYEVENTF_KEYUP,0);} // release shift if necessary
	  }
	}


///////////////////////////////////////////////////////////////////////////////////////////////////////

0

chyba znalazłem rozwiązanie żeby uaktywnić okno edit myszka klika mi losowo w to pole więc czasami kliknie w pole "d" i po to mam czasami 2 razy nacisniete rożne przyciski :

            SetForegroundWindow(testWindow);
            SetCursorPos(width11+(rand()%150+440), height11+(rand()%150+340));
            Sleep((rand()%150+200));  
            mouse_event(MOUSEEVENTF_LEFTDOWN,0 ,0,0,0);
            Sleep((rand()%50+100));
            mouse_event(MOUSEEVENTF_LEFTUP,0 ,0,0,0);
            Sleep((rand()%50+100));

oraz sprawdzałem jeszcze to do przesyłania choć pisze że przesłało to w oknie nie został naciśnięty przycisk:

 


///////////////////////////////////////////////////
		for(int i=0;i<0xff;i+=0x01)
		{
		if (GetKeyState(i) < 0)//D key // wcisniety
		{cout<<"wcisniety i= "<<dec<<i<<" hex= "<<hex<<i<<dec<<endl;}
		else{}			
		}
INPUT inp[2];
ZeroMemory(inp, sizeof(inp));
inp[0].type=INPUT_KEYBOARD;
inp[0].ki.wScan =DIKEYBOARD_2; // direct-input scancode for key '2'
inp[0].ki.dwFlags=0;
inp[1]=inp[0];
inp[1].ki.dwFlags|= KEYEVENTF_KEYUP;
if (SendInput(2, inp, sizeof(INPUT)) != 2){cout<<"nie przeslano"<<endl;}
else{cout<<"przslano"<<endl;}
		for(int i=0;i<0xff;i+=0x01)
		{
		if (GetKeyState(i) < 0)//D key // wcisniety
		{cout<<"wcisniety i= "<<dec<<i<<" hex= "<<hex<<i<<dec<<endl;}
		else{}			
		}
///////////////////////////////////////////////////////

1 użytkowników online, w tym zalogowanych: 0, gości: 1