Ajuda, pegar tituloda janela que esta em foco



  • Estou tentando pegar o titulo da janela que esta em foco, mas o código funciona em partes... eleexibe o resultado correto, mas em seguida ocorre um erro estranho...

    segue o código:

    @#include <iostream>
    #include <windows.h>
    #include <QDebug>

    HWND foco;
    char janela[255];

    using namespace std;
    int main()
    {

    LPTSTR p;
    int i;
    foco = GetForegroundWindow();
    GetWindowText(foco,p,255);
    
    for(i=0;i<61;i++)
        janela[i]=p[i];
    qDebug()<<janela;
    
    return 0;
    

    }
    @

    aceito dicas de outras formas de se fazer isso...

    desde ja agradeço.



  • O que é o erro estranho?



  • o mesmo erro que acontece no windows quando tentamos acessar uma posiçao de um vetor que nao existe... o problema é que o codigo funciona, e eu nao sei de outra forma que eu possa converter uma variavel do tipo LPTSTR para um vetor do tipo char...



  • Não sei se entendi direito e talvez esteja falando bobagem, mas isso não resolve:

    ui->label_2->setText(this->windowTitle());

    Ou no momento da informação vc não sabe qual janela está com foco?

    Abraços.



  • nao resolve, pq eu nao sei qual esta em foco, pois a aplicaçao vai ficar em segundo plano.



  • @
    for(i=0;i<61;i++)
    janela[i]=p[i];
    @

    Como você sabe que o LPTSTR tem 61 bytes?

    No Windows, se a compilação é feita com UNICODE (que é o caso do Qt), LPTSTR = LPWSTR = wchar_t.

    Você precisa usar algo como wcstombs ou WideCharToMultiByte para converter primeiro, se quiser um char*.
    Ou use o "fromWCharArray":http://qt-project.org/doc/qt-4.8/qstring.html#fromWCharArray do QString


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.