Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/48: Рейтинг темы: голосов - 48, средняя оценка - 4.96
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4

Как переключить фокус программы на нужное окно?

07.03.2021, 02:31. Показов 11039. Ответов 48
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Предположим я запустил браузер
C++
1
2
char*put="\"""/Program Files/Mozilla Firefox/firefox.exe""\"";
system(put);
, спустя какое-то время другая программа ложиться поверх всех окон и запущенный мною браузер находится на заднем плане, может ли с++ направить фокус на нужную запущенную программу?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.03.2021, 02:31
Ответы с готовыми решениями:

wxWidgets Перевести фокус на нужное окно и сделать скриншот указанной области
Мне надо вышеизложенное, хотелось бы кроссплатформенно. Посоветовали wxWidgets, но как там это сделать? Может есть у кого готовое решение...

Как установить фокус на нужное окно после закрытия окна?
У меня есть родетельское окно и на нём есть кнопка, при нажатии на кнопку создаётся toplevel на нём накиданы поля ввода и кнопки, при...

RadioButton как Программно переключить в нужное состояние/значение
Всем привет. Вопрос озвучил в заголовке. Искал в сети, нашёл всякое, например, как получить текущее значение RadioButton, но как в коде...

48
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
12.04.2021, 16:41  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Optimus11 Посмотреть сообщение
SetWondowsPos не занимается разворачиванием окон, она выводит на передний план те окна, который развернуты в данный момент.
Всё с точностью наоборот если вы смотрели мой первый ролик оно как раз таки и берёт свёрнутые окна. А счас посмотрю как у вас сделано перепроверю. Я развернул окна и то же самое, значит у вас нет таких ограничений при вызове

Добавлено через 2 минуты
так что ни хрена оно не работает.

Добавлено через 3 минуты
А вот сработало, почему так не стабильно ведёт себя. Теперь окна перечислены вашей прогой.
0
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
12.04.2021, 16:42
Цитата Сообщение от Nexi99 Посмотреть сообщение
Всё с точностью наоборот если вы смотрели мой первый ролик оно как раз таки и берёт свёрнутые окна. А счас посмотрю как у вас сделано перепроверю. Я развернул окна и то же самое, значит у вас нет таких ограничений при вызове

Добавлено через 2 минуты
так что ни хрена оно не работает.
Если не сложно, попробуйте еще раз. Я добавил немного отладочной информации на консоль. У меня Windows 10, все работает, как часы.Move_on_the_TOP1.rar
И если не сложно запишите пожалуйста.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
12.04.2021, 16:58  [ТС]
Цитата Сообщение от Optimus11 Посмотреть сообщение
Запустите этот скрипт у себя
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
HWND g_HWND=NULL;
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam){
    DWORD lpdwProcessId;
    GetWindowThreadProcessId(hWnd,&lpdwProcessId);
    if(lpdwProcessId==lParam){g_HWND=hWnd;return 0;}
    return 1;
}
//в main
char*put="C:\\Program Files\\Mozilla Firefox\\firefox.exe";
STARTUPINFOA start_info={sizeof start_info};
PROCESS_INFORMATION proc_info={0};
cout<<"proc_info.hProcess "<<proc_info.hProcess<<" proc_info.dwProcessId "<<proc_info.dwProcessId<<endl;
CreateProcessA(put,0,0,0,0,0,0,0,&start_info,&proc_info);//Эксперимент 3. Глюк с окошками.
cout<<"proc_info.hProcess "<<proc_info.hProcess<<" proc_info.dwProcessId "<<proc_info.dwProcessId<<endl;
DWORD ExitCode=0,proz=0;
GetExitCodeProcess(proc_info.hProcess,&ExitCode);
cout<<"lpExitCode "<<ExitCode<<" "<<(int)ExitCode<<" g_HWND "<<g_HWND<<endl;//STILL_ACTIVE- процесс работает
Sleep(10000);//для того чтобы приложение загрузилось нормально
char*yu=new char[80];
char gh;
cin>>gh;cout<<"gh "<<gh<<endl;//2ая искусственная задержка
EnumWindows(EnumWindowsProc,proc_info.dwProcessId);
cout<<" g_HWND "<<g_HWND<<" tt "<<0<<endl;//здесь выводит найденный g_HWND
cout<<GetWindowTextA(g_HWND,yu,80)<<" ";cout<<yu<<endl;//выводит имя окна
delete yu;
SetWindowPos(g_HWND,HWND_TOPMOST,400,400,400,400,SWP_SHOWWINDOW);
WINDOWINFO qa;
qa.cbSize=sizeof(WINDOWINFO);
if( GetWindowInfo(g_HWND,&qa)){;
cout<<" g_HWND "<<g_HWND<<" qa.cxWindowBorders "<<qa.cxWindowBorders<<" qa.cyWindowBorders "<<qa.cyWindowBorders
<<endl;}
//ExitProcess((UINT)ExitCode);
 
