Nazwa aktywnego procesu okna

0

Nigdzie nie mogę znaleźć w jaki sposób mogę pobrać nazwę procesu okna, które jest na wierzchu np. firefox, na razie mam:

 
int main(void)
{
	Sleep(3000);

	HWND hOkno=GetForegroundWindow(); 
	DWORD proccesID;
	GetWindowThreadProcessId(hOkno, &proccesID);

	cout << proccesID;
	cin.get();
	return 0;
}

Jednak nie o to mi chodziło, jest to w ogóle możliwe?

1

Nie ma bezpośrednio funkcji do tego służącej, ale można pobrać listę wszystkich procesów i znaleźć ten którego potrzebujesz, kiedy już masz process id.
http://msdn.microsoft.com/en-us/library/ms686701(VS.85).aspx

1

OpenProcess
GetModuleFileNameEx lub GetProcessImageFileName lub QueryFullProcessImageName
CloseHandle

EDIT
Nudzi mi się:

#include "stdafx.h"
#include <iostream>
#include "Windows.h"
#include "Psapi.h"

using namespace std;

int main(void) {	
	Sleep(3000);

	HWND hOkno = GetForegroundWindow();
	DWORD proccesID;
	GetWindowThreadProcessId(hOkno, &proccesID);
	wcout << "PID: " << proccesID << "\n\n";
	HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, proccesID);

	wchar_t processName[MAX_PATH];

	wcout << "GetModuleFileNameEx:\n";
	ZeroMemory(processName, MAX_PATH);
	GetModuleFileNameEx(hProc, NULL, processName, MAX_PATH);
	wcout << processName << "\n\n";

	wcout << "GetProcessImageFileName:\n";
	ZeroMemory(processName, MAX_PATH);
	GetProcessImageFileName(hProc, processName, MAX_PATH);
	wcout << processName << "\n\n";

	wcout << "QueryFullProcessImageName:\n";
	ZeroMemory(processName, MAX_PATH);
	DWORD len = MAX_PATH;
	QueryFullProcessImageName(hProc, 0, processName, &len);
	wcout << processName;

	CloseHandle(hProc);

	wcin.get();
	return 0;
}
0

Tylko po co?

	char buff[MAX_PATH];
	len = lstrlen(processName);
	WideCharToMultiByte(CP_ACP, 0, processName, len, buff, sizeof(buff), NULL, NULL);
	buff[len] = 0;

1 użytkowników online, w tym zalogowanych: 0, gości: 1