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

Odpowiedz Nowy wątek
2011-09-01 14:15
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");
 
edytowany 1x, ostatnio: rewertyn, 2011-09-01 15:06

Pozostało 580 znaków

2011-09-01 20:20
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
      }
    }
 
///////////////////////////////////////////////////////////////////////////////////////////////////////
 
edytowany 3x, ostatnio: rewertyn, 2011-09-02 07:23

Pozostało 580 znaków

2011-09-02 08:50
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{}          
        }
///////////////////////////////////////////////////////

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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