RECT sd;
if(GetClientRect(g_HWND,&sd)){
cout<<"sd.bottom "<<sd.bottom<<" sd.left "<<sd.left<<" sd.right "<<sd.right<<" sd.top "<<sd.top<<endl;
}/**/
TerminateProcess(proc_info.hProcess,ExitCode);//1 ExitCode
cout<<"proc_info.hProcess "<<proc_info.hProcess<<" proc_info.dwProcessId "<<proc_info.dwProcessId<<
endl;
cout<<"закрываем "<<CloseHandle(proc_info.hProcess)<<endl;
Добавлено через 4 минуты
Цитата Сообщение от Optimus11 Посмотреть сообщение
Если не сложно, попробуйте еще раз.
Я перепроверил сработало. Но честно говоря у меня в ролике оно свёрнутое окно и открыло. Я не знаю что это за фигня. Я выше показал какой код использую и у меня браузер не выводит на передний план хотя структура показывает размер 400 на 400 можете сами посмотреть.

Добавлено через 3 минуты
Цитата Сообщение от Optimus11 Посмотреть сообщение
Вы свернули ВСЕ окна, и хотите
по правде говоря это мне тоже интересно, окна могут быть в состоянии но нужно сначала понять как по простому сделать а потом играться со свёрнутыми окнами. Должны быть какие-то функции в этом направлении.
0
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
12.04.2021, 17:00
Цитата Сообщение от Nexi99 Посмотреть сообщение
у меня браузер не выводит на передний план
SetWindowsPos, что в этом случае возвращает ? False, True? Если false, то какой код getlasterror.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
12.04.2021, 17:17  [ТС]
Цитата Сообщение от Optimus11 Посмотреть сообщение
SetWindowsPos, что в этом случае возвращает ?
ну раз размеры структуры WINDOWINFO меняются на 400 на 400 значит срабатывает но я проверю ещё раз.

Добавлено через 7 минут
Цитата Сообщение от Optimus11 Посмотреть сообщение
SetWindowsPos, что в этом случае возвращает ?
Странно оно работает открыла браузер а размеры не установило. Видео снял но прога хреновая переделываю.

Добавлено через 8 минут
Цитата Сообщение от Optimus11 Посмотреть сообщение
SetWindowsPos, что в этом случае возвращает ?
Выводит 1цу
C++
1
cout<<"SetWindowPos "<<SetWindowPos(g_HWND,HWND_TOPMOST,400,400,400,400,SWP_SHOWWINDOW)<<en;
короче не работает оно https://disk.yandex.ru/i/jyJh_0qVQzGSWA, но я в кадр эту единицу не показал, но проверил выводит единицу, возьмите мой код вставьте посмотрите что у вас будет.
0
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
12.04.2021, 17:23
Цитата Сообщение от Nexi99 Посмотреть сообщение
ну раз размеры структуры WINDOWINFO меняются на 400 на 400 значит срабатывает но я проверю ещё раз.

Добавлено через 7 минут

Странно оно работает открыла браузер а размеры не установило. Видео снял но прога хреновая переделываю.

Добавлено через 8 минут

Выводит 1цу
C++
1
cout<<"SetWindowPos "<<SetWindowPos(g_HWND,HWND_TOPMOST,400,400,400,400,SWP_SHOWWINDOW)<<en;

