NewAge (Normal User)
Pro
Messaggi: 153
Iscritto: 23/08/2009
|
Come faccio a prendere il titolo della finestra in primo piano?
Codice sorgente - presumibilmente VB.NET |
Private Function GetActiveWindowTitle() As String Dim MyStr As String MyStr = New String(Chr(0), 100) GetWindowText(GetForegroundWindow, MyStr, 100) MyStr = MyStr.Substring(0, InStr(MyStr, Chr(0)) - 1) Return MyStr End Function
|
Questa č la funzione in vb.net, come faccio a tradurla in c++?
|
|
Dax89 (Member)
Expert
Messaggi: 283
Iscritto: 07/04/2007
|
Ciao!
Ecco la funzione che cerchi scritta in C++.
Codice sorgente - presumibilmente C/C++ |
void GetActiveWindowTitle(char* pTitle, int size)
{
GetWindowText(GetForegroundWindow(), pTitle, size);
}
|
Per usarla:
Codice sorgente - presumibilmente C/C++ |
char title[255];
GetActiveWindowTitle(title, 255);
|
Ultima modifica effettuata da Dax89 il 29/08/2009 alle 21:33 |
|
NewAge (Normal User)
Pro
Messaggi: 153
Iscritto: 23/08/2009
|
wow, cosė semplice? Grazie mille!
Mi restituisce errore
'GetWindowTextW': impossibile convertire il parametro 2 da 'char *' a 'LPWSTR'
Ultima modifica effettuata da NewAge il 29/08/2009 alle 21:45 |
|
Dax89 (Member)
Expert
Messaggi: 283
Iscritto: 07/04/2007
|
Usa la versione ANSI dell'API di windows GetWindowText()
Codice sorgente - presumibilmente C/C++ |
void GetActiveWindowTitle(char* pTitle, int size)
{
GetWindowTextA(GetForegroundWindow(), pTitle, size);
}
|
Se vuoi usare la versione UNICODE:
Codice sorgente - presumibilmente C/C++ |
void GetActiveWindowTitle(wchar_t* pTitle, int size)
{
GetWindowTextW(GetForegroundWindow(), pTitle, size);
}
|
E si usa (per la versione UNICODE):
Codice sorgente - presumibilmente C/C++ |
wchar_t title[255];
GetActiveWindowTitle(title, 255);
|
Ultima modifica effettuata da Dax89 il 29/08/2009 alle 21:50 |
|
NewAge (Normal User)
Pro
Messaggi: 153
Iscritto: 23/08/2009
|
Nada... niente da fare, mi da un errore peggio del precedente
"
1>cpp keylogger.obj : error LNK2028: al token non risolto (0A000298) "extern "C" struct HWND__ * __stdcall GetForegroundWindow(void)" (?GetForegroundWindow@@$$J10YGPAUHWND__@@XZ) si fa riferimento nella funzione "void __cdecl GetActiveWindowTitle(wchar_t *,int)" (?GetActiveWindowTitle@@$$FYAXPA_WH@Z)
1>cpp keylogger.obj : error LNK2028: al token non risolto (0A000299) "extern "C" int __stdcall GetWindowTextW(struct HWND__ *,wchar_t *,int)" (?GetWindowTextW@@$$J212YGHPAUHWND__@@PA_WH@Z) si fa riferimento nella funzione "void __cdecl GetActiveWindowTitle(wchar_t *,int)" (?GetActiveWindowTitle@@$$FYAXPA_WH@Z)
1>cpp keylogger.obj : error LNK2019: riferimento al simbolo esterno "extern "C" int __stdcall GetWindowTextW(struct HWND__ *,wchar_t *,int)" (?GetWindowTextW@@$$J212YGHPAUHWND__@@PA_WH@Z) non risolto nella funzione "void __cdecl GetActiveWindowTitle(wchar_t *,int)" (?GetActiveWindowTitle@@$$FYAXPA_WH@Z)
1>cpp keylogger.obj : error LNK2019: riferimento al simbolo esterno "extern "C" struct HWND__ * __stdcall GetForegroundWindow(void)" (?GetForegroundWindow@@$$J10YGPAUHWND__@@XZ) non risolto nella funzione "void __cdecl GetActiveWindowTitle(wchar_t *,int)" (?GetActiveWindowTitle@@$$FYAXPA_WH@Z)
1>C:\Documents and Settings\prova\Documenti\Visual Studio 2008\Projects\cpp keylogger\Debug\cpp keylogger.exe : fatal error LNK1120: 4 esterni non risolti
"
Potresti postarmi tutto il codice? Grazie ancora
|
|
Dax89 (Member)
Expert
Messaggi: 283
Iscritto: 07/04/2007
|
Il codice č tutto lė.
Quegli errori provengono dal linker e sta a significare che non hai importato una o pių librerie statiche.
Servono pių informazioni:
Che Ambiente di sviluppo stai utilizzando???
Che tipo di progetto hai creato???
Ultima modifica effettuata da Dax89 il 29/08/2009 alle 22:10 |
|
NewAge (Normal User)
Pro
Messaggi: 153
Iscritto: 23/08/2009
|
Sto usando Microsoft Visual c++ 2008 e ho creato un progetto console
|
|
Dax89 (Member)
Expert
Messaggi: 283
Iscritto: 07/04/2007
|
Devi creare un Progetto Win32, non un Progetto Console
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
non č vero...le api le puoi utilizzare anche in un progetto Console
per chiamare la GetWindowText normale(senza la A davanti) con le char * normali allora vai nelle opzioni del progetto e cambia il settaggio da Unicode a MultiByteArrays
|
|