Просмотр сообщений
|
Страниц: [1]
|
1
|
Компиляторы и платформы / Windows / Re: WinAPI MoveWindow не работает в Win 10
|
: Октябрь 26, 2020, 13:41
|
Господа, уж просите меня, мне так стыдно! Пример я наваял поторопившись, а как раз-таки с блокнотом всё хорошо работает. Не работает с другим софтом. Кому интересно, вот c этим реально НЕ работает: https:// www .acelab. ru /dep.pc/download/PC3000DiskAnalyzer.zip
И проблему я решил, надо было запускать exe от имени администратора. Добавил с сборку манифест и теперь всё хорошо. Вероятно, чтобы двигать чужие окна, запущенные от имени админа, нужно самому иметь права админа.
|
|
|
2
|
Компиляторы и платформы / Windows / Re: WinAPI MoveWindow не работает в Win 10
|
: Октябрь 24, 2020, 13:28
|
Вы находите 1 окно с таким заголовком, двигаете его на 1 позицию, затем находите следующее окно и его двигаете, уже на новую позицию. Всё, как задумывалось в коде.
Я прекрасно понимаю как оно работает Собственно, я просто набросал рабочий пример, чтобы проиллюстрировать то, что у меня не работает в основном проекте. Я понимаю, что ситуация банальная. Всё, на первый взгляд, проще простого и должно работать. Но вот не работает у меня, и именно в Windows 10. Окно не перемещается в заданную позицию, и никаких ошибок нет.
|
|
|
4
|
Компиляторы и платформы / Windows / WinAPI MoveWindow не работает в Win 10
|
: Октябрь 24, 2020, 12:07
|
Здравствуйте. Почему-то в Win 10 не работает MoveWindow(), пробовал на нескольких дистрибутивах. В Win 7 всё работает прекрасно. В чём может быть причина? Простейший пример, который двигает окна, в заголовке которых есть слово "Блокнот", прилагаю. #include <QCoreApplication> #include <windows.h>
QString getWindowTitle(HWND hWindow) { wchar_t wtitle[1024]; int len = GetWindowText(hWindow, LPWSTR(wtitle), sizeof (wtitle) - sizeof (wchar_t));
if (len <= 0) return QString(); else return QString::fromWCharArray(wtitle); }
int main(int argc, char *argv[]) { QCoreApplication a(argc, argv);
HWND hRoot = GetDesktopWindow(); HWND hWindow = GetWindow(hRoot, GW_CHILD);
int i = 25; while (hWindow != nullptr) { QString win_title = getWindowTitle(hWindow);
if (win_title.contains("Блокнот")) { MoveWindow(hWindow, i, i, 500, 400, true); i += 25; }
hWindow = GetWindow(hWindow, GW_HWNDNEXT); }
// return a.exec(); }
|
|
|
6
|
Qt / Вопросы новичков / Ошибка компиляции при добавлении <vds.h>
|
: Ноябрь 07, 2019, 04:52
|
Здравствуйте. Я новичок в Qt, возникла необходимость получить информацию о виртуальных дисках в Windows. Сделал программу пустышку для опытов, окно с plainTextEdit. Всё компилируется, но стоит мне добавить в код в редакторе сверху появляется предупреждение "Модель кода не сможет обрабатывать включённый файл, который, например, может приводить к неверному дополнению кода и подсветки". Компиляция завершается с ошибкой: ... D:\Qt\Tools\mingw730_64\x86_64-w64-mingw32\include\vdslun.h:10: ошибка: 'VDS_INTERCONNECT_ADDRESS_TYPE' does not name a type; did you mean '_VDS_INTERCONNECT'? VDS_INTERCONNECT_ADDRESS_TYPE m_addressType; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _VDS_INTERCONNECT ... Тип VDS_INTERCONNECT_ADDRESS_TYPE объявлен в vds.h. Что не нравится компилятору? Помогите разобраться, пожалуйста P.S. Qt 5.13.1, Windows 7 64-bit
|
|
|
|
|