Может все таки так проверять ?
C++
1
2
3
4
5
6
BOOL mybool = SetWindowPos(my_HWND, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
 
if(mybool == 0)
{
std::cout<<Getlasterror()<<std::endl;
}
[/QUOTE]


Цитата Сообщение от Nexi99 Посмотреть сообщение
возьмите мой код вставьте посмотрите что у вас будет.
У вас там че то много лишнего, вы лучше скажите окончательно, мой скрипт гарантировано каждый раз выводит ваш браузер на передний план или нет??
Если выводит, то значит вы, что то не так делаете, значит просто нужно найти - что не так делаете.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
12.04.2021, 17:27  [ТС]
Цитата Сообщение от Optimus11 Посмотреть сообщение
Если выводит, то значит вы, что то не так делаете, значит просто нужно найти - что не так делаете.
Ваш скрипт работает стабильно первый вариант если окна развёрнуты, если свёрнуты не стабильно. Ну а я свой код выставил выше. Можете его скомпилировать и проверить. Я не знаю что я не так делаю какая ошибка в этой строке. Я так пишу SetWindowPos(g_HWND,HWND_TOPMOST,400,400,400,400,SWP_SHOWWINDOW);.
0
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
12.04.2021, 18:11
Цитата Сообщение от Nexi99 Посмотреть сообщение
Ваш скрипт работает стабильно первый вариант если окна развёрнуты, если свёрнуты не стабильно. Ну а я свой код выставил выше. Можете его скомпилировать и проверить. Я не знаю что я не так делаю какая ошибка в этой строке. Я так пишу SetWindowPos(g_HWND,HWND_TOPMOST,400,400,400,400,SWP_SHOWWINDOW);.
Попытка номер три, пробуйте: и с окнами свернутыми и развернутыми. Move_on_the_TOP2.rar
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
12.04.2021, 20:01  [ТС]
Цитата Сообщение от Optimus11 Посмотреть сообщение
Попытка номер три, пробуйте: и с окнами свернутыми и развернутыми. Move_on_the_TOP2.rar
Со свёрнутыми работает тоже стабильно. С раскрытыми окнами переключает и устанавливает спонтанные размеры. Что вы мне можете посоветовать? Какие ошибки в моём коде который я выложил ранее, почему появляется какое-то окно из ворд а потом пропадает или вообще не работает, при этом структура возвращает размер а SetWindowPos возвращает истину?
0
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
12.04.2021, 20:13
Цитата Сообщение от Nexi99 Посмотреть сообщение
Со свёрнутыми работает тоже стабильно.
У меня за это отвечает строка:
C++
1
ShowWindow(*my_HWND, SW_SHOWNOACTIVATE);
Перед вызовом SetWindowsPos.


Цитата Сообщение от Nexi99 Посмотреть сообщение
С раскрытыми окнами переключает и устанавливает спонтанные размеры.
Есть такая непонятка, у меня размеры меняются у окон VS, остальные окна сохраняют свои размеры.

Тут вероятнее всего нужно просто добавить проверку окна на то, свернуто оно или развернуто. Если свернуто, то добавляем волшебную строчку:
C++
1
ShowWindow(*my_HWND, SW_SHOWNOACTIVATE);
Если оно развернуто, то просто используем SetWindowPos без предварительного ее развертывания, и косяков со спонтанными изменениями размеров не будет (в моем первом скрипте размеры развёрнутых окон при выведении их на передний план - не меняются)


Теоретически после этого, все должно работать гарантировано стабильно.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
12.04.2021, 20:36  [ТС]
Цитата Сообщение от Optimus11 Посмотреть сообщение
Теоретически после этого, все должно работать гарантировано стабильно.
Я читал про те функции а какие тут ошибки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
HWND g_HWND=NULL;
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam){
    DWORD lpdwProcessId;
    GetWindowThreadProcessId(hWnd,&lpdwProcessId);
    if(lpdwProcessId==lParam){g_HWND=hWnd;return 0;}
    return 1;
}
//в main
char*put="C:\\Program Files\\Mozilla Firefox\\firefox.exe";
STARTUPINFOA start_info={sizeof start_info};
PROCESS_INFORMATION proc_info={0};
CreateProcessA(put,0,0,0,0,0,0,0,&start_info,&proc_info);
DWORD ExitCode=0;
GetExitCodeProcess(proc_info.hProcess,&ExitCode);
Sleep(10000);//для того чтобы приложение загрузилось нормально
char*yu=new char[80];
EnumWindows(EnumWindowsProc,proc_info.dwProcessId);
cout<<" g_HWND "<<g_HWND<<" tt "<<0<<endl;//здесь выводит найденный g_HWND
cout<<GetWindowTextA(g_HWND,yu,80)<<" ";cout<<yu<<endl;//выводит имя окна
delete yu;
char gh;
cin>>gh;cout<<"gh "<<gh<<endl;//задержка чтобы окно увидеть
cout<<SetWindowPos(g_HWND,HWND_TOPMOST,400,400,400,400,SWP_SHOWWINDOW)<<endl;
WINDOWINFO qa;
qa.cbSize=sizeof(WINDOWINFO);
if( GetWindowInfo(g_HWND,&qa)){;
cout<<" g_HWND "<<g_HWND<<" qa.cxWindowBorders "<<qa.cxWindowBorders<<" qa.cyWindowBorders "<<qa.cyWindowBorders
<<endl;}
0
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
12.04.2021, 20:39
Цитата Сообщение от Nexi99 Посмотреть сообщение
Я читал про те функции а какие тут ошибки
[CPP]
Уберите из кода для начала все лишнее, что не учувствует в задаче по перемещению заданного окна на передний план.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
12.04.2021, 20:47  [ТС]
Могу только так уменьшить, потому что нам нужно увидеть уменьшение окна без отладки как я показывал в видео а просто по консоли как вы присылали файл.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
HWND g_HWND=NULL;
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam){
    DWORD lpdwProcessId;
    GetWindowThreadProcessId(hWnd,&lpdwProcessId);
    if(lpdwProcessId==lParam){g_HWND=hWnd;return 0;}
    return 1;
}
//в main
char*put="C:\\Program Files\\Mozilla Firefox\\firefox.exe";
STARTUPINFOA start_info={sizeof start_info};
PROCESS_INFORMATION proc_info={0};
CreateProcessA(put,0,0,0,0,0,0,0,&start_info,&proc_info);
 
