O que preciso: Preciso pegar o caminho do aplicativo que o usuário está usando, para monitorar as atividades.
Estou desenvolvendo um sistema de monitoramento de janelas do Windows, tentei usar as seguintes funções:
Windows 2000 = GetModuleFileName()
Windows XP x32 = GetProcessImageFileName()
Windows XP x64 = GetProcessImageFileName()
Windows Vista = QueryFullProcessImageName()
Windows 7 = QueryFullProcessImageName()
Porém com todas ocorrem o mesmo Erro:
main.cpp|19|error: 'QueryFullProcessImageName' was not declared in this scope|
Vejam um exemplo do código que busquei na internet:
Outra tentativa foi com esse código que fiz tentando usar GetForegroundWindow:
Ele funciona, mas não retorna o caminho do aplicativo que está "FOCADO" ( o que o usuário está usando ), ao invés disso ele retorna o caminho do código compilado. Testem por favor.
Pergunta
hipnos na area
Estou usando:
Estou desenvolvendo um sistema de monitoramento de janelas do Windows, tentei usar as seguintes funções:
Porém com todas ocorrem o mesmo Erro: Vejam um exemplo do código que busquei na internet:#include <Windows.h> #include <iostream> #include <Psapi.h> using namespace std; void printProcPath(DWORD pid) { //HANDLE hProc = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_QUERY_INFORMATION, false, pid); HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, false, pid); if (NULL == hProc) cout << "Cannot open process."; LPWSTR path = new WCHAR[MAX_PATH]; DWORD charsCarried = MAX_PATH; BOOL iResult = QueryFullProcessImageName(hProc, 0, path, &charsCarried); if (iResult == 0) { cout << "Cannot get process path."; } else { wcout << path; } } int main() { DWORD PIDs[1024], bytesReturned, procQty; EnumProcesses(PIDs, sizeof(PIDs), &bytesReturned); procQty = bytesReturned / sizeof(DWORD); for (DWORD i = 0; i < procQty; ++i) { cout << PIDs[i] << ": "; printProcPath(PIDs[i]); cout << '\n'; } cin.get(); return 0; }Outra tentativa foi com esse código que fiz tentando usar GetForegroundWindow: Ele funciona, mas não retorna o caminho do aplicativo que está "FOCADO" ( o que o usuário está usando ), ao invés disso ele retorna o caminho do código compilado. Testem por favor.#include <iostream> #include <windows.h> #include <stdio.h> #include <string.h> #include <sstream> #include <tlhelp32.h> #include <cstdio> #include <psapi.h> using namespace std; int main(){ HWND hwndHandle; char janelaGravar[1024]; while(1){ Sleep(10); //Janela ativa hwndHandle = GetForegroundWindow(); GetWindowText(hwndHandle, janelaGravar, 1023); if(hwndHandle){ HINSTANCE hInstance = (HINSTANCE)GetWindowLong( hwndHandle, GWL_HINSTANCE ); if(hInstance==0){ //cout << "Error:" << GetLastError(); } else { TCHAR path[MAX_PATH]; GetModuleFileName( hInstance, path, MAX_PATH ); cout << endl << path << endl; } } } }Grato.
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.