Страница: 1 |
Здарова всем, кто читает! Ну и всем остальным тоже... Как всегда у меня тут накопилось непонятностей и как всегда я с ними мучаюсь не первый день, поэтому как всегда буду дико рад, если кто сможет помочь. Проблемы такие: 1. Я недавно уже задавал вопрос насчёт хука на подключение, но меня убедили, что этого сделать нельзя. Так вот я подумал на эту тему ещё раз и решил, что если уж не хук, то хотя бы и не таймер, а? Раздражает он меня. Так вот есть идея, но осуществить я её не смог: Вообще подключение к инету отмечается в реестре (если кто может не знал), соответственно задача сводится к определению момента, когда значение изменится. Можно таймером (см. выше), а можно ведь и RegNotifyChangeKeyValue. Проблема в том, чтоб научится ею пользоваться. У меня валялся пример по её использованию, но там был недостаток - остановка программы до момента изменения значения. Но, имхо, можно и не останавливать - ведь последний параметр, кажись отвечает именно за это. А предпоследний это, видимо, типа указатель на процедуру события. Как я ни выёживался функция возвращает 6 (Неверный дескриптор). Точнее я сначала попробовал на C++ Builder'е, а потом, когда там не получилось, обломался и на VB6. Есть ещё вариант с созданием отдельного потока, следящего за реестром, но: 1) Это крутой изврат. Переборка двигателя через выхлопную трубу. 2) Проги тяжело отлаживать. У меня есть пример с созданием потоков, так в нём пошаговая отладка почти всегда оканчивается глюком. Так вот я и хотел спросить: как пользоваться этой функцией? 2. Не так давно совершил ещё одну попытку изучить дополнительный язык и после некоторых мучений остановился на Borland С++ Builder 6.0. Всё-таки он больше похож на VB по удобности, чем Visual C++. Если кто считает иначе - давайте спорить. Может в процессе спора я что-нибудь пойму. Но сейчас дело не в этом. Проблема в использовании функций из библиотеки wininet.dll. Он постоянно пишет ошибку: [Linker Error] Unresolved external 'InternetGetConnectedStateEx' referenced from E:\PERSONAL'S DOCUMENTS\ДЛЯ МОИХ ДОКУМЕНТОВ\BISNESS\C++\BUILDER\ОРГАНАЙЗЕР\HEAD.OBJ Пробовал загружать библиотеку из-под кода (явно или как это называется?). Делал так: typedef (WINAPI *M)(unsigned long*,char*,unsigned long,unsigned long); M Inet=0; HMODULE hm = LoadLibrary ("wininet.dll"); // Загружаю Inet=(M)GetProcAddress(hm, "InternetGetConnectedStateExA"); // Беру указатель на функцию FreeLibrary (hm); // выгружаю unsigned long Flags,Err;String Name; Err=Inet(&Flags,Name.c_str(),512,0); // Пытаюсь использовать В результате этих манипуляций выходит ошибка типа Access Violation Address. Во время отладки в CPU окне, вместо команд сплошные вопросики. Типа в памяти по этому адересу ничего похожего нет. Пробовал использовать таким образом другие функции (MessageBeep, MessageBoxA) - всё пашет. Причем во время отладки смотрю на значения hm и Inet и они не равны NULL, баг проявляется только во время использования. Если кто знает в чём дело - отзовитесь, пожалуйста. Совсем я замучался с этим С++. Если у кого есть исходник с использованием этой функции на Сишных языках пните мне его на neco777@rambler.ru. Я думал уже валить на библию (типа лежала, испортилась - надо ось переставлять), но на VB ведь всё тип-топ... 3. Начал работать с MSComm и естественно захотел сделать звонилку. Точнее дозванивалку до инета. Ну и естественно застрял. На аутентификации. Подскажите, что надо переслать сервачному модему после того как от него приходит GW2.GUW1>> Я отсылал ppp, но потом он начинает слать мне какую-то фигню типа: ~я}#А!}!e} }8}"}&} }*} } }#}$А#}%}&P‡"K}'}"}(}"Яb~ ~я}#А!}!f} }8}"}&} }*} } }#}$А#}%}&P‡"K}'}"}(}"•р~ ~я}#А!}!g} }8}"}&} }*} } }#}$А#}%}&P‡"K}'}"}(}"\y~ И отключается. Что надо делать, как это самому определить - понятия не имею... 4. Обращение к форумлянам, задумывавшим как-то раз сделать прогу типа Teleport'а. Мне кажется или такие проекты всегда загибаются на стадии проектирования? Как вообще коллективно писать проги общаясь дистанционно? Это вообще возможно? Или может я ошибаюсь и вам всё же удалось написать эту прогу? Можно тогда её получить, ведь в теме говорилось, что она будет FreeWare?
1. По-ходу, это я у тебя отбил желание отслеживать, так что я и продолжу отбивать 2. Я оспорю, что продукт от борланда лучше чем VC, основываясь на собственном опыте (Я год учился программить на борланде в институте) я не скажу что это более простой язык... там все (ну или почти все) делается через задницу, ты попробуй хотя бы создать на нем dll... Ну как? Понравилось? Половину всего руками набивать? Вот и мне не очень! Конечно же там так же предлагается формачка, на которой вполне можно размещать компоненты, там не нужно знать АПИ, но оно того не стоит... Если изучать С, то VC... От борланда если что и изучать стоит, так это Делфи(язык домохозяек) и Java Builder(для создания кросплатформенных приложений - удобно)... 3. Вот те самые строчки, непонятные, это есть некие IP адреса, из списка которых ты как-то должен выбрать один... Обычно выбирается первый... То же самое мсожно увидеть, если в свойствах соединения поставить галочку "Вкл. терминал" Там так же спросят логин, пароль, и пойдут строчки... Обычно после десятой, тебя выкидывает с ошибкой сценария... 4. А у меня где-то валялась прога на ВБ, подобная телепорту... Зачем писать то что уже есть ? > Обращение к форумлянам, задумывавшим как-то раз сделать прогу типа Teleport'а. Мне кажется или такие проекты всегда загибаются на стадии проектирования? Как вообще коллективно писать проги общаясь дистанционно? Это вообще возможно? Или может я ошибаюсь и вам всё же удалось написать эту прогу? Можно тогда её получить, ведь в теме говорилось, что она будет FreeWare? Я решил писать один, летом. Коллективно надо писать проги с большим количеством возможностей, не объединяемых в рамках одной модели. Общаясь дистанционно, вполне можно написать программы, примером служит хотя бы Линукс. Получить можно будет ближе к сентябрю > А у меня где-то валялась прога на ВБ, подобная телепорту... Зачем писать то что уже есть ? Для подобных программ главное не их наличие, а их качество. Качество существующих программ неудовлетворительное. Если найдешь, пришли мне ее, плиз. >Отслеживать действительно можно, но! ты уверен, что значение изменяется, а ты уверен что значение изменяется во всех версиях Windows ??? Например в 2к/ХР/2к3 все происходит на голом АПИ, и никакой реестр тут не поможет... Вообще советуется забыть слово реестр... (я вот недавно понял, что для своих небольших прог, реестр Windows - Must Die) Не уверен-то я не уверен и даже точно знаю, что при коннекте двух компов по TCP (когда вроде бы должно что-то просекаться) в реестре ни хрена не отражается. Но ведь надо же как-то из положения выходить. Я знаю АПИшку InternetGetConnectedState(Ex), но она не избавляет от необходимости использовать таймер. В общем я решил сделать так. Сделать дополнительный экзешник DopThread.exe. В нём будет стоять RegNotify, а потом (для верности) АПИшка. После прожёвывания RegNotify (а это значит, что что-то изменилось) проверяемся ConnectedState'ом и кидаем основной проге сообщение через DDE или SendMessage. Может, конечно, когда-нибудь и объединю это в одной проге (поток создам), но для начала и так сойдёт. >2. Я оспорю, что продукт от борланда лучше чем VC, основываясь на собственном опыте (Я год учился программить на борланде в институте) я не скажу что это более простой язык... там все (ну или почти все) делается через задницу, ты попробуй хотя бы создать на нем dll... Ну как? Понравилось? Половину всего руками набива ть? Вот и мне не очень! Конечно же там так же предлагается формачка, на которой вполне можно размещать компоненты, там не нужно знать АПИ, но оно того не стоит... Если изучать С, то VC... От борланда если что и изучать стоит, так это Делфи(язык домохозяек) и Java Builder(для создания кросплатформенных приложений - удобно)... Насчёт DLL: пробовал. Вполне нормально. Вот тут на форуме обсуждали на VC создание библии - вот люди мучались, как я посмотрел. А на билдере я и обычную и ActiveX библии делал без особых проблем. Единственное "но" - делал я их только в качестве пробы - пока в них нет необходимости. Насчёт ненужно знать АПИ, я тоже не просёк. Может ты про делфи говоришь? В билдере работают все куски кода (отдельные функции), взятые из исходников VC. Я даже и инфу читаю, не обращая особого внимания на то, какой С++ конкретно обсуждается в этой литре. Всё работает. Единственное чего я не могу (пока) переносить в VC++, так это непонятной системы связывания объектов на форме с кодом. Я не смог обработать клик на лэйбле. Да что там - даже шрифт на нём крупнее и то не могу сделать. Делал по инструкции step-by-step "хелло ворлд!", так там, как назло, не обращались к свойствам и использовали события только кнопок. А консольные приложения я вполне могу писать и на VC (с тем же успехом, что и на билдере) - проблема в MFS. >3. Вот те самые строчки, непонятные, это есть некие IP адреса, из списка которых ты как-то должен выбрать один... Обычно выбирается первый... То же самое мсожно увидеть, если в свойствах соединения поставить галочку "Вкл. терминал" Там так же спросят логин, пароль, и пойдут строчки... Обычно после десятой, тебя выкидывает с ошибкой сценария... "как-то" - это как? Может он в байтах передаётся? А включение терминала я делал. И журнал смотрел. И колесо пинал. Даже прову письмо отослал - чтоб помог. По ходу там не особо продвинутый сидит. Сказал что теперь тебе надо ромадить всю архитектуру PPP-соединения, а сам он таким делом никогда не занимался. А может и наоборот - слишком заумный... >4. А у меня где-то валялась прога на ВБ, подобная телепорту... Зачем писать то что уже есть ? .... Это всё моё - родное. И полянка, и лесок. В поле - каждый колосок ... 8) Своё, имхо, всегда лучше, по той простой причине, что если в чужой проге тебе, что-то не нравится, то единственный вариант - искать другую. Или мириться. А когда сам, это типа "пусть лучше мир прогнётся под нас"... >Я решил писать один, летом. Коллективно надо писать проги с большим количеством возможностей, не объединяемых в рамках одной модели. Общаясь дистанционно, вполне можно написать программы, примером служит хотя бы Линукс. Получить можно будет ближе к сентябрю Вот что значит планирование! Уже на полгода вперёд всё продумал. 8) Но всё-таки толпой писать надо попробовать. Это, имхо, улучшает стиль. Как минимум. И вообще, надо учиться работать коллективно - в одиночку винду не написать. Или Билл её один написал? Самую первую всмысле? 1. Уж лучше на том же Билдере создать дллку (для многопоточности)... На мой взгляд создавать для такой цели отдельно exe файл - это жирновато... 2. Ну лично мне таковой опыт написания библиотек (на C++ Builder) совсем не понравился, и я пошел писать на VC... И написал... правда только на второй день 3. Я тут сам хило разбираюсь, но могу тебе сказать, что таким образом выходили под "неожиданным" для провайдера IP, на урезанный интернет, платя 3 руб./час, в инет полный... но вот месяц назад такую фишку просекли, и нета нас лишили 4. Про то что есть уже таковой пример, я к тому что зачем писать "с нуля", если можно взять и "подсмотреть"? И время и силы съэкономишь... > Вот тут на форуме обсуждали на VC создание библии - вот люди мучались, как я посмотрел. Мучились только потому, что VC добавляет к именам функций информацию об аргументах. Надо юзать DEF-файл и все проблемы. А на Builder все и вправду делалось через ****. > А когда сам, это типа "пусть лучше мир прогнётся под нас" А куда ему деваться? > Вот что значит планирование! Уже на полгода вперёд всё продумал. Да, мы такие. Это мы умеем > Это, имхо, улучшает стиль В точности наоборот. У каждого бм опытного программиста свой индивидуальный стиль программирования, переучиваться на новый никто не станет, поэтому результатом будет являться программа, в которой разные куски будут написаны абсолютно по разному. И хорошо, если это будет работать. Большие программы, написанные группой, напоминают цыганскую шаль - посмотрите хотя бы сырцы Линукса. > Или Билл её один написал? Самую первую всмысле? Нет, ему помогало уже довольно большое количество программистов, но основную часть - он с Алленом. Не надо думать, что Билли только деньги считать умеет, посмотрите хотя бы "Пираты силиконовой долины", увидите, что в свое время он был мегаспец. Написать интерпретатор, который заменил ОС, в машинных кодах не каждому дано. > А вот с работой в коллективе - возникают проблеммы, у кого-то дела, не может, кто-то забыл, кто-то с кем-то спорит, и поскольку человек по своей природе эгоистичен, то бывает что люди не могут договориться кому делать "пересекающиеся темы"... Большие проблемы не делаются без лидера (технического координатора). Он расписывает архитектуру приложения, классовую иерархию, интерфейсы компонентов, а потом распределяет роли сперва по желанию, потом по распоряжению с учетом умений и способностей программистов в команде. Страница: 1 |
Вопрос: Опять пучок...
Добавлено: 25.04.04 19:02
Автор вопроса:
Neco | Web-сайт:
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа: sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 25.04.04 22:24
Отслеживать действительно можно, но! ты уверен, что значение изменяется, а ты уверен что значение изменяется во всех версиях Windows ??? Например в 2к/ХР/2к3 все происходит на голом АПИ, и никакой реестр тут не поможет... Вообще советуется забыть слово реестр... (я вот недавно понял, что для своих небольших прог, реестр Windows - Must Die)
Номер ответа: 2
Автор ответа: Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 26.04.04 22:37
Номер ответа: 3
Автор ответа: Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #3
Добавлено: 27.04.04 00:17
Номер ответа: 4
Автор ответа: sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 27.04.04 01:21
На счет АПИ - это я про различные эллементы управления, если на VC, сидишь и радоснтно тыкаешься в АПИ, то у борланда прям выбирай - нехочу... и с ними проще работать... В этом смысле Bilder выигрывает, в плане удобства, ЭУ там и больше и удобней обращаться...
А вот с работой в коллективе - возникают проблеммы, у кого-то дела, не может, кто-то забыл, кто-то с кем-то спорит, и поскольку человек по своей природе эгоистичен, то бывает что люди не могут договориться кому делать "пересекающиеся темы"... Такие неутишительные выводы сделаны мной (возможно поспешно), пока мне поручили создать интеррактивный курс по физике, я набрал бригаду, но в итоге ничего так и не смогли закончить... Судя по всему опять все все оставят на последний момент...
Так что если что-то коллективно сделать и можно, то это должны быть жудкие энтузиасты ))
PS
Кроме той АПИ, лично я знаю еще не менее двух-трех способов определения соединения (но все они по таймеру)
Номер ответа: 5
Автор ответа: Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #5
Добавлено: 27.04.04 12:56