Sleep(10000);//для того чтобы приложение загрузилось нормально нужно пока оставить
EnumWindows(EnumWindowsProc,proc_info.dwProcessId);//окно придётся находить
 
char gh;
cin>>gh;cout<<"gh "<<gh<<endl;//если убрать эту строку то мы не увидим маленько окно перемещённое на передний план
//т.к. программа отработает очень быстро или таймер нужен
cout<<SetWindowPos(g_HWND,HWND_TOPMOST,400,400,400,400,SWP_SHOWWINDOW)<<endl;
TerminateProcess(proc_info.hProcess,ExitCode);
CloseHandle(proc_info.hProcess);
0
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
12.04.2021, 20:50
Цитата Сообщение от Nexi99 Посмотреть сообщение
Могу только так уменьшить, потому что нам нужно увидеть уменьшение окна без отладки как я показывал в видео а просто по консоли как вы присылали файл.
Какое уменьшение ? Какая у вас задача ?? Я так понял, у вас не работает или работает через раз выведения окна на передний план, ну так напишите код только для этой задачи! Чтобы протестировать и найти ошибку.
Че вы этот CreateProcess и прочее туда запихнули. Найдите сначала ошибку, а потом делайте свою основную первоначальную задачу.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
12.04.2021, 21:19  [ТС]
Цитата Сообщение от Optimus11 Посмотреть сообщение
Какое уменьшение ? Какая у вас задача ?? Я так понял, у вас не работает или работает через раз выведения окна на передний план, ну так напишите код только для этой задачи! Чтобы протестировать и найти ошибку.
Че вы этот CreateProcess и прочее туда запихнули. Найдите сначала ошибку, а потом делайте свою основную первоначальную задачу.
Я сделал мне нужно запустить процесс, по PID найти его окно и выставить на передний план, так что всё что нужно я написал оно так и должно быть, не ну понятное дело если бы это корректно работало я имею в виду функции то я бы впмхнул бы нормальный навороченный код, на данный момент нужно так сделать как написано а функция SetWindowPos у меня глючит я в видео показывал как коряво ворд открывало.
0
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
12.04.2021, 21:33
Цитата Сообщение от Nexi99 Посмотреть сообщение
Я сделал мне нужно запустить процесс, по PID найти его окно и выставить на передний план, так что всё что нужно я написал оно так и должно быть, не ну понятное дело если бы это корректно работало я имею в виду функции то я бы впмхнул бы нормальный навороченный код, на данный момент нужно так сделать как написано а функция SetWindowPos у меня глючит я в видео показывал как коряво ворд открывало.
Да капец! Выставление на передний план происходит в любом случае по HWND, сделай себе отдельную функцию, которая будет принимать только HWND и перемещать твое окно на передний план, че ты этот код постоянно вставляешь, на кой черт этот PID нужен, на кой черт этот запуск процесса нужен, если ты не можешь вывести свое любимое окно на передний план, как тебе надо.

