Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo