Имя текущего профиля
Как узнать имя текущего профиля? Такая задача появляется очень редко. Но тем не менее знать её решение полезно, т.к. оно универсально.
Итак, имя профиля появляется в статус баре терминала, точнее, в середине статус бара. Ищем окно, или элемент управления, которому принадлежит эта надпись. Средств такого поиска много, хотя бы 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);
}
Код, точнее сам подход, может быть легко приспособлен и под другие аналогичные задачи