Напиши функцию!

Добавлено через 7 минут
Цитата Сообщение от Optimus11 Посмотреть сообщение
Напиши функцию!
И учти нюанс: при вызове функции SetWindowPos с флагом HWND_TOPMOST - окну добавляется стиль WS_EX_TOPMOST. Окно с этим стилем, ты как обычный пользователь потом никаким другим окном не перекроешь, поэтому сразу после вызова SetWindowPos с флагом HWND_TOPMOST у этого окна нужно убрать стиль WS_EX_TOPMOST, только если тебе не нужно, чтобы оно висело потсоянно на переднем плане.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
12.04.2021, 21:37  [ТС]
Цитата Сообщение от Optimus11 Посмотреть сообщение
Да капец! Выставление на передний план происходит в любом случае по HWND, сделай себе отдельную функцию, которая будет принимать только HWND и перемещать твое окно на передний план, че ты этот код постоянно вставляешь, на кой черт этот PID нужен, на кой черт этот запуск процесса нужен, если ты не можешь вывести свое любимое окно на передний план, как тебе надо.
Напиши функцию!
Ну простой примитив. CreateProcessA запускает процесс. proc_info.dwProcessId хранит PID нужного окна. EnumWindows находит окно потому что доступа к окнам нет т.к. они не регистрируются, их поиск осуществляется путём перебора, EnumWindowsProc используется в последней. Т.к. программа закроется я пока делаю задержку char gh;
cin>>gh;cout<<"gh "<<gh<<endl;
. Далее вызываю SetWindowPos в cout чтобы как вы просили увидеть что возвращает функция но там всегда истина(1). Ну а дальше закрытие это минимальный примитивный код который ляжет в дальнейшую задачу и конечно будет модифицирован(на данном этапе писать нечего), что в нём не так?

Добавлено через 3 минуты
Цитата Сообщение от Optimus11 Посмотреть сообщение
только если тебе не нужно, чтобы оно висело потсоянно на переднем плане
ну да я заметил что иногда залипает но это не суть.
0
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
12.04.2021, 21:40
Цитата Сообщение от Nexi99 Посмотреть сообщение
Ну простой примитив. CreateProcessA запускает процесс. proc_info.dwProcessId хранит PID нужного окна. EnumWindows находит окно потому что доступа к окнам нет т.к. они не регистрируются, их поиск осуществляется путём перебора,
Сделай отдельно функцию, которая будет принимать только std::vector<HWND>my_vector_HWND по ссылке и заполнять его нужными HWND.

После этого, вызови в цикле функцию My_func_SetWindowsPos написанную с учетом всех замечаний в этой теме:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
int my_GET_HWND()
{
...
}
 
