...It's time for financial transactions...

Main menu

Имя текущего профиля

Как узнать имя текущего профиля? Такая задача появляется очень редко. Но тем не менее знать её решение полезно, т.к. оно универсально.

Итак, имя профиля появляется в статус баре терминала, точнее, в середине статус бара. Ищем окно, или элемент управления, которому принадлежит эта надпись. Средств такого поиска много, хотя бы spyxx из VS. После этого используем такой код:

#import "user32.dll"
int GetForegroundWindow();
int FindWindowExW(int hwndParent,int hwndChildAfter,string lpszClass,string lpszWindow);
int SendMessageW(int hWnd,int Msg,int wParam,string& lParam);
#import
#define WM_USER                 0x0400
#define SB_GETTEXTW             (WM_USER+13)
#define PROFILE_PART            1
bool GetCurrentProfileName(string& buff) {
int h = GetForegroundWindow();
if (h != 0) {
int s = FindWindowExW(h,NULL,"msctls_statusbar32","");
if (s != 0) {
StringInit(buff,255);
SendMessageW(s,int SB_GETTEXTW,PROFILE_PART,buff);
}else return (false);
}else return (false);
return (true);
}

Код, точнее сам подход, может быть легко приспособлен и под другие аналогичные задачи