Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Get active foreground window
Forum - C/C++ - Get active foreground window

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
NewAge (Normal User)
Pro


Messaggi: 153
Iscritto: 23/08/2009

Segnala al moderatore
Postato alle 21:25
Sabato, 29/08/2009
Come faccio a prendere il titolo della finestra in primo piano?
Codice sorgente - presumibilmente VB.NET

  1. Private Function GetActiveWindowTitle() As String
  2.         Dim MyStr As String
  3.         MyStr = New String(Chr(0), 100)
  4.         GetWindowText(GetForegroundWindow, MyStr, 100)
  5.         MyStr = MyStr.Substring(0, InStr(MyStr, Chr(0)) - 1)
  6.  
  7.         Return MyStr
  8.     End Function


Questa è la funzione in vb.net, come faccio a tradurla in c++?

PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 21:31
Sabato, 29/08/2009
Ciao!
Ecco la funzione che cerchi scritta in C++.

Codice sorgente - presumibilmente C/C++

  1. void GetActiveWindowTitle(char* pTitle, int size)
  2. {
  3.   GetWindowText(GetForegroundWindow(), pTitle, size);
  4. }



Per usarla:
Codice sorgente - presumibilmente C/C++

  1. char title[255];
  2. GetActiveWindowTitle(title, 255);


Ultima modifica effettuata da Dax89 il 29/08/2009 alle 21:33


PM Quote
Avatar
NewAge (Normal User)
Pro


Messaggi: 153
Iscritto: 23/08/2009

Segnala al moderatore
Postato alle 21:40
Sabato, 29/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
PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 21:47
Sabato, 29/08/2009
Usa la versione ANSI dell'API di windows GetWindowText()

Codice sorgente - presumibilmente C/C++

  1. void GetActiveWindowTitle(char* pTitle, int size)
  2. {
  3.   GetWindowTextA(GetForegroundWindow(), pTitle, size);
  4. }



Se vuoi usare la versione UNICODE:

Codice sorgente - presumibilmente C/C++

  1. void GetActiveWindowTitle(wchar_t* pTitle, int size)
  2. {
  3.   GetWindowTextW(GetForegroundWindow(), pTitle, size);
  4. }



E si usa (per la versione UNICODE):
Codice sorgente - presumibilmente C/C++

  1. wchar_t title[255];
  2. GetActiveWindowTitle(title, 255);


Ultima modifica effettuata da Dax89 il 29/08/2009 alle 21:50


PM Quote
Avatar
NewAge (Normal User)
Pro


Messaggi: 153
Iscritto: 23/08/2009

Segnala al moderatore
Postato alle 22:02
Sabato, 29/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

PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 22:08
Sabato, 29/08/2009
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


PM Quote
Avatar
NewAge (Normal User)
Pro


Messaggi: 153
Iscritto: 23/08/2009

Segnala al moderatore
Postato alle 22:12
Sabato, 29/08/2009
Sto usando Microsoft Visual c++ 2008 e ho creato un progetto console

PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 23:03
Sabato, 29/08/2009
Devi creare un Progetto Win32, non un Progetto Console ;)


PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 9:52
Domenica, 30/08/2009
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


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo