Как получить хендл этого долбаного "Калькулятор Плюс"
SHELLEXECUTEINFO SEI;
ZeroMemory(&SEI, sizeof(SEI));
SEI.cbSize = sizeof(SEI);
SEI.fMask = SEE_MASK_NOCLOSEPROCESS;
SEI.nShow = SW_SHOWNORMAL;
SEI.lpParameters = "open";
SEI.lpFile = "calc.exe";
ShellExecuteEx(&SEI);
WaitForInputIdle(SEI.hProcess, INFINITE);
hWindow = SEI.hwnd;
SetWindowPos(hWindow, HWND_TOPMOST, 100, 100, 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW);
ShellExecuteEx(&SEI); калькулятор открывается, но
hWindow = FindWindow(NULL, "Калькулятор Плюс"); hWindow = NULL
WaitForInputIdle(SEI.hProcess, INFINITE);
hWindow = FindWindow(NULL, "Калькулятор плюс");
hWindow = NULL
WaitForInputIdle(SEI.hProcess, INFINITE);
hWindow = FindWindow(NULL, "Калькулятор плюс");
hWindow = NULL
вот ведь так и знал!
hWindow = FindWindow(NULL, "Калькулятор Плюс");
чуешь разницу?! а из-за тебя пришлось этот "долбаный "Калькулятор Плюс"" качать и ставить!
HWND calc = FindWindow(_T("SciCalc"), NULL);
//
if (calc != NULL) {
SetWindowText(calc, _T("Долбаный калькуляторплюс"));
} else {
//
DWORD dw = GetLastError();
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS |
FORMAT_MESSAGE_FROM_HMODULE,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL );
ShowMessage((LPTSTR)lpMsgBuf);
}
Phodopus,
[quote="MSDN"]
FindWindow Function
The FindWindow function retrieves a handle to the top-level window whose class name and window name match the specified strings. This function does not search child windows. This function does not perform a case-sensitive search.
[/quote]
Код:
hWindow = FindWindow(NULL, "Калькулятор плюс");
hWindow = FindWindow(NULL, "Калькулятор Плюс");
чуешь разницу?! а из-за тебя пришлось этот "долбаный "Калькулятор Плюс"" качать и ставить!
Убей меня бог! Не чую! Пардон, "П" большая. Но ведь в моем случае окно все равно открывается??!
Убей меня бог! Не чую! Пардон, "П" большая. Но ведь в моем случае окно все равно открывается??!
А в моем случае все находится :)
Phodopus,
...
This function does not perform a case-sensitive search.
вижу эту строку в MSDN. Но на моей машине факты говорят об обратном. Видимо забыли -in поставить? Просто иначе предложение кажется не совсем корректно сформированным.
А вообще интересно если народ у себя потестирует! Может результат какого SPxxxxxx?
На wasm-е народ тоже упоминает о регистрозависимом, в случае русских букв, сравнении. И это еще в 2005-м году... Значит есть бажок!
Не по моей, а по MSDN, и не должен записаться, а ты должен его сам туда записать перед вызовом ShellExecuteEx().
PS. Маленькое нажатие на "весы" лучше большого спасибо.
Общественность (гугл) склоняет к тому что баг.
Система XP Pro VLK En со всеми доступными обновлениями на сегодняшнее число.
Было где-то уже, топикстартер пользуйся поиском.