int My_func_SetWindowsPos()
{
...
}
 
 
 
 
int main()
{
 
 
std::vector<HWND>my_vector_HWND
my_GET_HWND(my_vector_HWND);
 
 
 
 
int status;
 
for(int i=0; i<my_vector_HWND.size();i++)
{
 
status = My_func_SetWindowsPos;
 
if(status !=0)
{
std::cout<<"Выводишь код ошибки"<<std::endl;
}
 
}
 
}
Или можешь делать любым тебе удобным способом.
0
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
12.04.2021, 22:12  [ТС]
Цитата Сообщение от Optimus11 Посмотреть сообщение
Сделай отдельно функцию, которая будет принимать только std::vector<HWND>my_vector_HWND по ссылке и заполнять его нужными HWND.
Тут хотябы с одним числом разобраться куда тут ему сувать массивы с данными. Вот- Код ошибки 0. Никогда ошибок не было по моему опыту но всё же послушал вас.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
HWND g_HWND=NULL;
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam){
    DWORD lpdwProcessId;
    GetWindowThreadProcessId(hWnd,&lpdwProcessId);
    if(lpdwProcessId==lParam){g_HWND=hWnd;return 0;}
    return 1;
}
 
//в main
char*put="C:\\Program Files\\Mozilla Firefox\\firefox.exe";
STARTUPINFOA start_info={sizeof start_info};
PROCESS_INFORMATION proc_info={0};
CreateProcessA(put,0,0,0,0,0,0,0,&start_info,&proc_info);
 Sleep(10000);//для того чтобы приложение загрузилось нормально нужно пока оставить
EnumWindows(EnumWindowsProc,proc_info.dwProcessId);//окно придётся находить
 
SetWindowPos(g_HWND,HWND_TOPMOST,400,400,400,400,SWP_SHOWWINDOW);//cout<<<<endl;
DWORD qq_=GetLastError();
char gh;
cin>>gh;cout<<"gh "<<gh<<" код ошибки "<<qq_<<endl;//если убрать эту строку то мы не увидим маленько окно перемещённое на передний план
//т.к. программа отработает очень быстро или таймер нужен
DWORD ExitCode=0;
GetExitCodeProcess(proc_info.hProcess,&ExitCode);
TerminateProcess(proc_info.hProcess,ExitCode);
CloseHandle(proc_info.hProcess);
Добавлено через 2 минуты
Проверил 5 раз.Как работает функция до сих пор не понятно.
0
 Аватар для KAMyHuCT
1 / 1 / 0
Регистрация: 13.04.2021
Сообщений: 17
13.04.2021, 12:55
Чтобы cделать, что ты хатиш нужно прогой Spy / WinSpy
выяснить какие флаги имеет окно которое нужно двинут.
Снимаешь, ставишь, назад.

Установка / снятие:
C++
1
2
3
4
5
6
7
8
9
10
11
12
/* Снятие */
SetWindowLong(hWnd,
GWL_STYLE,
GetWindowLong(hWnd,GWL_STYLE) &
~WS_EX_TOPMOST);
 
/* Установка */
SetWindowLong(
hWnd,
GWL_STYLE,
GetWindowLong(hWnd,GWL_STYLE) |
WS_EX_TOPMOST);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.04.2021, 12:55

Как переключить фокус на другую открытую форму?
Открыто 2 формы. Надо из одной переключить фокус на другую. Пробовал разные варианты: DoCmd.SelectObject acForm, 'Заказы' ...

Как переключить текущее окно в полноэкранный режим?
Возможно ли переключить текущее окно в полноэкранный режим? Интересует аналог window.open(...,'fullscreen=yes'), но без перехода на...

Получить фокус ввода с клавитуры при наведении указателя на основное окно программы
Здравствуйте, у меня приложение, одно окно - QGraphicsView, со свойствами: this-&gt;setWindowFlags(Qt::WindowStaysOnTopHint |...

Перевести фокус в нужное поле
Всем привет! Застрял стаким вопросом. Есть форма. По нажатию submit проверяется правильность заполнения формы и если какое-либо поле...

Как перейти в нужное открытое окно?
Имеется массив с параметрами, считанный из Excel Технология их дальнейшего использования следующая: 1. Нужно перейти в ранее открытое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru