Как стать автором
Обновить

Комментарии 22

Уважаемые минусующие! Огромная просьба аргументировать минусы и сделать небольшую скидку для человека написавшего первый пост.
Коэффициент бесполезности ещё одного куска GUI кода без комментариев на WinAPI в 2012 году достигает единицы.
Извеняюсь, с работы прийду все откомментирую. Просто не хотелось статью в очередной hello world превращать
Не хотите хелло-ворлд — так уберите 80% boilerplate и оставьте саму суть.
А что такое этот — boilerplate?

А про то что убрать часть — это же win api, убери строчку и черт ногу сломит где что.

Boilerplate — шаблонный и неинтеренсый в контексте данной статьи код.

WindowProc(), TextOut(), InvalidateRect() не имеют никакого отношения к теме. Если хотите выложить весь код — выложите на гитхаб или ещё куда-то.
Ну без них ведь статья будет неполная и программа будет непонятна начинающим. Сухой и непонятной документации по winapi и в msdn хватает
Я например все понял и так, полезная статья. Автор создает 2 приложения и передает из одного в другое данные используя функцию SendMessage. Поиск дескриптора окна осуществляется через функцию FindWindow…
Спасибо, я рад что Вам понравился мой пример
Этого нет в формулировке задания.
Вычисляет(в многопоточном режиме(не удивляетесь, это было одним из пунктов задания))

Что здесь происходит? Я правильно понимаю, что во-первых, результаты функции FindFirstFile не используются, а во-вторых, вы делаете проверку на наличие одного приложения, а запускаете другое?
hFile = FindFirstFile(«Application B.exe», &FindFileData);
WinExec(«App B.exe», 1);
FindClose(hFile);

Нет единого стиля форматирования кода и именования переменных.

Магические числа. Здесь же непонятно, зачем вам нужна структура и набор переменных с такими же именами как в структуре.
char a1[100];
char razn[100];
char colvo[100];
Вот это по существу! Вечером проработаю этот момент, спасибо.
Еще раз слезно прошу — не минусовать за малое кол-во комментариев. Вечером исправлю, а если минус за что то другое — то аргументировать
Ну нафига ещё один hello world?! Кому надо тот сам Петцольда пускай читает, книжка грамотная, я с неё когда-то изучение C начинал.

По существу:
1. WinExec — гавно. Используйте CreateProcess.
2. Передача параметра через хэндл? Не интересно. Memory-mapped file( msdn.microsoft.com/en-us/library/ms810613.aspx ), задоно и с мьютексом бы разобрались и поняли как и для чего он используется.
3. Ну ладно, у вас передача параметров происходит не часто. А если понадобятся частые вычисления в потоках, что тогда? Каждый раз будете создавать поток, а не жирно ли?
Почитайте про пул потоков: если мне не изменяет память то у Рихтера на эту тему есть хороший код, посмотрите его книгу по Win32. Или же www.codeproject.com/Articles/11976/Win32-Thread-Pool
Но Рихтер лучше.

Как итог: почитайте дядьку Рихтера и переделайте код согласно его рекамендациям.
Рихтер при работе с WinAPI в принципе обязателен к прочтению.

А в пункте 2 можно было бы заменить на именованные каналы, тогда хоть по сети команды/данные гоняй msdn.microsoft.com/en-us/library/aa365590%28VS.85%29.aspx
Да, можно, Вы правы. :)
К сожалению со временем что-то забывается.
Когда нужно добавить в hello world пару функций, отправляют обычно даже не в msdn, а в гугл, где уже есть ну ОЧЕНЬ много примеров IPC. Хорошо бы если бы вы написали какой-нибудь гайд о действительно редких функциях, но вы взяли одну из самых обычных замусоленных тем (причём осветили один маленький аспект её. Где пайпы? Где общая память? Сокеты? Синхронизация?), и представляете её как будто у вас единственный мануал на эту тему. Чёрт побери, насчёт IPC даже в самом msdn примеры есть… Не говоря уже обо всяких CodeProject…
Ну раз n-ое количество людей добавили в избранное и некоторым была интересна это статья — я все же считаю, что не зря написал её(хоть и не особо раскрыл тему)
Инь янь красивые
ну хоть что то
Не много отредактировал и откомментировал код.
Как-то не очень улучшилось.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации