Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Toller
0 / 0 / 0
Регистрация: 18.06.2009
Сообщений: 171
#1

ShellExecute - манипулирование окном программы. Как сделать? - C++

05.08.2011, 14:25. Просмотров 1581. Ответов 5
Метки нет (Все метки)

Я в своей программе использую ShellExecute - API-шую функцию, которая открывает файл программой, сопоставленной с этим расширением файла. Например, 123.txt она открывает его с помощью notepad.exe, и т.д. Создается окно. Вопрос в том, как получить его hwnd, чтобы манипулировать им?

Конечно, можно перебрать все окна, но это решение мне представляется ненадежным и длинным. Можно ли это сделать каким-то простым способом?

Зараанее всем балагодарен за ответ.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2011, 14:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ShellExecute - манипулирование окном программы. Как сделать? (C++):

Как передать параметры через ShellExecute - C++ - C++
Приветствую Как передать строку и число через ShellExecute? SHELLEXECUTEINFO ShExecInfo = { 0 }; ShExecInfo.cbSize =...

Как открыть определенный файл через shellexecute? - C++
Вот код программы ,которую надо подкоректировать. case 0:ShellExecute(NULL, "open", "mspaint.exe", NULL, NULL,...

Как передать HWND параметром через ShellExecute? - C++
Приветствую. Как передать HWND параметром через ShellExexute? Передаю так: HANDLE updater_hwnd = hwnd; std::ostringstream...

Как сделать, чтобы при запуске программы, пользователь выбирал как будет вводить значения - C++
Как сделать, чтобы при запуске программы, пользователь выбирал как будет вводится значения. Например: "Ввод с клавиатуры нажмите 6,...

Как принять параметры приложением, запущенным через ShellExecute - C++
Приветствую Как принять параметры приложением, запущенным через ShellExecute. Т.е. приложение №1 запускает программу №2 и передает...

Как сделать сворачивание программы - C++
как сделать что бы при сворачивании программы выполнялся код TrayIcon1->Visible =True; Form1->Hide(); ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Корешок
0 / 0 / 0
Регистрация: 04.08.2011
Сообщений: 6
07.08.2011, 21:30 #2
HWND hWnd=FindWindow(NULL,'Заголовок окна');


The FindWindow function retrieves the handle to the top-level window whose class name and window name match the specified strings. This function does not search child windows.

HWND FindWindow(

LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);


Parameters

lpClassName

Points to a null-terminated string that specifies the class name or is an atom that identifies the class-name string. If this parameter is an atom, it must be a global atom created by a previous call to the GlobalAddAtom function. The atom, a 16-bit value, must be placed in the low-order word of lpClassName; the high-order word must be zero.

lpWindowName

Points to a null-terminated string that specifies the window name (the window's title). If this parameter is NULL, all window names match.



Return Values

If the function succeeds, the return value is the handle to the window that has the specified class name and window name.
If the function fails, the return value is NULL. To get extended error information, call GetLastError.
0
John Paramol
Сообщений: n/a
09.08.2011, 07:55 #3
Cтоит ли надеяться, что все проги будут создавать окна?
Или Вас интересует только Notepad?
John Paramol
Сообщений: n/a
11.08.2011, 17:31 #4
создаете процесс не ShellExecute, а CreateProcess, получаете его
дескриптор, потом перебираете все существующие окна на предмет
HINSTANCE, находите нужные.
А перед этим ищете в реестре файловые ассоциации.
Это только предположение, я такого не делал.
Но, повторюсь, не каждая программа будет создавать окна,
к тому же, ко времени перечисления окно может быть еще не создано,
а может быть, что приложение MDI и при повторном запуске оно передает
указания своей запущеной копии, а само завершается.
Мало ли еще каких замутов, может приложение вообще не захочет
запускать ваш файл.

Можно поинтересоваться, какую цель вы здесь преследуете?
pup2002
0 / 0 / 0
Регистрация: 10.04.2011
Сообщений: 4
29.08.2011, 01:15 #5
По дескриптору процеса можно узнать дескриптор главного окна. Кажется в книге Джеффри РИХТЕРА это описано.
0
John Paramol
Сообщений: n/a
29.08.2011, 05:14 #6
Блестящая мысль.
Так о чем же я тут толковал? (чуть выше)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2011, 05:14
Привет! Вот еще темы с ответами:

Как заставить объекты масштабироваться вместе с окном? - C++
Итак, дорогие мастера кодинга на с++, совсем ламерский вопрос: Как заставить объекты, например sTabSheet масштабироваться вместе с...

Как правильно сделать самообновление программы? - C++
Добрый день Есть программа которая должна обновляться Для ясности: Файл программы старой версии - PROGRAM_NAME Файл программы...

как сделать результат программы картинкой - C++
помогите пожалуйста!!!! подскажите как результат программы который выводится на экран после запускания программы сохранить ввиде картинки...

Как сделать оригинальные окна программы на с++? - C++
Здравствуйте. Подскажите в какую сторону копать. Нужно сделать оригинальные окна программы. То есть не стандартные Windows окошки, а свои....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.08.2011, 05:14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru